Transformer4keras icon indicating copy to clipboard operation
Transformer4keras copied to clipboard

训练输入问题请教

Open Fayeben opened this issue 3 years ago • 1 comments

作者您好: 我在使用该模型时:输入为(bs, seq_length), 然后用Embedding为(bs, seq_length,64),然后输入Transformer,报错了请问一下原因: 我的模型如下: def transformer(bs,time_steps, alphabet_size): model = Sequential() model.add(Embedding(alphabet_size, 64, input_length=64)) model.add(Transformer(num_layers=2,vocab_size=alphabet_size,heads=8,model_dim=64, drop_rate=0.2,units_dim=512,epsilon=0.001)) model.add(Dense(alphabet_size, activation='softmax')) return model 报错如下: ValueError: Dimensions must be equal, but are 64 and 8 for 'transformer/encoder/encoder_layer_1/add' (op: 'AddV2') with input shapes: [?,64,64,64,64], [?,64,64,64,64,8,64].

Fayeben avatar May 24 '21 12:05 Fayeben

您好,首先使用Transformer时不需要自己添加Embedding,还有您使用的可能不是我代码中的Embedding模块? 另外根据错误来看,可能是由于您自己添加了Embedding导致的,Encoder的第一层接收的输入实际上是由Embedding得到的一个矩阵,如果您自己添加Embedding则可能会导致向Encoder输入一个它无法处理的维度,建议您尝试按照ReadMe中的第二个样例的模型结构进行搭建看看是否还有问题

einQimiaozi avatar May 30 '21 11:05 einQimiaozi