gpt4 book ai didi

tensorflow - 可变大小的 tensorflow 常数

转载 作者:行者123 更新时间:2023-12-03 22:59:45 27 4
gpt4 key购买 nike

我的批次大小是可变的,所以我的所有输入都是以下形式

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

最佳答案

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)


作为 Yaroslav mentions in his comment,您也许还可以使用 (NumPy-style) broadcasting避免实例化具有动态形状的张量。例如,如果 input具有形状 (None, 32),而 t具有形状 (1, 32),则计算 tf.mul(input, t)将在第一维上广播 t以匹配 input的形状。

关于tensorflow - 可变大小的 tensorflow 常数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35853483/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com