第三章:3.8.1 绘制各层参数分布图 hist

news/2024/12/16 12:51:07/文章来源:https://www.cnblogs.com/excellentHellen/p/18609839

Chapter03/Varying_learning_rate_on_scaled_data.ipynb

绘制 各层参数分布图

# https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch
# https://github.com/PacktPublishing/Modern-Computer-Vision-with-PyTorch###################  Chapter Three ######################################## 第三章  读取数据集并显示
from torch.utils.data import Dataset, DataLoader
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
########################################################################
from torchvision import datasets
import torch
data_folder = '~/data/FMNIST' # This can be any directory you want to
# download FMNIST to
fmnist = datasets.FashionMNIST(data_folder, download=True, train=True)
tr_images = fmnist.data
tr_targets = fmnist.targetsval_fmnist = datasets.FashionMNIST(data_folder, download=True, train=False)
val_images = val_fmnist.data
val_targets = val_fmnist.targets########################################################################
import matplotlib.pyplot as plt
#matplotlib inline
import numpy as np
from torch.utils.data import Dataset, DataLoader
import torch
import torch.nn as nn
device = 'cuda' if torch.cuda.is_available() else 'cpu'########################################################################
class FMNISTDataset(Dataset):def __init__(self, x, y):x = x.float()/255 #归一化x = x.view(-1,28*28)self.x, self.y = x, ydef __getitem__(self, ix):x, y = self.x[ix], self.y[ix]return x.to(device), y.to(device)def __len__(self):return len(self.x)from torch.optim import SGD, Adam
def get_model():model = nn.Sequential(nn.Linear(28 * 28, 1000),nn.ReLU(),nn.Linear(1000, 10)).to(device)loss_fn = nn.CrossEntropyLoss()optimizer = Adam(model.parameters(), lr=1e-2)return model, loss_fn, optimizerdef train_batch(x, y, model, optimizer, loss_fn):model.train()prediction = model(x)batch_loss = loss_fn(prediction, y)batch_loss.backward()optimizer.step()optimizer.zero_grad()return batch_loss.item()def accuracy(x, y, model):model.eval()# this is the same as @torch.no_grad# at the top of function, only difference# being, grad is not computed in the with scope
    with torch.no_grad():prediction = model(x)max_values, argmaxes = prediction.max(-1)is_correct = argmaxes == yreturn is_correct.cpu().numpy().tolist()########################################################################
def get_data():train = FMNISTDataset(tr_images, tr_targets)trn_dl = DataLoader(train, batch_size=32, shuffle=True)#批大小val = FMNISTDataset(val_images, val_targets)val_dl = DataLoader(val, batch_size=len(val_images), shuffle=False)return trn_dl, val_dl
########################################################################
#@torch.no_grad()
def val_loss(x, y, model):with torch.no_grad():prediction = model(x)val_loss = loss_fn(prediction, y)return val_loss.item()########################################################################
trn_dl, val_dl = get_data()
model, loss_fn, optimizer = get_model()########################################################################
train_losses, train_accuracies = [], []
val_losses, val_accuracies = [], []
for epoch in range(10): #轮数 10次print(epoch)train_epoch_losses, train_epoch_accuracies = [], []for ix, batch in enumerate(iter(trn_dl)):x, y = batchbatch_loss = train_batch(x, y, model, optimizer, loss_fn)train_epoch_losses.append(batch_loss)train_epoch_loss = np.array(train_epoch_losses).mean()for ix, batch in enumerate(iter(trn_dl)):x, y = batchis_correct = accuracy(x, y, model)train_epoch_accuracies.extend(is_correct)train_epoch_accuracy = np.mean(train_epoch_accuracies)for ix, batch in enumerate(iter(val_dl)):x, y = batchval_is_correct = accuracy(x, y, model)validation_loss = val_loss(x, y, model)val_epoch_accuracy = np.mean(val_is_correct)train_losses.append(train_epoch_loss)train_accuracies.append(train_epoch_accuracy)val_losses.append(validation_loss)val_accuracies.append(val_epoch_accuracy)########################################################################
epochs = np.arange(10)+1
import matplotlib.ticker as mtick
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
#%matplotlib inline
# plt.figure(figsize=(20,5))
# plt.subplot(211)
# plt.plot(epochs, train_losses, 'bo', label='Training loss')
# plt.plot(epochs, val_losses, 'r', label='Validation loss')
# plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))
# plt.title('Training and validation loss when batch size is 32')
# plt.xlabel('Epochs')
# plt.ylabel('Loss')
# plt.legend()
# plt.grid('off')
# #plt.show()
# plt.subplot(212)
# plt.plot(epochs, train_accuracies, 'bo', label='Training accuracy')
# plt.plot(epochs, val_accuracies, 'r', label='Validation accuracy')
# plt.gca().xaxis.set_major_locator(mticker.MultipleLocator(1))
# plt.title('Training and validation accuracy when batch size is 32')
# plt.xlabel('Epochs')
# plt.ylabel('Accuracy')
# plt.gca().set_yticklabels(['{:.0f}%'.format(x*100) for x in plt.gca().get_yticks()])
# plt.legend()
# plt.grid('off')
# plt.show()
plt.figure(figsize=(20,5))
for ix, par in enumerate(model.parameters()):print(f'绘图:{ix}')print(f'数据:{par.shape}')if(ix==0):plt.subplot(411)plt.hist(par.cpu().detach().numpy().flatten())plt.title('Distribution of weights conencting input to hidden layer')#plt.show()elif(ix ==1):plt.subplot(412)plt.hist(par.cpu().detach().numpy().flatten())plt.title('Distribution of biases of hidden layer')#plt.show()elif(ix==2):plt.subplot(413)plt.hist(par.cpu().detach().numpy().flatten())plt.title('Distribution of weights conencting hidden to output layer')#plt.show()elif(ix ==3):plt.subplot(414)plt.hist(par.cpu().detach().numpy().flatten())plt.title('Distribution of biases of output layer')plt.show()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853740.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

焦作本地在线教育系统价格

近年来,在线教育的普及使得传统教培模式受到了新的挑战。无论是大型教育集团,还是地方性的教培中心,纷纷转型线上,寻求更为灵活的盈利方式和发展机遇。在众多竞争者中,了解并运用合适的在线教育系统对维持市场地位至关重要。图源 凸知@www.tuzhi.ltd对于许多像焦作地区教育…

项目管理看板:实现任务透明化与实时跟踪

一、项目管理看板的定义与背景 1.1 什么是项目管理看板? 项目管理看板(Project Management Kanban)是一种可视化的任务管理工具,旨在帮助团队或项目管理者清晰地展示项目任务的状态,并对任务的进展进行实时跟踪。看板通常分为若干列,每一列代表任务的不同阶段(例如:待办…

实验六 C语言结构体、枚举应用编程

实验任务1 task1.c1 // P286例8.172 // 对教材示例代码作了微调,把输出学生信息单独编写成一个函数模块3 // 打印不及格学生信息、打印所有学生信息均调用该模块实现4 5 #include <stdio.h>6 #include <string.h> 7 #define N 3 // 运行程序输入测试时,可…

H7-TOOL自制Flash读写保护算法系列,为凌欧LKS32MC45x/MC05x/MC08x制作使能和解除算法,支持在线烧录和脱机烧录使用2024-12-15

说明:很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。 实际上当前已经发布的TOOL版本,已经自制很多了,比如已经支持的兆易创新大部分型号,新唐的大部分型号等。但是依然有些厂家还没自制,所以陆续开始为这些厂…

Jenkins拉取GitLab代码

Jenkins、GitLab、Jenkins拉取GitLab代码Jenkins从GitLab中拉取代码 1.在Jenkins主机上生成ssh密钥 [root@jenkins gitrepo]# ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519): Enter passph…

Kenkins拉取GitLab代码

Jenkins、GitLab、Jenkins拉取GitLab代码Jenkins从GitLab中拉取代码 1.在Jenkins主机上生成ssh密钥 [root@jenkins gitrepo]# ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519): Enter passph…

Kenkins拉取GitLab代码 - 副本

Jenkins、GitLab、Jenkins拉取GitLab代码Jenkins从GitLab中拉取代码 1.在Jenkins主机上生成ssh密钥 [root@jenkins gitrepo]# ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/root/.ssh/id_ed25519): Enter passph…

2024《毒液3》最后一舞 Venom: The Last Dance 【内封简英双语字幕】电影百度云/夸克迅雷UC网盘资源链接下载

导演凯莉马塞尔 主演汤姆哈迪 / 切瓦特埃加福 / 朱诺坦普尔 / 瑞斯伊凡斯 / 斯蒂芬格拉汉姆 / 佩吉陆 / 安迪瑟金斯 / 克拉克巴茨科 / 阿兰娜乌巴赫 / 克里斯托费尔南德斯 / 杰瑞德亚伯拉汉姆森 / 哈拉芬利 / 达什麦克劳德 / 瑞德斯科特 / 杰克布雷迪 / 伊沃南迪 / 杰克阿林 / …

2024《毒液3》最后一舞 Venom: The Last Dance 【内封简英双语字幕】电影(含网盘链接)

导演凯莉马塞尔 主演汤姆哈迪 / 切瓦特埃加福 / 朱诺坦普尔 / 瑞斯伊凡斯 / 斯蒂芬格拉汉姆 / 佩吉陆 / 安迪瑟金斯 / 克拉克巴茨科 / 阿兰娜乌巴赫 / 克里斯托费尔南德斯 / 杰瑞德亚伯拉汉姆森 / 哈拉芬利 / 达什麦克劳德 / 瑞德斯科特 / 杰克布雷迪 / 伊沃南迪 / 杰克阿林 / …

如何计算多分类情况下的敏感性指标

1. 混淆矩阵cm,其中矩阵元素 cm[i][j] 表示真实标签为第 i 类且被预测为第 j 类的样本个数。 2. TP, TN, FP, FN(以类II为例)TP: 实际为正,预测为正(最中间这一格)FN:实际为真,预测为假(中间这一排里面,挖去中间一格,剩下的格子)FP:实际为假,预测为真(中间这一列…

巴黎之旅的美好回忆

ssssss在巴黎的日子里,我们经历了许多难忘的事情...

Odoo外贸定制类(衣服)解决方案

业务背景 客户业务属于定制化外贸服装,通常由他的客户提出定制化产品需求,然后下单给工厂进行生产,工厂生产完成后发货交付。期间由跟单进行发货时间的安排,尾款的跟进和售后服务等等。本例由Odoo16.0协助完成。 SKU设计 由于客户的业务特点更偏向于按需生产,实际业务中客…