python - 分割层输出时,Keras 抛出 `' Tensor' object has no attribute '_keras_shape'`

标签 python tensorflow keras word-embedding sentence-similarity

我有一个句子对维度 2*1*300 的句子嵌入输出 X。我想将此输出拆分为两个形状为 1*300 的向量,以计算其绝对差值和乘积。

x = MaxPooling2D(pool_size=(1,MAX_SEQUENCE_LENGTH),strides=(1,1))(x)
x_A = Reshape((1,EMBEDDING_DIM))(x[:,0])
x_B = Reshape((1,EMBEDDING_DIM))(x[:,1])

diff = keras.layers.Subtract()([x_A, x_B])
prod = keras.layers.Multiply()([x_A, x_B])


nn = keras.layers.Concatenate()([diff, prod])

目前,当我执行 x[:,0] 时,它会抛出一条错误消息,提示 AttributeError: 'Tensor' object has no attribute '_keras_shape'。我假设张量对象的 split 结果是一个没有 _keras_shape 的张量对象。

有人可以帮我解决这个问题吗?谢谢。

最佳答案

Keras 在分层处理时向张量添加一些信息。由于您将张量拆分到外层,因此它会丢失该信息。

解决方案涉及从 Lambda 层返回拆分张量:

x_A = Lambda(lambda x: x[:,0], output_shape=notNecessaryWithTensorflow)(x)
x_B = Lambda(lambda x: x[:,1], output_shape=notNecessaryWithTensorflow)(x)
x_A = Reshape((1,EMBEDDING_DIM))(x_A)
x_B = Reshape((1,EMBEDDING_DIM))(x_B)

关于python - 分割层输出时,Keras 抛出 `' Tensor' object has no attribute '_keras_shape'`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47616588/

相关文章:

python - 转换为 numpy 后如何 reshape pandas 系列?

python - QTreeView 中的超链接

machine-learning - TimeDistributed(Dense) 与 Keras 中的 Dense - 相同数量的参数

tensorflow - 使用编码器-解码器 CNN 进行语义分割

python - Keras - 大型图像和蒙版数据集生成器

python - 在 TensorFlow 中使用 CNN 进行信号处理。类型错误 : DataType float32 for attr 'Tlabels' not in list of allowed values: int32, int64

Python 斐波那契生成器

tensorflow - 使用 tensorflow 识别乐高积木?

python - Keras 中的自定义加权损失函数,用于对每个元素进行加权

Tensorflow 2.0 : Optimizer. 最小化 ('Adam' 对象没有属性 'minimize' )