无法在TensorFlow中转换部分转换的张量

Bla*_*cho 17 python tensorflow

TensorFlow中有许多方法需要指定形状,例如truncated_normal:

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
Run Code Online (Sandbox Code Playgroud)

我有一个占位符用于输入形状[无,784],其中第一个维度为无,因为批量大小可能会有所不同.我可以使用固定批量大小,但它仍然与测试/验证集大小不同.

我无法将此占位符提供给tf.truncated_normal,因为它需要完全指定的张量形状.让tf.truncated_normal接受不同张量形状的简单方法是什么?

Dan*_*ter 21

您只需将其作为单个示例提供,但采用批量形状.这意味着为形状添加额外的尺寸,例如

batch_size = 32 # set this to the actual size of your batch
tf.truncated_normal((batch_size, 784), mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
Run Code Online (Sandbox Code Playgroud)

这样它就会"适合"占位符.

如果您希望batch_size更改,您还可以使用:

tf.truncated_normal(tf.shape(input_tensor), mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
Run Code Online (Sandbox Code Playgroud)

input_tensor可以是占位符,或者只是张量会增加噪声.

  • 我没有看到你的编辑,它工作正常.我不知道tf.shape() (2认同)