如何解决PyTorch代码中NameError: name 'inp_en_idx' is not defined错误?
解决PyTorch代码中的NameError问题
问题代码
import torch import torch.nn as nn lstm = nn.LSTM(input_size=300, hidden_size=256, num_layers=2) attn = nn.Linear(256, 10) fc = nn.Linear(10 * 2, 300) input_en = torch.tensor(inp_en_idx) hidden = lstm(input_en)[0] attn_weights = attn(hidden[-1]) context = attn_weights.softmax(dim=1).unsqueeze(1).expand_as(hidden) context = context * hidden context = context.sum(dim=1) out = fc(context)
报错信息
NameError Traceback (most recent call last) <ipython-input-2-d484f124dd49> in <cell line: 7>() 5 fc = nn.Linear(10 * 2, 300) 6 ----> 7 input_en = torch.tensor(inp_en_idx) 8 hidden = lstm(input_en)[0] 9 attn_weights = attn(hidden[-1]) NameError: name 'inp_en_idx' is not defined
解决方案
这个错误的核心是变量inp_en_idx未定义,代码尝试将其转为张量时找不到该变量,解决方法如下:
定义符合模型输入要求的
inp_en_idx变量
根据你的LSTM配置(input_size=300),输入张量需要满足LSTM默认的输入格式:(seq_len, batch_size, input_size)。你可以根据需求生成测试数据或加载真实预处理后的文本索引数据:# 示例:生成测试用随机输入(序列长度10,批量大小2,特征维度300) inp_en_idx = torch.randn(10, 2, 300)如果是真实翻译任务,需要先完成文本预处理:将英文句子转换为索引序列,再调整为符合上述形状的张量。
检查变量名拼写
确认代码中所有引用该变量的地方名称一致,避免因拼写错误导致的未定义问题。
另外,额外提醒:后续运行时需注意张量的维度匹配,比如attn层的输出与hidden张量的维度是否兼容,避免出现维度不匹配的报错。
内容的提问来源于stack exchange,提问作者Heena
相关产品推荐
相关产品推荐

