Guan_yiqiang 2024-11-10 20:50 采纳率: 42.9%
浏览 14
已结题

进行mini-batch深度学习时报错

在学习《深度学习入门——基于Python的理论与实现》时,进行mini-batch的实现出现了报错,代码如下

import numpy as np
from dataset.mnist import load_mnist
from two_layer_net import TwoLayerNet
(x_train,t_train),(x_test,t_test)=load_mnist(normalize=True,one_hot_label=True)
train_loss_list=[]
iters_num=10000
train_size=x_train.shape[0]
batch_size=100
learning_rate=0.1
network=TwoLayerNet(input_size=784,hidden_size=50,output_size=10)
for i in range(iters_num):
    #获取mini-batch
    batch_mask=np.random.choice(train_size,batch_size)
    x_batch=x_train[batch_mask]
    t_batch=t_train[batch_mask]
    #计算梯度
    grad=network.numerical_gradient(x_batch,t_batch)
    #更新参数
    for key in ('W1','b1','W2','b2'):
        network.params[key]-=learning_rate*grad[key]
    #记录学习过程
    loss=network.loss(x_batch,t_batch)
    train_loss_list.append(loss)

报错情况如下

img

我已经把书中的源代码下载进了Anaconda所在的文件夹中,之前调用书中的模块都没有出现报错,现在报错了,不知道是什么原因,友友们可以帮忙看一下吗?谢谢!

  • 写回答

1条回答 默认 最新

  • 无疆76 2024-11-10 20:51
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据你提供的报错信息,问题出在 ModuleNotFoundError: No module named 'two_layer_net'。这个错误提示意味着Python无法找到名为 two_layer_net 的模块。可能的原因包括:

    1. 文件路径问题:确保你的Python环境能够找到 two_layer_net 这个模块。如果 TwoLayerNet 类定义在一个文件中,确保这个文件和你在运行代码的当前文件在同一个目录下,或者 two_layer_net 模块所在的路径已经被包含在你的Python环境变量中。你可以通过修改PYTHONPATH环境变量来实现这一点。
    2. 文件名和模块名不匹配:Python模块的名称应该与包含该模块的文件名相匹配(不考虑文件扩展名)。例如,如果 TwoLayerNet 类是在一个名为 two_layer_net.py 的文件中定义的,那么你应该能够直接通过 import two_layer_net 来导入这个模块。但是,如果文件名和模块名不匹配(例如,文件名为 TwoLayerNet.py 但模块名为 two_layer_net),则可能会导致这个问题。确保文件名和模块名一致。
    3. 安装问题:如果你尝试导入的是一个外部库而不是本地文件,可能需要确认是否已经正确安装了这个库。对于这种情况,可以使用 pip install 命令来安装。不过从你描述的信息来看,这个不太可能是问题所在,因为你提到已经下载了书中的源代码。

    针对这个问题,你可以尝试以下解决方案:

    • 确保你的当前工作目录包含 two_layer_net 文件或目录。
    • 检查文件名和模块名是否匹配。
    • 如果以上步骤无法解决问题,尝试在代码中添加完整的路径来导入模块,例如 from /path/to/your/directory/two_layer_net import TwoLayerNet

    希望这些建议能帮助你解决问题!如果还有其他问题,请随时向我询问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月19日
  • 已采纳回答 11月11日
  • 创建了问题 11月10日