私はケアで演算を実装しています。これは、theanoとtensorflowバックエンドの両方で動作するようになっています。操作の入力があると仮定します。tensorflow theano.tensor.set_subtensor相当の
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]], dtype=int64)
その出力は次のようになります。
array([[ 0, 1, 2, 3, 4, 5],
[ 3, 4, 5, 0, 1, 2],
[ 6, 7, 8, 9, 10, 11],
[ 9, 10, 11, 6, 7, 8]], dtype=int64)
私のコードは次のとおりです。私はtheanoことによってそれを成功裏に実施している
from keras import backend as K
def pairreshape(x,target_dim,input_shape):
x1, x2 = x[0::2,], x[1::2,]
x1_concate = K.concatenate((x1,x2), axis=target_dim)
x2_concate = K.concatenate((x2,x1), axis=target_dim)
if K.image_dim_ordering() == 'th':
import theano.tensor as T
x_new = T.repeat(x,2,axis=target_dim)
x_new = T.set_subtensor(x_new[0::2], x1_concate)
x_new = T.set_subtensor(x_new[1::2], x2_concate)
elif K.image_dim_ordering() == 'tf':
import tensorflow as tf
repeats = [1] * len(input_shape)
repeats[target_dim] = 2
x_new = tf.tile(x, repeats)
x_new[0::2] = x1_concate #TypeError: 'Tensor' object does not support item assignment
x_new[1::2] = x2_concate #TypeError: 'Tensor' object does not support item assignment
が、私はテンソルをテンソルフローで割り当てる方法を理解できません。テンソルフローのテンソル割り当ての最後の2行はエラーを報告します。テンソルフローにT.set_subtensorの等価性がありますか?または操作のより良い実装をお勧めしますか?ありがとう。
こんにちはヤロスラフ。ご回答有難うございます。私は私の質問ではっきりしていないと思います。入力xは、深いニューラルネットワークのトレーニングサンプルであり、私が知っている限り、それはテンソルとして表現されるべきです。それで解決策はありますか?ありがとう。 –
Tensorsは読み取り専用なので、 'set_subtensor'を実行する唯一の方法は、最初に変数にコピーしてから、その変数を変更することです。 –
' tensor_copy.assign(tensor) 'を実行して、あなたの 'set_subtensor'アナログの前にこれが実行されるように依存関係を制御してください –