在张量流中为可变大小的输入提供卷积神经网络

时间:2016-06-03 14:04:48

标签: tensorflow

我正在尝试使用feed_dict参数将具有不同大小的2d numpy数组列表传递给卷积神经网络。

x = tf.placeholder(tf.float32, [batch_size, None, None, None]) y = tf.placeholder(tf.float32, [batch_size, 1]) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost) optimizer.run(feed_dict={x: batch[0], y: batch[1], keep_prob: 0.5})

我收到以下错误:

ValueError: setting an array element with a sequence.

我知道批处理[0]必须包含大小相同的数组。 我试图找到一种方法来使用可变大小的批量数组来应用优化,但是所有建议的解决方案都要求调整数组的大小,这在我的情况下是不可能的,因为这些数组不是图像并且包含具有不同大小的DNA片段(任何修改)在数组的任何元素上都会导致丢失重要信息)

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

提供的矩阵需要跨行和列具有一致的大小。一行或一列的大小不能与其他行大小不同。

Matrix #1    Matrix #2
  1 2 3       1 2 3
  None        4 5 6
  None        7 8 9

没有任何操作可以在Matrix#1上运行,这基本上就是你所拥有的。如果您想要提供可变大小的矩阵(matices中的大小不同,但行和列的大小不同)this  可以解决你的问题

  

参数数量:

     

形状:要进给的张量的形状(可选)。如果形状是     未指定,您可以提供任何形状的张量。

或者如果您正在寻找稀疏张量(tf.sparse_placeholder() - 未定义的元素设置为零),this question可能有帮助。