Tensorflow 连接特征和-形状错误

Tensorflow 连接特征和-形状错误,tensorflow,keras,tensor,Tensorflow,Keras,Tensor,我在Keras中有一个模型,我想明确地让神经网络看到几个特征的总和。我试着这样做: sum_input_p=Lambda(sumFunc)(input_p) d_输入=keras.layers.concatenate( [input\u p,cont\u cond,sum\u input\u p,one\u hot\u cond\u 1,one\u hot\u cond\u 2],轴=-1) 在哪里 def sumFunc(x): return K.reshape(K.sum(x), [

我在Keras中有一个模型,我想明确地让神经网络看到几个特征的总和。我试着这样做:

sum_input_p=Lambda(sumFunc)(input_p)
d_输入=keras.layers.concatenate(
[input\u p,cont\u cond,sum\u input\u p,one\u hot\u cond\u 1,one\u hot\u cond\u 2],轴=-1)
在哪里

def sumFunc(x):
   return K.reshape(K.sum(x), [1])
但我有一个错误:

ValueError:
连接
层需要具有匹配形状的输入 除了concat轴。获取输入形状:[(无,267),(无, 1) ,(1),(无,4),(无,2)]


这是因为
sumFunc
中的
重塑
步骤吗?我怎样才能正确地重塑它,使它能够与神经网络中的其他特征连接起来?

这是因为
K.sum()
K.restrape()
实际上并不需要)

所有其他张量(
input\u p
cont\u cond
,等等)仍然包含我假设的批处理样本(即,它们的形状是
(批处理大小,数量特征)
,而
batch\u大小=None
,因为它仅在图形运行时定义)。因此,您可能希望
sum\u input\u p
具有一个形状
(批次大小,1)
,即计算输入张量
x
的所有维度的总和,第一个维度除外(对应于批次大小)

导入keras
将keras.backend作为K导入
从keras.layers导入输入,Lambda
将numpy作为np导入
def sumFunc(x):
x_轴=np.arange(0,len(x.get_shape().as_list())
# ... 或者简单地说x_轴=[0,1],因为x的形状是已知的
y=K.sum(x,轴=x_轴[1:])#形状的y(批量大小,)
y=K。展开形状的尺寸(y,-1)#y(批次尺寸,1)
返回y
输入=输入(形状=(267,))
和输入p=Lambda(sumFunc)(输入p)
打印(总和输入)
#>张量(“lambda_1/ExpandDims:0”,形状=(?,1),数据类型=float32)
d_input=keras.layers.concatenate([input_p,sum_input_p],axis=-1)
打印(d_输入)
#>张量(“concatenate_1/concat:0”,shape=(?,268),dtype=float32)

这是因为
K.sum()
K.reformate()
实际上也不需要)

所有其他张量(
input\u p
cont\u cond
,等等)仍然包含我假设的批处理样本(即,它们的形状是
(批处理大小,数量特征)
,而
batch\u大小=None
,因为它仅在图形运行时定义)。因此,您可能希望
sum\u input\u p
具有一个形状
(批次大小,1)
,即计算输入张量
x
的所有维度的总和,第一个维度除外(对应于批次大小)

导入keras
将keras.backend作为K导入
从keras.layers导入输入,Lambda
将numpy作为np导入
def sumFunc(x):
x_轴=np.arange(0,len(x.get_shape().as_list())
# ... 或者简单地说x_轴=[0,1],因为x的形状是已知的
y=K.sum(x,轴=x_轴[1:])#形状的y(批量大小,)
y=K。展开形状的尺寸(y,-1)#y(批次尺寸,1)
返回y
输入=输入(形状=(267,))
和输入p=Lambda(sumFunc)(输入p)
打印(总和输入)
#>张量(“lambda_1/ExpandDims:0”,形状=(?,1),数据类型=float32)
d_input=keras.layers.concatenate([input_p,sum_input_p],axis=-1)
打印(d_输入)
#>张量(“concatenate_1/concat:0”,shape=(?,268),dtype=float32)

所以我的错误是,我对整个批次进行了求和。谢谢你的解决方案,它很有效!所以我的错误是,我对整批货物进行了合计。谢谢你的解决方案,它很有效!