Я реализую операцию в keras, так что она может работать как на основе anano, так и на endorflow. Предположу, что на входе операции:tensorflow anano.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)
Моих кодов являются следующим:
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
Я успешно реализовал его Теан, но Я не могу понять, как назначить тензор тензорным потоком. Последние две строки тензорного назначения в тензорном потоке сообщают об ошибке. Существует ли эквивалентность T.set_subtensor в тензорном потоке? или можете ли вы, пожалуйста, рекомендовать более эффективную реализацию операции? Благодарю.
Привет, Ярослав. Спасибо за Ваш ответ. Я боюсь, что я не понимаю в своем вопросе. Входные данные x являются обучающими образцами в глубокой нейронной сети, и, насколько я знаю, он должен быть представлен как тензор. Так есть ли решение для этого? Благодарю. –
Поскольку тензоры доступны только для чтения, единственный способ сделать «set_subtensor» - сначала скопировать его в переменную, а затем модифицировать эту переменную –
, вы можете сделать 'tensor_copy.assign (тензор)' сделать копию и добавить чтобы убедиться, что это выполняется перед вашим аналогом 'set_subtensor' –