Python Tensorflow图像序列到序列
我想构建tensorflow,它基本上是图中的seq2seq模型。就像典型的语言模型一样,只是图像必须通过CNN转换为图像嵌入 问题是,当我读取形状的图像张量序列[seq_length,batch,w,h,c]时,我想用我的编码器(例如AlexNet)对每个张量进行编码。(我打开这个张量,得到大小为seq_长度的张量列表) 我尝试使用tf.while\u循环来迭代张量列表,但如果在tf.while\u循环中使用切片,则梯度计算似乎不起作用。有一些讨论 有没有办法在张量列表上循环并用可学习网络对每个张量([b,w,h,c])进行编码?我尝试了几种方法,但梯度计算似乎是错误的。我认为必须有一个简单的方法来做到这一点,但我只是新的Tensorflow,任何帮助或例子将不胜感激 我尝试的while循环方法:Python Tensorflow图像序列到序列,python,tensorflow,deep-learning,Python,Tensorflow,Deep Learning,我想构建tensorflow,它基本上是图中的seq2seq模型。就像典型的语言模型一样,只是图像必须通过CNN转换为图像嵌入 问题是,当我读取形状的图像张量序列[seq_length,batch,w,h,c]时,我想用我的编码器(例如AlexNet)对每个张量进行编码。(我打开这个张量,得到大小为seq_长度的张量列表) 我尝试使用tf.while\u循环来迭代张量列表,但如果在tf.while\u循环中使用切片,则梯度计算似乎不起作用。有一些讨论 有没有办法在张量列表上循环并用可学习网络对每
input_array = tensor_array_ops.TensorArray(
dtype=tf.float32, size=sequence_length,
dynamic_size=False, infer_shape=True)
encoded_array = tensor_array_ops.TensorArray(
dtype=tf.float32, size=sequence_length,
dynamic_size=False, infer_shape=True)
decoded_array = tensor_array_ops.TensorArray(
dtype=tf.float32, size=sequence_length,
dynamic_size=False, infer_shape=True)
input_array = input_array.unpack(inputT)
def encoder_body(index, inputs, outputs):
x = inputs.read(index)
outputs = outputs.write(index, encoder(x, phase_train))
return index + 1, inputs, outputs
def decoder_body(index, inputs, outputs):
x = inputs.read(index)
outputs = outputs.write(index, decoder(x, phase_train, batch_size))
return index + 1, inputs, outputs
_, _, encoded_array = tf.while_loop(lambda i, j, k: i<sequence_length,
encoder_body, (tf.constant(0), input_array, encoded_array))
_, _, decoded_array = tf.while_loop(lambda i, j, k: i<sequence_length,
decoder_body, (tf.constant(0), encoded_array, decoded_array))
input\u array=tensor\u array\u ops.TensorArray(
dtype=tf.float32,size=sequence\u length,
动态大小=假,推断形状=真)
编码的数组=张量数组(
dtype=tf.float32,size=sequence\u length,
动态大小=假,推断形状=真)
解码数组=张量数组(
dtype=tf.float32,size=sequence\u length,
动态大小=假,推断形状=真)
输入数组=输入数组。解包(输入)
def编码器_主体(索引、输入、输出):
x=输入。读取(索引)
输出=输出。写入(索引、编码器(x、相位_序列))
返回索引+1,输入,输出
def解码器_主体(索引、输入、输出):
x=输入。读取(索引)
输出=输出。写入(索引、解码器(x、相位序列、批量大小))
返回索引+1,输入,输出
_,编码数组=tf。while_loop(lambda i,j,k:i你找到这个问题的答案了吗?