AttributeError:“Embedding”对象没有TensorFlow后端的“get\u shape”属性

2024-10-01 13:43:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解嵌入层是如何与掩蔽一起工作的(对于序列到序列的回归)。在

此简单代码失败,错误为:AttributeError: 'Embedding' object has no attribute 'get_shape'。这似乎是真的,但我不知道怎么解决它。有什么提示吗?在

import numpy as np
from keras.layers import Input, Dense, LSTM
from keras.layers.embeddings import Embedding
from keras.layers.merge import Concatenate
from keras.models import Model
from keras.utils import plot_model

trainExs = np.asarray([ [1, 2, 3], [2, 3, 1]])
trainLabels = np.asarray([[1, 1, 1], [2, 2, 2]])

print('Examples, shape:', trainExs.shape)
print('Labels, shape:', trainLabels.shape)

W = [[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]]
symDim = 3

# E M B E D D I N G S
# symbol_in = Input(shape=(None, 1), dtype='float32', name='symbol_input')
symbol_emb = Embedding(symDim+1, symDim,
                       weights=np.asarray(W), trainable=False, input_length=3)

symbol_dense = Dense(symDim, use_bias=True, name='symbol_dense')(symbol_emb)

output_layer = Dense(symDim, dtype='float32', name='output')(symbol_dense)

# M O D E L
model = Model(inputs=[symbol_emb], outputs=[output_layer])
model.compile(loss='mean_squared_error', optimizer='RMSprop', metrics=['accuracy'])
# print(model.summary())

完整堆栈跟踪如下:

^{pr2}$

Tags: namefromimportmodellayersnpembeddingsymbol
1条回答
网友
1楼 · 发布于 2024-10-01 13:43:48

您将symbol_emb作为输入输入输入到模型中,但是symbol_emb是嵌入层的名称,不是有效的输入。定义输入,例如:

input = Input(shape=input_shape)
symbol_emb = Embedding(symDim+1, symDim,
                       weights=np.asarray(W), trainable=False)(input)

...
...

model = Model(inputs=[input], outputs=[output_layer])

注意,您不需要用这种方式在Embedding中定义input_length。在

相关问题 更多 >