gpt4 book ai didi

python - 如何将稀疏张量传递到 TF 2.0 中的密集层?

转载 作者:行者123 更新时间:2023-12-01 00:16:49 25 4
gpt4 key购买 nike

我使用的是 TF 2.0。

工作:

from tensorflow.keras import layers

inputs = layers.Input(shape=(256,), sparse=False, name='name_sparse')
x = layers.Dense(32, name="my_layer")(inputs)
print(x)

输出:Tensor("my_layer/Identity:0", shape=(None, 32), dtype=float32)

不工作:

如果我在上面的代码中将稀疏更改为True,输出将更改为:

ValueError:应定义 Dense 输入的最后一个维度。没有找到。

如何将稀疏张量传递到 TF2.0 中的密集层。在TF1.14中运行良好。

最佳答案

发生这种情况是因为当输入张量稀疏时,该张量的形状计算为(None,None)而不是(256,)

inputs = layers.Input(shape=(256,), sparse=True, name='name_sparse')
print(inputs.shape)
# output: (?, ?)

这似乎也是一个开放的issue
一种解决方案是编写自定义图层子类Layer类(引用this)。

作为解决方法(在 tf-gpu 2.0.0 上测试),在输入层中添加批量大小效果很好:

from tensorflow.keras import layers
inputs = layers.Input(shape=(256,), sparse=True, name='name_sparse', batch_size=32)
print(inputs.shape) # (32, 256)
x = layers.Dense(32, name="my_layer")(inputs)
print(x) # Tensor("my_layer_10/BiasAdd:0", shape=(32, 32), dtype=float32)

关于python - 如何将稀疏张量传递到 TF 2.0 中的密集层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59278120/

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