Tensorflow重塑张量

时间:2016-06-16 20:38:38

标签: python machine-learning neural-network artificial-intelligence tensorflow

我有预测张量(实际网络)

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

1 个答案:

答案 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()中看到它。