[d2l] Section9.7

发布于 2023-08-02  208 次阅读


Problem

在运行一下代码时,会报此错误:

too many values to unpack (expected 2)

embed_size, num_hiddens, num_layers, dropout = 32, 32, 2, 0.1
batch_size, num_steps = 64, 10
lr, num_epochs, device = 0.005, 300, d2l.try_gpu()

train_iter, src_vocab, tgt_vocab = d2l.load_data_nmt(batch_size, num_steps)
encoder = Seq2SeqEncoder(len(src_vocab), embed_size, num_hiddens, num_layers,
                        dropout)
decoder = Seq2SeqDecoder(len(tgt_vocab), embed_size, num_hiddens, num_layers,
                        dropout)
net = d2l.EncoderDecoder(encoder, decoder)
train_seq2seq(net, train_iter, lr, num_epochs, tgt_vocab, device)

原因:d2l.torch里,EncoderDecoder的返回值只返回了一个值,使得yhat, 有一个没有获得赋值。

解决办法:删掉d2l.torch的EncoderDecoder中返回值的[0],或者去掉, _