我有一个形状为(None, 8)的Keras层,我想在张量的末尾添加一个单一的标量(值为1)。但是我没有成功。
这是我的代码(简化版):
print(layers)# Tensor("feature_layer_2_89/Relu:0", shape=(?, 8), dtype=float32)pad_tensor = tf.constant([1.0])concat = concatenate([layers, pad_tensor])
我得到了以下错误:
ValueError: A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got inputs shapes: [(None, 8), (1,)]
编辑:基本上我想在向量末尾添加一个标量(值为1)。例如,给定一个向量(一维张量)[1 3 3 0 2]
,如何生成[1 3 3 0 2 1]
,我不想干扰这里的批次大小None
。
回答:
你可以按照@Psidom建议的那样创建pad_tensor
,使其具有二维。首先我们需要按如下方式获取batch_size
:
batch_size = tf.shape(layers)[0]padding_tensor = tf.ones([batch_size, 1])
现在我们可以使用concatenate
函数来连接这两个张量:
concat = concatenate([layers, padding_tensor])