Colab中出现NameError: name 'Dict' is not defined错误的解决咨询
解决NameError: name 'Dict' is not defined问题
错误原因
函数参数的类型提示里用到的Dict和List属于Python typing模块的类型注解工具,默认未被导入,所以解释器无法识别这两个名称,触发了NameError。
两种解决方法
方法1:导入typing模块中的对应类型
在代码最顶部添加导入语句,同时别忘了导入绘图依赖的matplotlib库:
from typing import Dict, List import matplotlib.pyplot as plt def loss_metric_curve_plot(model_results:Dict[str,List[float]]): train_loss = model_results["train_loss"] valid_loss = model_results["valid_loss"] train_accuracy = [float(value) for value in model_results["train_accuracy"]] valid_accuracy = [float(value) for value in model_results["valid_accuracy"]] fig,axes = plt.subplots(nrows = 1, ncols = 2, figsize = (10,4)) axes = axes.flat axes[0].plot(train_loss, color = "red", label = "Train") axes[0].plot(valid_loss, color = "blue", label = "Valid") axes[0].set_title("CrossEntropyLoss", fontsize = 12, fontweight = "bold", color = "black") axes[0].set_xlabel("Epochs", fontsize = 10, fontweight = "bold", color = "black") axes[0].set_ylabel("Loss", fontsize = 10, fontweight = "bold", color = "black") axes[0].legend() axes[1].plot(train_accuracy, color = "red", label = "Train") axes[1].plot(valid_accuracy, color = "blue", label = "Valid") axes[1].set_title("Metric of performance: Accuracy", fontsize = 12, fontweight = "bold", color = "black") axes[1].set_xlabel("Epochs", fontsize = 10, fontweight = "bold", color = "black") axes[1].set_ylabel("Score", fontsize = 10, fontweight = "bold", color = "black") axes[1].legend() fig.tight_layout() fig.show()
方法2:使用Python 3.9+内置的类型注解(无需导入)
如果你的Colab环境使用Python 3.9及以上版本,可以直接用内置的dict和list替代Dict和List,省去导入步骤:
import matplotlib.pyplot as plt def loss_metric_curve_plot(model_results:dict[str,list[float]]): train_loss = model_results["train_loss"] valid_loss = model_results["valid_loss"] train_accuracy = [float(value) for value in model_results["train_accuracy"]] valid_accuracy = [float(value) for value in model_results["valid_accuracy"]] fig,axes = plt.subplots(nrows = 1, ncols = 2, figsize = (10,4)) axes = axes.flat axes[0].plot(train_loss, color = "red", label = "Train") axes[0].plot(valid_loss, color = "blue", label = "Valid") axes[0].set_title("CrossEntropyLoss", fontsize = 12, fontweight = "bold", color = "black") axes[0].set_xlabel("Epochs", fontsize = 10, fontweight = "bold", color = "black") axes[0].set_ylabel("Loss", fontsize = 10, fontweight = "bold", color = "black") axes[0].legend() axes[1].plot(train_accuracy, color = "red", label = "Train") axes[1].plot(valid_accuracy, color = "blue", label = "Valid") axes[1].set_title("Metric of performance: Accuracy", fontsize = 12, fontweight = "bold", color = "black") axes[1].set_xlabel("Epochs", fontsize = 10, fontweight = "bold", color = "black") axes[1].set_ylabel("Score", fontsize = 10, fontweight = "bold", color = "black") axes[1].legend() fig.tight_layout() fig.show()
额外提醒
Colab默认已安装matplotlib,但代码必须导入matplotlib.pyplot as plt,否则后续绘图代码会触发新的NameError。
内容的提问来源于stack exchange,提问作者nesly
相关产品推荐
相关产品推荐

