【问题标题】:How to create a tensor with an unknown dimension如何创建一个未知维度的张量
【发布时间】:2019-08-15 16:00:18
【问题描述】:

我的神经网络中有一个层,其输出向量 x 的大小为 [?, N]。 (批量大小的第一个维度)。我想在下一层(Lambda 层)中声明一个相同大小的 ones 张量。我看到我不能使用y = keras.backend.ones(x.shape),因为批量大小仅在运行时可用。如何创建这个张量?

【问题讨论】:

  • 你试过backend.ones_like(x)吗?
  • @today 我试过了,效果很好。谢谢

标签: python tensorflow keras tensor


【解决方案1】:

正如今天在 cmets 中所建议的,K.ones_like 有效:

from keras import backend as K
a = K.placeholder(shape=(None, 5))
b = K.ones_like(a)
print(b.shape)

>> TensorShape([Dimension(None), Dimension(5)])

根据您正在执行的操作类型,您还可以制作一个形状为 [N] 的张量并依靠广播来节省内存:

from keras import backend as K
a = K.placeholder(shape=(None, 5))
b = K.ones(a.shape[-1])
print(a + b)

>> <tf.Tensor 'add:0' shape=(?, 5) dtype=float32>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 1970-01-01
    • 2020-06-09
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多