TypeError Traceback (most recent call last) Cell In[103], line 1 ----> 1 train_iter, src_vocab, tgt_vocab = load_data_nmt(batch_size=2, num_steps=8) 2 for X, X_valid_len, Y, Y_valid_len in train_iter: 3 print('X:', X.type(torch.int32)) Cell In[102], line 5, in load_data_nmt(batch_size, num_steps, num_examples) 3 """返回翻译数据集的迭代器和词表""" 4 text = preprocess_nmt(read_data_nmt()) ----> 5 source, target = tokenize_nmt(text, num_examples) 6 src_vocab = d2l.Vocab(source, min_freq=2, 7 reserved_tokens=['<pad>', '<bos>', '<eos>']) 8 tgt_vocab = d2l.Vocab(target, min_freq=2, 9 reserved_tokens=['<pad>', '<bos>', '<eos>']) Cell In[98], line 11, in tokenize_nmt(lines, token) 9 return [list(line) for line in lines] 10 else: ---> 11 print('错误:未知词元类型:'+ token) TypeError: can only concatenate str (not "int") to str
时间: 2024-03-01 21:54:34 浏览: 131
dict-recursive-update:一个执行递归更新的Python模块处理2个字典
5星 · 资源好评率100%
这个错误信息提示了一个字符串拼接错误:TypeError: can only concatenate str (not "int") to str。这个错误通常是因为试图将字符串和整数进行拼接操作,而这是不被允许的。在这个例子中,错误出现在tokenize_nmt函数中的print语句,你试图将字符串和变量token的值进行拼接,而这个变量的类型是整数。你可以将print语句修改为如下代码来解决这个问题:
```python
print('错误:未知词元类型:{}'.format(token))
```
这样就可以将变量token的值插入到字符串中,而不需要进行拼接操作。
阅读全文