pytorch中网络和损失函数可视化的示例分析
发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,小编给大家分享一下pytorch中网络和损失函数可视化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.效果2.
千家信息网最后更新 2024年11月29日pytorch中网络和损失函数可视化的示例分析
小编给大家分享一下pytorch中网络和损失函数可视化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1.效果
2.环境
1.pytorch
2.visdom
3.python3.5
3.用到的代码
# coding:utf8import torchfrom torch import nn, optim # nn 神经网络模块 optim优化函数模块from torch.utils.data import DataLoaderfrom torch.autograd import Variablefrom torchvision import transforms, datasetsfrom visdom import Visdom # 可视化处理模块import timeimport numpy as np# 可视化appviz = Visdom()# 超参数BATCH_SIZE = 40LR = 1e-3EPOCH = 2# 判断是否使用gpuUSE_GPU = Trueif USE_GPU: gpu_status = torch.cuda.is_available()else: gpu_status = Falsetransform=transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307,), (0.3081,))])# 数据引入train_dataset = datasets.MNIST('../data', True, transform, download=False)test_dataset = datasets.MNIST('../data', False, transform)train_loader = DataLoader(train_dataset, BATCH_SIZE, True)# 为加快测试,把测试数据从10000缩小到2000test_data = torch.unsqueeze(test_dataset.test_data, 1)[:1500]test_label = test_dataset.test_labels[:1500]# visdom可视化部分数据viz.images(test_data[:100], nrow=10)#viz.images(test_data[:100], nrow=10)# 为防止可视化视窗重叠现象,停顿0.5秒time.sleep(0.5)if gpu_status: test_data = test_data.cuda()test_data = Variable(test_data, volatile=True).float()# 创建线图可视化窗口line = viz.line(np.arange(10))# 创建cnn神经网络class CNN(nn.Module): def __init__(self, in_dim, n_class): super(CNN, self).__init__() self.conv = nn.Sequential( # channel 为信息高度 padding为图片留白 kernel_size 扫描模块size(5x5) nn.Conv2d(in_channels=in_dim, out_channels=16,kernel_size=5,stride=1, padding=2), nn.ReLU(), # 平面缩减 28x28 >> 14*14 nn.MaxPool2d(kernel_size=2), nn.Conv2d(16, 32, 3, 1, 1), nn.ReLU(), # 14x14 >> 7x7 nn.MaxPool2d(2) ) self.fc = nn.Sequential( nn.Linear(32*7*7, 120), nn.Linear(120, n_class) ) def forward(self, x): out = self.conv(x) out = out.view(out.size(0), -1) out = self.fc(out) return outnet = CNN(1,10)if gpu_status : net = net.cuda() #print("#"*26, "使用gpu", "#"*26)else: #print("#" * 26, "使用cpu", "#" * 26) pass# loss、optimizer 函数设置loss_f = nn.CrossEntropyLoss()optimizer = optim.Adam(net.parameters(), lr=LR)# 起始时间设置start_time = time.time()# 可视化所需数据点time_p, tr_acc, ts_acc, loss_p = [], [], [], []# 创建可视化数据视窗text = viz.text("convolution Nueral Network
")for epoch in range(EPOCH): # 由于分批次学习,输出loss为一批平均,需要累积or平均每个batch的loss,acc sum_loss, sum_acc, sum_step = 0., 0., 0. for i, (tx, ty) in enumerate(train_loader, 1): if gpu_status: tx, ty = tx.cuda(), ty.cuda() tx = Variable(tx) ty = Variable(ty) out = net(tx) loss = loss_f(out, ty) #print(tx.size()) #print(ty.size()) #print(out.size()) sum_loss += loss.item()*len(ty) #print(sum_loss) pred_tr = torch.max(out,1)[1] sum_acc += sum(pred_tr==ty).item() sum_step += ty.size(0) # 学习反馈 optimizer.zero_grad() loss.backward() optimizer.step() # 每40个batch可视化一下数据 if i % 40 == 0: if gpu_status: test_data = test_data.cuda() test_out = net(test_data) print(test_out.size()) # 如果用gpu运行out数据为cuda格式需要.cpu()转化为cpu数据 在进行比较 pred_ts = torch.max(test_out, 1)[1].cpu().data.squeeze() print(pred_ts.size()) rightnum = pred_ts.eq(test_label.view_as(pred_ts)).sum().item() #rightnum =sum(pred_tr==ty).item() # sum_acc += sum(pred_tr==ty).item() acc = rightnum/float(test_label.size(0)) print("epoch: [{}/{}] | Loss: {:.4f} | TR_acc: {:.4f} | TS_acc: {:.4f} | Time: {:.1f}".format(epoch+1, EPOCH, sum_loss/(sum_step), sum_acc/(sum_step), acc, time.time()-start_time)) # 可视化部分 time_p.append(time.time()-start_time) tr_acc.append(sum_acc/sum_step) ts_acc.append(acc) loss_p.append(sum_loss/sum_step) viz.line(X=np.column_stack((np.array(time_p), np.array(time_p), np.array(time_p))), Y=np.column_stack((np.array(loss_p), np.array(tr_acc), np.array(ts_acc))), win=line, opts=dict(legend=["Loss", "TRAIN_acc", "TEST_acc"])) # visdom text 支持html语句 viz.text("epoch:{}
Loss:{:.4f}
" "TRAIN_acc:{:.4f}
TEST_acc:{:.4f}
" "Time:{:.2f}
".format(epoch, sum_loss/sum_step, sum_acc/sum_step, acc, time.time()-start_time), win=text) sum_loss, sum_acc, sum_step = 0., 0., 0.
以上是"pytorch中网络和损失函数可视化的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
可视化
数据
函数
网络
模块
篇文章
学习
损失
示例
分析
内容
神经
神经网络
视窗
部分
测试
不怎么
代码
信息
参数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电信千兆服务器
网络技术学的什么软件
开发部署涉及到哪些网络安全设备
公安部网络安全局举报中心
软件开发可以去外包公司吗
还珠格格下载软件开发
清华大学研究生网络安全
安卓数据库如何搭建
银行卡每个月被网络技术公司扣款
软件开发工程师岗位职责及要求
hp服务器尺寸
java连接数据库的实现
云服务器网速怎么计算
拨号安全服务器在哪卖
机器软件开发
项目管理在软件开发中的地位
软件开发转让增值税
关系数据库和非关系数据库的不同
网络安全知识网上有奖竞答案
服务器存储必须要扩展架吗
规划局网络安全事件应急预案
软件开发游戏方向好么
运转灵活社交软件开发
eds数据库
方舟服务器时间mod
互联网科技公司吉祥物
t320服务器raid
金山区营销软件开发好处
怎么让服务器的cpu变高
哪个图书馆有ieee数据库