本周在学习深度学习的几个主要方法

卷积

卷积的重点是卷积核,卷积的过程其实就是一个特征提取的过程,加快模型的训练速度

  • 代码

from torch.nn.modules.conv import Conv2d
from torch.utils.data import DataLoader
#@title 卷积操作
import torch
import torchvision
from torch import nn
from torch.utils.tensorboard import SummaryWriter
dataset=torchvision.datasets.CIFAR10('/content/sample_data',train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=64)class NN_test(nn.Module):def __init__(self):super(NN_test,self).__init__()self.conv=Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)def forward(self,x):x=self.conv(x)return x;writer=SummaryWriter("logs")
nn_test=NN_test()
step=0
for data in dataloader:imgs,targets=data;output=nn_test(imgs)writer.add_images("input",imgs,step)output=torch.reshape(output,(-1,3,30,30))if step==0:print(imgs.shape)print(output.shape)writer.add_images("output",output,step)step=step+1%load_ext tensorboard
%tensorboard --logdir logs
writer.close()

结果如下:

池化

保留范围中的最大值,减少数据量

from torch.utils.data import DataLoader
# @title 最大池化
#池化操作:卷积范围内最大的数值进行保留,减少数据量import torch
from torch import nn
import torchvision
from torch.utils.tensorboard import SummaryWriter
dataset=torchvision.datasets.CIFAR10('/content/sample_data',train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=64)class MaxPool(nn.Module):def __init__(self):super(MaxPool,self).__init__()self.maxpool=nn.MaxPool2d(3,ceil_mode=True)def forward(self,input):output=self.maxpool(input)return outputwriter=SummaryWriter("logs")
step=0
maxpool=MaxPool()
for data in dataloader:imgs,targets=datawriter.add_images("input",imgs,step)output=maxpool.maxpool(imgs)writer.add_images("output",output,step)step=step+1%load_ext tensorboard
%tensorboard --logdir logs
writer.close()

结果如下:

线性变换

将数据变为对应的形状
代码:

# @title 线性层
from torch.utils.data import DataLoaderimport torch
from torch import nn
import torchvision
from torch.utils.tensorboard import SummaryWriter
dataset=torchvision.datasets.CIFAR10('/content/sample_data',train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=64,drop_last=True)
class Liner(nn.Module):def __init__(self):super(Liner,self).__init__()self.Linear=nn.Linear(196608,10)def forward(self,input):output=self.Linear(input)return outputwriter=SummaryWriter("logs")
step=0
liner=Liner()
for data in dataloader:imgs,targets=data# writer.add_images("input",imgs,step)output=liner.Linear(torch.flatten(imgs))print(output)# writer.add_images("output",output,step)step=step+1# %load_ext tensorboard
# %tensorboard --logdir logs
# writer.close()

结果如下:

非线性激活

做非线性变换,提高模型的泛化能力
主要方法:

  • ReLU:直接截断小于0的部分
  • Sigmoid:根据函数进行变化
    代码:
# @title 非线性激活
from torch.utils.data import DataLoader
#做非线性变化,提高模型的泛化能力import torch
from torch import nn
import torchvision
from torch.utils.tensorboard import SummaryWriter
dataset=torchvision.datasets.CIFAR10('/content/sample_data',train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=64)
#ReLU直接截断小于0的值
class Rel(nn.Module):def __init__(self):super(Rel,self).__init__()self.Rel=nn.ReLU()def forward(self,input):output=self.ReLU(input)return output
#Sigmoid根据公式对数据进行非线性的变换
class Sigmoid(nn.Module):def __init__(self):super(Sigmoid,self).__init__()self.Sigmoid=nn.Sigmoid()def forward(self,input):output=self.Sigmoid(input)return outputinput=torch.tensor([[1,1,-1],[2,-2,2],[-3,3,3]])
#测试ReLU部分
rel=Rel()
output=rel.Rel(input)
print(output)
#测试Sigmoid部分
writer=SummaryWriter("logs")
step=0
sigmoid=Sigmoid()
for data in dataloader:imgs,targets=datawriter.add_images("input",imgs,step)output=sigmoid.Sigmoid(imgs)writer.add_images("output",output,step)step=step+1%load_ext tensorboard
%tensorboard --logdir logs
writer.close()

结果

最后根据CIFAR10数据集进行训练


代码:

#@title 根据CIFAR10数据集进行小实战
import torch
from torch import nn
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torch.utils.data import DataLoaderdataset=torchvision.datasets.CIFAR10('/content/sample_data',train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=64,drop_last=True)
class CIFAR10(nn.Module):def __init__(self):super(CIFAR10,self).__init__()self.oper=nn.Sequential(nn.Conv2d(3,32,5,padding=2),nn.MaxPool2d(2),nn.Conv2d(32,32,5,padding=2),nn.MaxPool2d(2),nn.Conv2d(32,64,5,padding=2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(1024,64),nn.Linear(64,10))def forward(self,input):output=self.oper(input)return output
c=CIFAR10()
writer=SummaryWriter("logs")
test=torch.ones((64,3,32,32))
output=c.oper(test)
print(output.shape)
writer.add_graph(c,test)
# step=0
# for data in dataloader:
#   imgs,targets=data
#   writer.add_images("input",imgs,step)
#   output=c.oper(imgs)
#   print(output)
#   # writer.add_images("output",output,step)
#   step=step+1
%load_ext tensorboard
%tensorboard --logdir logs
writer.close()

结果可以查看具体的训练过程

软件工程——Alpha(2/3)相关推荐

  1. 软件工程Alpha冲刺集合

    这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践alpha冲刺 团队名称 测码奔腾 这个作业的目标 Alpha冲刺集合 冲刺集合 博客 日期 当天完 ...

  2. 17秋 软件工程 Alpha 事后诸葛亮会议

    题目: 团队作业--Alpha冲刺 17秋 软件工程 Alpha 事后诸葛亮会议 关于评价与建议的反馈 评价1:管理部门我觉得对我已经用处不大了不过对新生用处很大.像学长说的一样,里面不是流程很懂但是 ...

  3. 软件工程Alpha冲刺day1

    这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践alpha冲刺 团队名称 测码奔腾 这个作业的目标 Alpha冲刺(day1) 今日进度 成员姓名 ...

  4. 软件工程Alpha冲刺day6

    这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践alpha冲刺 团队名称 测码奔腾 这个作业的目标 Alpha冲刺(day6) 今日进度 成员姓名 ...

  5. 软件工程Alpha冲刺day4

    这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践alpha冲刺 团队名称 测码奔腾 这个作业的目标 Alpha冲刺(day4) 今日进度 成员姓名 ...

  6. 软件工程Alpha冲刺day2

    这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践alpha冲刺 团队名称 测码奔腾 这个作业的目标 Alpha冲刺(day2) 今日进度 成员姓名 ...

  7. 软件工程Alpha冲刺day7

    这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践alpha冲刺 团队名称 测码奔腾 这个作业的目标 Alpha冲刺(day7) 今日进度 成员姓名 ...

  8. 测码奔腾-Alpha冲刺总结

    这个作业属于哪个课程 构建之法-2021秋-福州大学软件工程 这个作业要求在哪里 2021秋软工实践alpha冲刺 团队名称 测码奔腾 这个作业的目标 Alpha冲刺总结 项目计划 冲刺计划 冲刺集合 ...

  9. html.action 访问分部视图,MVC+EF 随笔小计——分部视图(Partial View)及Html.Partial和Html.Action差异...

    Partial View指可以应用于View中以作为其中一部分的View的片段(类似于之前的user control), 可以像类一样,编写一次, 然后在其他View中被反复使用. 一般放在" ...

最新文章

  1. 中文乱码,也许这个小技巧可以帮到你
  2. 长方形纸做容积最大的长方体_儿童手工折纸,童年玩具纸扇子怎么折?一起来回忆下经典折法吧...
  3. 如此架构,泛滥架构,疯狂架构
  4. 在Ubuntu中使用OTB-50测试ECO模型
  5. SQLServer子查询相关知识笔记
  6. SpringMVC防止XSS攻击
  7. 光电编码器的原理及应用场合_图解编码器应用,推荐收藏
  8. Ubuntu 14.04 安装配置 cairo-dock 实现美化+特效
  9. python菜鸟教程网-Python JSON
  10. IT公司组织机构和职位、职位职责
  11. mysql中php生成唯一ID
  12. Windows远程桌面无法最大化问题
  13. http的长连接和短连接(史上最通俗!)以及应用场景
  14. 如何剪辑QQ酷狗下载的音乐?
  15. 集成灶怎么选品牌(拒绝陷阱避坑指南)
  16. 用HBuilder X编辑器打开的网页出现中文乱码
  17. 【el-dialog + video】控制视频弹框的显示与隐藏
  18. javaScript系列笔记 - JS实现MP4播放
  19. zxing换行_微博换行功能最新资讯
  20. 雷林鹏分享:Ruby 字符串(String)

热门文章

  1. 前端笔记:Grid布局
  2. Problem B: 排序二叉树
  3. chrome浏览器中用 F12 进行抓包
  4. 频谱仪和信号发生器的使用
  5. autium pcb手动布线_画PCB时,一些非常好的布线技巧
  6. B站《三体》动画正式开播 刘慈欣:宇宙很大,生活更大
  7. 什么是过拟合、欠拟合现象以及如何缓解?
  8. 2022最全Java后端面试真题、两万字1000+道堪称史上最强的面试题不接受任何反驳
  9. 八数码(Eight Digits)问题:宽度优先搜索、全局择优搜索、A*算法(C语言实现)
  10. 【MindInsight】在win下安装MindInsight遇到“ No module named apos;fcntlapos;“问题