我有一个可变的批量大小,所以我的所有输入都是表格
tf.placeholder(tf.float32, shape=(None, ...)
接受可变批量大小.但是,如何使用可变批量大小创建常量值?问题在于这一行:
log_probs = tf.constant(0.0, dtype=tf.float32, shape=[None, 1])
它给了我一个错误:
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
我确信可以用可变批量大小初始化一个恒定张量,我该怎么做?
我也尝试过以下方法:
tf.constant(0.0, dtype=tf.float32, shape=[-1, 1])
我收到此错误:
ValueError: Too many elements provided. Needed at most -1, but received 1
mrr*_*rry 33
A tf.constant()在图形构建时具有固定的大小和值,因此它可能不适合您的应用程序.
如果您尝试为每个元素创建具有动态大小和相同(常量)值的张量,则可以使用tf.fill()和tf.shape()创建适当形状的张量.例如,要创建一个与各处t具有相同形状input和值的张量0.5:
input = tf.placeholder(tf.float32, shape=(None, ...))
# `tf.shape(input)` takes the dynamic shape of `input`.
t = tf.fill(tf.shape(input), 0.5)
正如雅罗斯拉夫在评论中提到的那样,你也可以使用(NumPy式)广播来避免实现具有动态形状的张量.例如,如果input具有形状(None, 32)并t具有形状,(1, 32)则计算tf.mul(input, t)将t在第一维上广播以匹配形状input.
| 归档时间: | 
 | 
| 查看次数: | 10117 次 | 
| 最近记录: |