Keras – TypeError: 模型的输出张量必须是Keras张量 – 在建模多输入、多输出网络时

我有一系列九个2000维向量作为两个双向LSTM的输出。我将它们合并以获得九个4000维向量。

我需要获取每个4000维向量,并将它们分别输入到共享的全连接层中。我该如何做?目前我正在重塑合并的输出以输入到共享的全连接层中。但我不知道这是否必要?

当我尝试构建整个网络以接受多个输入并产生多个输出时,如此链接中所述,我遇到了这个错误。

代码可以在这里找到。

# 我们可以将两个向量连接起来:N=3merge_cv = merge([top_out, btm_out], mode='concat')#concat_axis=2 or -1 (last dim axis)cv = Reshape((9,1, 4000))(merge_cv) # 我们希望得到9个每个维度为4000的向量用于下面的sharedfc_out#每个单元格的输出类别数n_classes = 80sharedfc_out= Dense(output_dim=n_classes,input_dim=4000,activation='relu')#部分计数#pc = np.ndarray(shape=(1,n_classes), dtype=float) #cells_pc = np.array([[pc for j in range(N)] for i in range(N)])outpc=[]for i in range(N):    for j in range(N):        # cells_pc[i][j] = sharedfc_out(cv[N*i+j])        outpc.append(sharedfc_out(cv[0][N*i+j]))# out=merge(outpc,mode='concat')# out2=Reshape(720)(out)model = Model(input=cells_in, output=outpc)

双向LSTM输出的维度

>>> merge_cv.shapeTensorShape([Dimension(1), Dimension(None), Dimension(4000)])>>> cv.shapeTensorShape([Dimension(None), Dimension(9), Dimension(1), Dimension(4000)])

对于最后一行,我得到了类型错误。

TypeError                                 Traceback (most recent call last) in ()----> 1 model = Model(input=cells_in, output=outpc)/home/jkl/anaconda3/lib/python3.5/site-packages/keras/engine/topology.py in __init__(self, input, output, name)   1814                 cls_name = self.__class__.__name__   1815                 raise TypeError('Output tensors to a ' + cls_name + ' must be '-> 1816                                 'Keras tensors. Found: ' + str(x))   1817         # Build self.output_layers:   1818         for x in self.outputs:TypeError: Output tensors to a Model must be Keras tensors. Found: Tensor("Relu_9:0", shape=(1, 80), dtype=float32)

回答:

最后发现问题出在错误的列表切片上,这导致将None作为层传递给列表,然后合并成一个输入。修复这个问题并使切片一致后,问题就解决了。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注