我有预测张量(实际网络)
fixD
和y张量
(Pdb) pred
<tf.Tensor 'transpose_1:0' shape=(?, 200, 200) dtype=float32>
我想将其输入
y = tf.placeholder("float", [None, n_steps, n_classes])
(Pdb) y
<tf.Tensor 'Placeholder_1:0' shape=(?, 200, 200) dtype=float32>
但是,它要求尺寸为f.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
所以我想重新塑造[batch_size, num_classes]
和pred
,以便它们看起来像这样
y
但是当我跑<tf.Tensor 'transpose_1:0' shape=(?, 40000) dtype=float32>
时,我得到了
reshape
而不是(Pdb) tf.reshape(pred, [40000])
<tf.Tensor 'Reshape_1:0' shape=(40000,) dtype=float32>
如何维护(?,40000)
尺寸? (批量大小)
我还发布了所有相关代码......
None
答案 0 :(得分:6)
我是雅罗斯拉夫评论中另一个问题的答案之一的作者。您可以使用-1作为None维度。
您可以使用tf.reshape()轻松完成,而无需了解批量大小。
x = tf.placeholder(tf.float32, shape=[None, 9,2])
shape = x.get_shape().as_list() # a list: [None, 9, 2]
dim = numpy.prod(shape[1:]) # dim = prod(9,2) = 18
x2 = tf.reshape(x, [-1, dim]) # -1 means "all"
无论批处理大小在运行时中是什么,最后一行中的-1表示整个列。你可以在tf.reshape()中看到它。