首页 > 解决方案 > Tensorflow 无法计算 Addv2,因为输入 #1(从零开始)应该是双张量,但它是浮点张量 [Op:Addv]

问题描述

错误信息:

tensorflow.python.framework.errors_impl.InvalidArgumentError:无法计算 AddV2,因为输入 #1(从零开始)应该是双张量,但它是浮点张量 [Op:AddV2]

在我的代码中,我创建了一个 tensorflow 分布 MixtureSameFamily 对象并将我的网络的输出用作参数。但是,当我尝试计算一系列值的概率以生成概率密度函数时,我收到此错误。

我的代码:

gm = tfd.MixtureSameFamily(
    mixture_distribution=tfd.Categorical(probs=alphas),
    components_distribution=tfd.Normal(
        loc=mus,
        scale=sigmas
    )
)

x = np.linspace(-2,2,int(1000), dtype=np.double)
print(x.dtype)
pyx = gm.prob(x)

结果print(x.dtype)是“dtype:'float'”

据我所知,tensorflow 不支持文档中的浮点数据类型。

为此,我特别困惑。任何帮助将不胜感激。

标签: pythontensorflowneural-network

解决方案


似乎是最新的 tensorflow-probability 模块中的一个错误。它仅适用于float32.

解决方法

明确地将您的参数转换为float32

gm = tfd.MixtureSameFamily(
    mixture_distribution=tfd.Categorical(probs=alphas.astype('float32')),
    components_distribution=tfd.Normal(
        loc=mus.astype('float32'),
        scale=sigmas.astype('float32')
    )
)

x = np.linspace(-2,2,int(1000), dtype='float32')
pyx = gm.prob(x)

推荐阅读