主要依赖的库:pytorch,torchvision

torchvision用于导入自带的数据,类型Tensor了解。

Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解_ZZY_dl的博客-CSDN博客_f.softmax函数

防止过拟合。dropout

import torch
import torch.nn as nn
import torch.autograd as autogradm = nn.Dropout(p=0.8)
n = nn.Dropout2d(p=0.8)
input = autograd.Variable(torch.randn(1, 2, 6, 3)) ## 对dim=1维进行随机置为0print(m(input))
print('****************************************************')
print(n(input))
input

Tensor数组变形操作

a = torch.arange(1, 17)a.view(4, 4) #
a.view(-1,4).shape
import torch
import torch.utils.data as Data'''
批训练,把数据变成一小批一小批数据进行训练。
DataLoader用来包装所使用的数据,每次抛出一批数据
'''
BATCH_SIZE = 5x = torch.linspace(1, 11, 11)
y = torch.linspace(11, 1, 11)
print(x)
print(y)
# 把数据放在数据库中
torch_dataset = Data.TensorDataset(x, y)
loader = Data.DataLoader(# 从数据库中每次抽出batch size个样本dataset=torch_dataset,batch_size=BATCH_SIZE,shuffle=True,# num_workers=2,
)

训练

optimizer.zero_grad() 功能

梯度初始化为零,把loss关于weight的导数变成0

每个batch必定执行的操作步骤

optimizer.zero_grad() # 梯度初始化为零,把loss关于weight的导数变成0
output = model(data) # forward:将数据传入模型,前向传播求出预测的值
loss = F.cross_entropy(output, target) # 求loss
loss.backward() # backward:反向传播求梯度
optimizer.step() # optimizer:更新所有参数

对于多分类问题,可以采用以下 负对数似然函数进行loss计算

loss = F.nll_loss(output, target)# 求loss

        #F.nll_loss(y_pred,y_test)#负对数似然函数#多分类任务,NLLLoss 函数输入 input 之前,#需要对 input 进行 log_softmax 处理,#即将 input 转换成概率分布的形式,并且取对数,底数为 e#loss = F.nll_loss(y_pred, y_test)loss = F.nll_loss(output, target)# 求loss

在训练模型时会在前面加上:

model.train()

在测试模型时在前面使用:

model.eval()

如果不写这两个程序也可以运行,这两个方法是针对在网络训练和测试时采用不同方式的情况,比如Batch Normalization 和Dropout

训练时是针对每个min-batch的,是一批样本数据,,但是在测试中往往是针对单张图片,是单独的样本数据,视为min-batch就是一张图片,一个单独的样本。由于网络训练完毕后参数都是固定的,因此每个批次的均值和方差都是不变的,因此直接结算所有batch的均值和方差。

所有Batch Normalization的训练和测试时的操作不同。

with torch.no_grad()语句

【pytorch系列】 with torch.no_grad():用法详解_大黑山修道的博客-CSDN博客_torch.no_grad():

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭/线程中锁的自动获取和释放等。

首先从requires_grad讲起:

requires_grad
在pytorch中,tensor有一个requires_grad参数,如果设置为True,则反向传播时,该tensor就会自动求导。tensor的requires_grad的属性默认为False,若一个节点(叶子变量:自己创建的tensor)requires_grad被设置为True,那么所有依赖它的节点requires_grad都为True(即使其他相依赖的tensor的requires_grad = False)

当requires_grad设置为False时,反向传播时就不会自动求导了,因此大大节约了显存或者说内存。

with torch.no_grad的作用
在该模块下,所有计算得出的tensor的requires_grad都自动设置为False。

x1 = torch.randn(10, 5, requires_grad = True)
y1 = torch.randn(10, 5, requires_grad = True)
z1 = torch.randn(10, 5, requires_grad = True)
with torch.no_grad():w1 = x1 + y1 + z1print('w1.requires_grad is',w1.requires_grad)print('w1.grad_fn is',w1.grad_fn)
print('w1.requires_grad is',w1.requires_grad)

#网络预测
def test():network.eval()#预测时使用test_loss = 0#损失率correct = 0#正确率with torch.no_grad():for data, target in test_loader:output = network(data)# forward:将数据传入模型,前向传播求出预测的值test_loss += F.nll_loss(output, target, reduction='sum').item()## 求loss并累加pred = output.data.max(1, keepdim=True)[1]#soft maxcorrect += pred.eq(target.data.view_as(pred)).sum()

output.data.max(1, keepdim=True)[1]

output.data.max(1, keepdim=True)[1]中的1表示,找第2维的最大值;[1]表示,output.data.max(2, keepdim=True)会返回一个数组,第一个是output数组中第2维度的最大值是多少,第二个是最大值的位置在哪里

找第一维度的最大值predict = output.data.max(0, keepdim=True)[1]

找第三维度的最大值predict = output.data.max(2, keepdim=True)[1]

torch.max()的用法 predict1 = torch.max(output, 2, keepdim=True)[1],结果与output.data.max(1, keepdim=True)[1] 一模一样

深度学习训练Torch使用到的模块汇总_手口一斤的博客-CSDN博客_torch模块

view与view_as区别

Pytorch之view及view_as_啧啧啧biubiu的博客-CSDN博客_view_as

Pytorch常用函数_Saul Zhang的博客-CSDN博客_pred.t()

torch.eq()函数
比较两向量是否相等,两个向量的维度必须一致,如果相等,对应维度上的数为1,若果不相等则对应位置上的元素为0.

怎么编写一个自定义的网络,参考下面的

pytorch教程之nn.Module类详解——使用Module类来自定义模型_LoveMIss-Y的博客-CSDN博客_torch.nn.module

梯度下降法,学习权重,基本公式如下,在纯梯度下降法中, 处的一阶导数值近似得到,对于梯度下降法的优化,只能从两个角度去优化,分别就是学习率,前者称为自适应学习率算法改进,后者称为动量法。对于大量的数据,往往取一个小样本计算,取得到的梯度均值,据此作为的近似。在torch中的实现参考下面的链接。

PyTorch学习之 torch.optim 的6种优化器及优化算法介绍_Line_Walker的博客-CSDN博客_lr_decay

Windows配置pytorch+CUDA

PyTorch配置CUDA_chenqiyyy的博客-CSDN博客_pytorch配置cuda

记录一些文档

https://handbook.pytorch.wiki/index.html

Pytorch中文百科

https://pytorch.apachecn.org/#/docs/1.7/19

https://docs.pytorch.wiki/en/

python得到当前文件夹下所有文件夹、文件,代码

import os
i=0
file_dir = r"C:/Users/86182/data_wx/mobilenetv3-master/data/splitData/test"
a = os.walk(file_dir)
b = None
for root, dirs, files in os.walk(file_dir):  print('i',i)i += 1#print('root',root) #当前目录路径  #print('dir',dirs) #当前路径下所有子目录  print('files',files) #当前路径下所有非目录子文件
print('b',b)

计时函数

import timetime_start = time.time() #开始计时#要执行的代码,或函数
#要执行的代码,或函数time_end = time.time()    #结束计时time_c= time_end - time_start   #运行所花时间
print('time cost', time_c, 's')

Tensor简单计算

x = torch.randn(3, 3)
print(x)
y=torch.randn(3, 3)
print(y)
z = x + y
print(z)

类似于矩阵加法,对应元素相加,注意,有时候报错,需要将sum求和改为for循环,使用Tensor的加法进行,python的sum函数可能默认是Numpy的函数numpy.sum(),

画风转移代码,网页含有链接

https://arxiv.org/abs/1611.07865

点击下面网页链接

下面这个网站也可以实现画风迁移代码,基于PyTorch--需要注册(也可能不需要)

Neural Style Transfer in Pytorch - Nextjournal

4、yolov5-6.0 ERROR: AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘ 解决方案_komla168的博客-CSDN博客

目标检测资源合集_Thomas_Cai的博客-CSDN博客_目标检测素材

cnn 部分初级代码相关推荐

  1. Deep Learning论文笔记之(五)CNN卷积神经网络代码理解

    Deep Learning论文笔记之(五)CNN卷积神经网络代码理解 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但 ...

  2. cnn 预测过程代码_【交通+AI】使用CNN+LSTM实时出租车出行预测(上)

    这篇论文主要讲述了使用成都的出租车轨迹数据进行建模后生成出行强度图,使用CNN和LSTM进行学习之后通过反卷积生成出行强度预测图.非常适合上手这个领域,主要有两点原因:第一 出租车出行强度只包含了上车 ...

  3. 进阶必备:CNN经典论文代码复现 | 附下载链接

    经常会看到类似的广告<面试算法岗,你被要求复现论文了吗?>不好意思,我真的被问过这个问题.当然也不是所有面试官都会问,究其原因,其实也很好理解.企业肯定是希望自己的产品是有竞争力,有卖点的 ...

  4. cnn 预测过程代码_FPN的Tensorflow代码详解——特征提取

    @TOC   特征金字塔网络最早于2017年发表于CVPR,与Faster RCNN相比其在多池度特征预测的方式使得其在小目标预测上取得了较好的效果.FPN也作为mmdeteciton的Neck模块, ...

  5. cnn 预测过程代码_代码实践 | CNN卷积神经网络之文本分类

    学习目录阿力阿哩哩:深度学习 | 学习目录​zhuanlan.zhihu.com 前面我们介绍了:阿力阿哩哩:一文掌握CNN卷积神经网络​zhuanlan.zhihu.com阿力阿哩哩:代码实践|全连 ...

  6. CNN去马赛克代码阅读笔记

    有的博客链接是之前几周写好的草稿,最近整理的时候才发布的 CNN去马赛克论文及代码下载地址 有torch,minimal torch和caffe三种版本 关于minimal torch版所做的努力,以 ...

  7. (论文加源码)基于DEAP和MABHOB数据集的二分类脑电情绪识别(pytorch深度神经网络(DNN)和卷积神经网络(CNN))代码解析

    论文解析见个人主页: https://blog.csdn.net/qq_45874683/article/details/130000469?csdn_share_tail=%7B%22type%22 ...

  8. mvcnn代码详解_Tensorflow,OpenCV实现的CNN车牌识别代码

    [实例简介] 某位大牛在github上分享的 CNN 车牌识别源代码,在将其装到Windows的Python下运行时碰到了各种报错(WIN8下python3.6,Opencv3.0),有些问题搜遍网络 ...

  9. 卷积神经网络(CNN)讲解及代码(基于matlab)

    经典反向传播算法公式详细推导 卷积神经网络(CNN)反向传播算法公式详细推导 网上有很多关于CNN的教程讲解,在这里我们抛开长篇大论,只针对代码来谈.本文用的是matlab编写的deeplearnin ...

最新文章

  1. 单链表逆序生成及逆置的完整实现
  2. 互联网协议 — 互联网的技术发展
  3. Spring Boot操作ES进行各种高级查询(值得收藏)
  4. GRE词汇乱序版-夹生的词汇2
  5. Linux编程 9 (shell类型,shell父子关系,子shell用法)
  6. linux 命令综述
  7. C++const的作用与使用
  8. 入门Java菜鸟,JDK和Eclipse的安装一定要知道
  9. 2015-12-15 关于数量个
  10. MongoDB高可用集群搭建
  11. 背包问题九讲_背包问题
  12. redis热点key解决方案_缓存穿透,缓存雪崩,4种解决方案分析
  13. 心情的旅行- 让自己慢下来(46)
  14. 如何在windows中使用cmd命令去编译,运行C++程序
  15. web前端对http理解
  16. ASP.NET vs ASP—编译与解释的区别
  17. 复试导师问题——前沿科技
  18. (7)雅思屠鸭第七天:阅读中538个考点词一网打尽
  19. 通达\铭心联手,共探企业信息化营销新机遇
  20. gitter 卸载_最佳Gitter渠道:学习编码

热门文章

  1. CSDN蒋涛对话阿里云CTO周靖人:大模型风起云涌,阿里云将毫无保留地开放各项能力...
  2. Qt开源作品27-鼠标定位十字线
  3. Serializable接口和Parcelable接口
  4. MaxCompute(ODPS)实现笛卡尔积
  5. es6中类的使用、及其转es5源码解析
  6. 蘑菇云「行空板Python入门教程」第九课-智慧农业物联网系统2
  7. Maven使用教程【动力节点】
  8. macOS Big Sur:您会喜欢的事情
  9. python生成一笔画_Python系列—一笔画问题的算法研究
  10. MATLAB做回归分析