Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow图像序列到序列_Python_Tensorflow_Deep Learning - Fatal编程技术网

Python Tensorflow图像序列到序列

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循环中使用切片,则梯度计算似乎不起作用。有一些讨论 有没有办法在张量列表上循环并用可学习网络对每

我想构建tensorflow,它基本上是图中的seq2seq模型。就像典型的语言模型一样,只是图像必须通过CNN转换为图像嵌入

问题是,当我读取形状的图像张量序列[seq_length,batch,w,h,c]时,我想用我的编码器(例如AlexNet)对每个张量进行编码。(我打开这个张量,得到大小为seq_长度的张量列表)

我尝试使用tf.while\u循环来迭代张量列表,但如果在tf.while\u循环中使用切片,则梯度计算似乎不起作用。有一些讨论

有没有办法在张量列表上循环并用可学习网络对每个张量([b,w,h,c])进行编码?我尝试了几种方法,但梯度计算似乎是错误的。我认为必须有一个简单的方法来做到这一点,但我只是新的Tensorflow,任何帮助或例子将不胜感激

我尝试的while循环方法:

  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你找到这个问题的答案了吗?