You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:15:05