分割层输出时,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