吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1608|回复: 21
收起左侧

[求助] 深度网络训练过程的可视化问题

[复制链接]
轮回过客 发表于 2022-5-3 16:24
本帖最后由 轮回过客 于 2022-5-3 16:28 编辑

各位大大好,我现在在学习用hiddenlayer可视化神经网络的训练过程(辛苦各位大大了,您指出哪里错了,给您发一个1000吾爱币的悬赏可以吗?)
现在的问题是跟着这个专栏做出来的图像是这样的(专栏地址https://zhuanlan.zhihu.com/p/220403674)

报错是这样的
但正常的出来的图像应该是这样的

下面那个绿色的东西是什么?
辛苦大佬解答一下了
下面是源码
[Python] 纯文本查看 复制代码
 import hiddenlayer as hl
 import time
 ​
 # 记录训练过程的指标
 history = hl.History()
 # 使用canvas进行可视化
 canvas = hl.Canvas()
 ​
 # 获取优化器和损失函数
 optimizer = torch.optim.Adam(MyConvNet.parameters(), lr=3e-4)
 loss_func = nn.CrossEntropyLoss()
 log_step_interval = 100      # 记录的步数间隔
 ​
 for epoch in range(5):
     print("epoch:", epoch)
     # 每一轮都遍历一遍数据加载器
     for step, (x, y) in enumerate(train_loader):
         # 前向计算->计算损失函数->(从损失函数)反向传播->更新网络
         predict = MyConvNet(x)
         loss = loss_func(predict, y)
         optimizer.zero_grad()   # 清空梯度(可以不写)
         loss.backward()     # 反向传播计算梯度
         optimizer.step()    # 更新网络
         global_iter_num = epoch * len(train_loader) + step + 1  # 计算当前是从训练开始时的第几步(全局迭代次数)
         if global_iter_num % log_step_interval == 0:
             # 控制台输出一下
             print("global_step:{}, loss:{:.2}".format(global_iter_num, loss.item()))
             # 在测试集上预测并计算正确率
             test_predict = MyConvNet(test_data_x)
             _, predict_idx = torch.max(test_predict, 1)  # 计算softmax后的最大值的索引,即预测结果
             acc = accuracy_score(test_data_y, predict_idx)
 ​
             # 以epoch和step为索引,创建日志字典
             history.log((epoch, step),
                         train_loss=loss,
                         test_acc=acc,
                         hidden_weight=MyConvNet.fc[2].weight)
 ​
             # 可视化
             with canvas:
                 canvas.draw_plot(history["train_loss"])
                 canvas.draw_plot(history["test_acc"])
                 canvas.draw_image(history["hidden_weight"])

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 轮回过客 发表于 2022-5-3 16:34
本帖最后由 轮回过客 于 2022-5-3 16:37 编辑

有没有学习过深度神经网络这方面的大佬啊,现在的主要问题就是为什么我做出来的显示只有一个绿色的块,并且专栏当做说的控制台是怎么控制hiddenlayer显示不同时刻的训练状态的,这些都不太清楚
云在天 发表于 2022-5-3 16:39
先确定你的网络真的建立好了吗?损失函数计算是否有问题
云在天 发表于 2022-5-3 16:42
 楼主| 轮回过客 发表于 2022-5-3 16:56
云在天 发表于 2022-5-3 16:42
顺带一提,可视化用visualizer不更好一点吗?

网络确定都建立好了,之前的网络结构可视化都做出来了,就是这块用hiddenlayer显示训练过程可视化时候的结果出了问题
老师是只让用hiddenlayer进行训练过程的可视化,
损失函数的计算不是
optimizer = torch.optim.Adam(MyConvNet.parameters(), lr=3e-4)
loss_func = nn.CrossEntropyLoss()
这两行吗?还是说这两行要改一下呢?
感谢大佬回复

点评

你最好输出一下loss和accurate的值  详情 回复 发表于 2022-5-3 17:22
云在天 发表于 2022-5-3 17:22
轮回过客 发表于 2022-5-3 16:56
网络确定都建立好了,之前的网络结构可视化都做出来了,就是这块用hiddenlayer显示训练过程可视化时候的 ...

你最好输出一下loss和accurate的值

免费评分

参与人数 1吾爱币 +1 收起 理由
轮回过客 + 1 谢谢@Thanks!

查看全部评分

sam喵喵 发表于 2022-5-3 18:08
看源码文件名估计原作者使用matplotlib后端做的
解决方案也比较简单,在Pycharm中禁用Python科学绘图窗口(然后它将使用默认的matplotlib后端)就可以(ctrl+V)

File > Settings > Tools > Python > show plots in tool window

免费评分

参与人数 1热心值 +1 收起 理由
轮回过客 + 1 谢谢@Thanks!

查看全部评分

 楼主| 轮回过客 发表于 2022-5-3 19:58
云在天 发表于 2022-5-3 17:22
你最好输出一下loss和accurate的值

额,还是不太懂,您可以说的具体一点吗,怎么更改这两个的值呢?这块相关的知识没找见
 楼主| 轮回过客 发表于 2022-5-3 20:13
本帖最后由 轮回过客 于 2022-5-3 20:15 编辑
sam喵喵 发表于 2022-5-3 18:08
看源码文件名估计原作者使用matplotlib后端做的
解决方案也比较简单,在Pycharm中禁用Python科学绘图窗口 ...

额,大佬按您说的出来图像了,怎么暂停截图呢?还有程序上还有一些问题,下面的acc=acc_uracyscore这里不知道怎么定义

这个acc=acc_uracyscore前后文联系不起来,看不太懂什么意思
焚心的小丑 发表于 2022-5-3 20:43
略懂,帮你看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表