初始化

首先,介绍我们导入的包和基础的网络结构

import torch
import torch.nn as nn #可替代网络结构部分
'''
神经网络类的定义
1. 输入卷积: in_channel = 1, out_channel = 12, kernel_size = (5, 5), stride = (2, 2), padding = 2
2. 激活函数: 1.7159Tanh(2/3*x)
3. 第二层卷积: in_channel = 12, out_channel = 12, kernel_size = (5, 5), stride = (2, 2), padding = 2
4. 激活函数同上
5. 全连接层: 192 * 30
6. 激活函数同上
7. 全连接层:30 * 10
8. 激活函数同上 按照论文的说明,需要对网络的权重进行一个[-2.4/F_in, 2.4/F_in]的均匀分布的初始化
''' class LeNet1989(nn.Module):
def __init__(self):
super(LeNet1989, self).__init__() self.conv1 = nn.Conv2d(1, 12, 5, stride=2, padding=2)
self.act1 = nn.Tanh()
self.conv2 = nn.Conv2d(12, 12, 5, stride=2, padding=2)
self.act2 = nn.Tanh() self.fc1 = nn.Linear(192, 30)
self.act3 = nn.Tanh()
self.fc2 = nn.Linear(30, 10)
self.act4 = nn.Tanh() for m in self.modules():
if isinstance(m, nn.Conv2d):
F_in = m.kernel_size[0] * m.kernel_size[1] * m.in_channels
m.weight.data = torch.rand(m.weight.data.size()) * 4.8 / F_in - 2.4 / F_in
if isinstance(m, nn.Linear):
F_in = m.in_features
m.weight.data = torch.rand(m.weight.data.size()) * 4.8 / F_in - 2.4 / F_in def forward(self, x):
x = self.conv1(x)
x = 1.7159 * self.act1(2.0 * x / 3.0) x = self.conv2(x)
x = 1.7159 * self.act2(2.0 * x / 3.0) x = x.view(-1, 192) x = self.fc1(x)
x = 1.7159 * self.act3(2.0 * x / 3.0) x = self.fc2(x)
out = 1.7159 * self.act4(2.0 * x / 3.0) return out

查看网络参数

方法一

推荐使用方法一,因为方法二可以得到更多的信息,但是要注意的是这一段看情况添加

看网络是在GPU跑还是CPU跑,我相信大部分是GPU,就用下面这个就可

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
net = LeNet1989().to(device)

用CPU就用这个

net = LeNet1989()

下面的部分就注意输入图片的input_size就可

from torchsummary import summary
#batch_size可以不指定,默认为-1,输入 模型(model)、输入尺寸(input_size)、批次大小(batch_size)、运行平台(device)
#summary(model, input_size, batch_size, device)
summary(net, input_size=(1, 16, 16), batch_size=1)

运行结果:

方法二

代码:

#查看网络参数部分
net = LeNet1989()
print(net)
params = list(net.parameters())
k = 0
for i in params:
l = 1
# print("该层的结构:"+ str(list(i.size())))
for j in i.size():
l *= j
# print("该层参数和:"+ str(l))
k = k + l
print('总参数和:' + str(k))

运行结果:

查看网络结构

from tensorboardX import SummaryWriter  # pip install tensorboardX
x = torch.randn(1, 16, 16) # 例如:x = torch.randn(1, 64, 64, 64)
net = LeNet1989()
writer = SummaryWriter('./tensorboard')
with writer:
writer.add_graph(net, (x,))
# 终端中输入:tensorboard --logdir=tensorboard/ --host=127.0.0.1

图片通道转换

彩色图转灰度图

from torchvision import transforms

transform = transforms.Compose([
transforms.Grayscale(num_output_channels=1), # 彩色图像转灰度图像num_output_channels默认1
transforms.ToTensor()
])

彩色图(三通道)转指定R,G,B通道

def change_image_channels(image):
# 3通道转单通道
if image.mode == 'RGB':
r, g, b = image.split()
return r,g,b

模型测试调用

.pt, .pth, .pkl文件都可

保存:

torch.save(model, mymodel.pth)#保存整个model的状态

调用:

model=torch.load(mymodel.pth)#这里已经不需要重构模型结构了,直接load就可以
model.eval()

Pytorch功能库留存的更多相关文章

  1. 怎么样修改小猪cms(从功能库添加)模块关键字

    需求:修改或者添加从功能库添加中的关键字 这里以添加咨询投诉为列: 找到wwwroot\PigCms\Lib\Action\User目录下的LinkAction.class.php文件(手动找不到直接 ...

  2. 编写自己的javascript功能库之Ajax(仿jquery方式)

    本人学习的是php,所以就用php跟js来演示代码了,主要是锻炼自己写js的能力,练练手而已. 下面这是我编写的操作ajax的代码功能,勉强让我称之为库吧.. js代码实例(tool.ajax.js) ...

  3. QT就是别人好心帮你做一些枯燥,并且很重复的代码编写工作,让你更好的把精力投入到你界面的逻辑和功能的实现的功能库(否则写了上万行代码了,才写出个BUG一大堆的毛坯)

    好了,现在开始记录我学习QT的学习历程 . 本人也不是计算机专业出来的,自学了一点,但还是不好找工作,于是参加了培训,虽然感觉没多学到什么 编程的学习生涯就是不断的看别人的源码,然后自己参考着写写自己 ...

  4. 事件总线功能库,Reface.EventBus 详细使用教程

    Reface.AppStarter 中的事件总线功能是通过 Reface.EventBus 提供的. 参考文章 : Reface.AppStarter 框架初探 使用 Reface.EventBus ...

  5. 从开启GTID功能的库同步数据到未开启GTID功能库时,注意事项!

    从开启GTID的库中导出数据到未开启GTID的库中,需要注意,在导出的文件中去掉相应的gtid内容,否则导入时会报错如下: ERROR 1839 (HY000) at line 24 in file: ...

  6. DSAPI多功能.NET函数库组件

    DSAPI.dll不定期更新,增加功能,故无法每次都发到网上,如果需要获得最新版DSAPI.dll的,请到QQ群:419130936群共享里下载. 简介     dsapi.dll是一款基于.net平 ...

  7. 库、教程、论文实现,这是一份超全的PyTorch资源列表(Github 2.2K星)

    项目地址:https://github.com/bharathgs/Awesome-pytorch-list 列表结构: NLP 与语音处理 计算机视觉 概率/生成库 其他库 教程与示例 论文实现 P ...

  8. pytorch 入门指南

    两类深度学习框架的优缺点 动态图(PyTorch) 计算图的进行与代码的运行时同时进行的. 静态图(Tensorflow <2.0) 自建命名体系 自建时序控制 难以介入 使用深度学习框架的优点 ...

  9. Facebook 发布深度学习工具包 PyTorch Hub,让论文复现变得更容易

    近日,PyTorch 社区发布了一个深度学习工具包 PyTorchHub, 帮助机器学习工作者更快实现重要论文的复现工作.PyTorchHub 由一个预训练模型仓库组成,专门用于提高研究工作的复现性以 ...

  10. 万字综述,核心开发者全面解读PyTorch内部机制

    斯坦福大学博士生与 Facebook 人工智能研究所研究工程师 Edward Z. Yang 是 PyTorch 开源项目的核心开发者之一.他在 5 月 14 日的 PyTorch 纽约聚会上做了一个 ...

随机推荐

  1. 从XML配置角度理解Spring AOP

    本文分享自华为云社区<Spring高手之路18--从XML配置角度理解Spring AOP>,作者: 砖业洋__. 1. Spring AOP与动态代理 1.1 Spring AOP和动态 ...

  2. PageOffice 6 给SaveFilePage指向的保存地址传参

    PageOffice给保存方法传递参数的方式有两种: 通过设置保存地址的url中的?传递参数.例如: poCtrl.setSaveFilePage("/save?p1=1") 通过 ...

  3. jq 工具及其常用用法

    在处理 JSON 数据时,我们经常需要在命令行中进行过滤.查询和编辑的操作.jq 是一个强大的命令行 JSON 处理工具,它可以让我们轻松地对 JSON 数据进行各种操作.本文将简要介绍 jq 的基本 ...

  4. Python:global、local与nonlocal变量

    1 local和global变量 先来看一个最简单的Python程序例子: import numpy as np n = 2 def func(a): b = 1 return a + b print ...

  5. 零代码零硬件玩转华为云IoT,基于设备联动实时监控设备

    本文分享自华为云社区<一键守护,实时洞察:华为云IoT设备联动,智能感知设备状态变化,精准触发告警通知[零代码零硬件玩转华为云IoT]>,作者:周周的奇妙编程. 前言 在前面我们已经体验过 ...

  6. iis worker process w3wp 进程 占用率100%

    今天电脑特别的卡,我没当回事,但是实在是卡得不行了,我打开任务管理器,发现 iis worker process 进程已经快100%了,我之前在iis上发布了一个webservice,我就把这个网站给 ...

  7. Anaconda 虚拟环境

    1. 查看虚拟环境 conda env list 2. 创建虚拟环境 conda create -n env_name python=3.8 --- env_name: 虚拟环境名 --- pytho ...

  8. 010. Jenkins安装与插件管理

    jenkins安装 要求安装环境: 内存: 1G以上 cpu: 1核以上 1. 环境准备: 10.0.0.65 jenkins 10.0.0.66 gitlab 官方安装文档: https://jen ...

  9. kubernetes pod升级与回滚扩容与缩容

    运行一个容器: apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revisio ...

  10. CSP-S2021 游记

    那天是惊蛰 满天花瓣 就像现在 我看清了无池里的那个人 前言 终于是开了 游记 的坑(期盼已久!) 虽然参加过 CSP-J2019 ,CSP-S2020 以及 NOIP2020 ,但是都没有写过游记( ...