其他分享
首页 > 其他分享> > 分割层输出时,Keras抛出`’Tensor’对象没有属性’_keras_shape’`

分割层输出时,Keras抛出`’Tensor’对象没有属性’_keras_shape’`

作者:互联网

我有一个尺寸为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’对象没有属性’_keras_shape’.我假设张量对象分裂的结果是没有_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)

标签:word-embedding,python,tensorflow,keras,sentence-similarity
来源: https://codeday.me/bug/20191011/1894685.html