如何创建一个未知维度的张量
How to create a tensor with an unknown dimension
我的神经网络中有一个层,其输出向量 x
大小为 [?, N]
。 (批量大小的第一个维度)。我想在下一层(Lambda 层)中声明一个相同大小的 ones
张量。我发现我不能使用 y = keras.backend.ones(x.shape)
,因为批量大小仅在运行时可用。我怎样才能创建这个张量?
正如今天在评论中所建议的那样,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>
我的神经网络中有一个层,其输出向量 x
大小为 [?, N]
。 (批量大小的第一个维度)。我想在下一层(Lambda 层)中声明一个相同大小的 ones
张量。我发现我不能使用 y = keras.backend.ones(x.shape)
,因为批量大小仅在运行时可用。我怎样才能创建这个张量?
正如今天在评论中所建议的那样,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>