2016-11-21 10 views
0

テクスチャ要素(3, 600)を含む(1000)の形状のxという1次元のpythonリストがあります。私はまたwの形状(600, 1)のテンソルフロー変数を持っています。それはxの各テンソル要素に掛けたいと思います。各演算の結果はテンソル形状(3, 1)になります。テンソルの定数変数を持つPythonリストのテンソルの乗算

効率的xの各要素にwを適用する方法はありますか? Pythonのループを用いた論理は次のようになります。

w = [w] * 1000 
result = tf.mul(x, w) 

しかし、私は次のエラーました:

for i in range(1000): 
    x[i] = tf.matmul(x[i], w) 

私はすでに次のことを試してみました

ValueError: Dimensions must be equal, but are 3 and 600 for 'Mul' (op: 'Mul') with input shapes: [1000,3,600], [1000,600,1] 

感謝を!テンソルの第1の軸に沿って機能をマッピングtf.map_fnを用いに

答えて

0

ルック。あなたの場合、xはテンソルの形(1000,3,600)です。最初の淡色がリストであることは重要ではありません。それはちょうどテンソルとして機能します。次のように

tf.map_fn(lambda x_: tf.matmul(x_, W), x)

はまたtf.batch_matmul操作を使用することができます。私は両方が働い×1000の

+0

おかげで、[W] tf.tileの代わりに使用するであろうが

tf.batch_matmul(x, [w] * 1000)

!しかし、 'tf.batch_matmul'はもっと速いようでした。 – Pierre

+0

うん。私はそれが放送するとは思わないが、なんらかの理由で。あなたが最初の淡色をタイルする必要があることの迷惑な種類。 – chasep255

関連する問題