神经网络【小土堆】

深度学习 - 卷积神经网络综述 1. 卷积神经网络概念 卷积神经网络(CNN)是一种前馈神经网络,它由若干卷积层和池化层组成,尤其在图像处理方面CNN的表现十分出色。 1962年,Hubel和Wiesel通过对猫脑视觉皮层的研究,首次提出了一种新的概念“感受野”,感受野是卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域。 1989年,LeCun结合反向传播算法与权值共享的卷积神经层发明了卷积神经网络,并首次将卷积神经网络成功应用到美国邮局的手 阅读详情

本博客资源均来自b站小土堆的视频:

【PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】】https://www.bilibili.com/video/BV1hE411t7RN?p=22&vd_source=cdd93033e19ffe61f167bada04827323


本人python项目目录:

目录

本博客资源均来自b站小土堆的视频:

本人python项目目录:

一、卷积层

1.代码:

2.效果展示:

二、最大池化的使用

1.介绍:

2.代码:

3.效果展示:

三、非线性激活

1. inplace = True 和 False 的区别:

 2.代码:

3.结果展示:

四、Linear:(我没太理解)

1.介绍:

2.代码:

3.运行展示:

五、sequential:

1.介绍:

 2.代码:

3.结果展示:


一、卷积层

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)

1.代码:

# 神经网络——卷积层
import torch
import torchvision
from torch import nn
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10("../data_conv2d", train=False, transform=torchvision.transforms.ToTensor(),
                                       download=True)
# 因为此代码在src文件夹下,想在外面创建一个文件夹,所以需要../name

dataloader = DataLoader(dataset, batch_size=64)

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()
        self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)

    def forward(self, x):
        x = self.conv1(x)
        return x

tudui = Tudui()
print(tudui)

step = 0
writer = SummaryWriter("../logs_nn_conv2d")
for data in dataloader:
    imgs, targets = data
    output = tudui(imgs)
    print(imgs.shape)       # torch.Size([64, 3, 32, 32])
    print(output.shape)     # torch.Size([64, 6, 30, 30])
    writer.add_images("input", imgs, step)

    output = torch.reshape(output, (-1, 3, 30, 30))  # [64, 6, 30, 30] -> [xxx, 3, 30, 30]
    writer.add_images("output", output, step)    # 直接运行会报错,6channel无法显示,需要上述语句

    step = step + 1
# tensorboard --logdir=logs_nn_conv2d

因为通道数的不同,无法上传至tensorboard展示,故又通过torch.reshape(output,(-1,3,30,30))对output进行了转换下格式,其中(-1,3,30,30),out_channels将强制转换为3,而因为是-1故需要将多余的通过batch进行扩展,也就是增加每组图片的数量,故在tensorboard中显示的时候input和output显示的每组数量不一样。

2.效果展示:

二、最大池化的使用

传送们:池化层详细介绍 

1.介绍:

在输入图像中(例:5*5),中使用池化核(3*3),取池化选中的9个数字中最大的一个。

Ceil_model = True 时,因步长使输入图像中被选中区域不足池化核大小时的数据,进行保留并取最大值。

Ceil_model = False 时,因步长使输入图像中被选中区域不足池化核大小时的数据,直接舍去

2.代码:

# 最大池化目的:保留输入特征并减小输入数据(5*5 -> 3*3 甚至更小) 网络训练参数减少,训练更快
import torch
import torchvision
from torch import nn
from torch.nn import Conv2d, MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10("../data_maxpool", train=False, transform=torchvision.transforms.ToTensor(),
                                       download=True)

dataloader = DataLoader(dataset, batch_size=64)

input1 = torch.tensor([[1, 2, 0, 3, 1],
                      [0, 1, 2, 3, 1],
                      [1, 2, 1, 0, 0],
                      [5, 2, 3, 1, 1],
                      [2, 1, 0, 1, 1]], dtype=torch.float32)

input1 = torch.reshape(input1, (-1, 1, 5, 5))   # input 格式要求:(batch_size, channel, h, w)
print(input1.shape)

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        self.maxpool1 = MaxPool2d(kernel_size=3, ceil_mode=False)

    def forward(self, input):
        output = self.maxpool1(input)
        return output

tudui = Tudui()
output1 = tudui(input1) # 列表
print(output1)

step = 0        # 数据集图片
writer = SummaryWriter("../logs_maxpool")

for data in dataloader:
    imgs, targets = data
    writer.add_images("input", imgs, step)
    output2 = tudui(imgs)
    writer.add_images("output_dataset", output2, step)   # 池化并不会改变channel
    step = step + 1

writer.close()

# 终端:tensorboard --logdir=logs_maxpool  --port=6789

3.效果展示:

三、非线性激活

1. inplace = True 和 False 的区别:

 2.代码:

# 非线性变换:给网络中引入非线性特征,非线性越多才能训练出符合各种曲线各种特征的模型
import torch
import torchvision
from torch import nn
from torch.nn import ReLU, Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

input = torch.tensor([[1, -0.5],
                      [-1, 3]])

input = torch.reshape(input, (-1, 1, 2, 2))
print(input.shape)

dataset = torchvision.datasets.CIFAR10("../data_maxpool", train=False, transform=torchvision.transforms.ToTensor(),
                                       download=True)

dataloader = DataLoader(dataset, batch_size=64)

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        self.relv1 = ReLU()
        self.sigmoid1 = Sigmoid()

    def forward(self,input):
        output = self.sigmoid1(input)
        return output

tudui = Tudui()
output1 = tudui(input)
print(output1)

writer = SummaryWriter("../logs_relu")
step = 0
for data in dataloader:
    imgs, targets = data
    writer.add_images("input_imgs", imgs, step)
    output_imgs = tudui(imgs)
    writer.add_images("output_imgs", output_imgs, step)
    step = step + 1

writer.close()
# tensorboard --logdir=logs_relu  --port=6789

3.结果展示:

四、Linear:(我没太理解)

1.介绍:

nn.Linear定义一个神经网络的线性层,方法签名如下:

        torch.nn.Linear(in_features, # 输入的神经元个数
           out_features, # 输出神经元个数
           bias=True # 是否包含偏置
           )

2.代码:

import torch
import torchvision
from torch import nn
from torch.nn import Linear
from torch.utils.data import DataLoader

dataset = torchvision.datasets.CIFAR10("../data_conv2d", train=False, transform=torchvision.transforms.ToTensor(),
                                       download=True)

dataloader = DataLoader(dataset, batch_size=64, drop_last=True)  # 记得设置 drop_last=True 否则会报错

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        self.linear1 = Linear(196608, 10)

    def forward(self, input):
        output = self.linear1(input)
        return output

tudui = Tudui()

for data in dataloader:
    imgs, targets = data
    print("imgs.shape: " + str(imgs.shape))
    # output = torch.reshape(imgs, (1, 1, 1, -1))
    output = torch.flatten(imgs)  # 将 n行 n列的数组转换成 1行 n*n 列
    print("output.shape: " + str(output.shape))
    output_linear = tudui(output)
    print("output_linear.shape: " + str(output_linear.shape))

3.运行展示:

五、sequential:

1.介绍:

CLASS torch.nn.Sequential(arg: OrderedDict[str, Module])

# Using Sequential to create a small model. When `model` is run,
# input will first be passed to `Conv2d(1,20,5)`. The output of
# `Conv2d(1,20,5)` will be used as the input to the first
# `ReLU`; the output of the first `ReLU` will become the input
# for `Conv2d(20,64,5)`. Finally, the output of
# `Conv2d(20,64,5)` will be used as input to the second `ReLU`
model = nn.Sequential(
          nn.Conv2d(1,20,5),
          nn.ReLU(),
          nn.Conv2d(20,64,5),
          nn.ReLU()
        )

# Using Sequential with OrderedDict. This is functionally the
# same as the above code
model = nn.Sequential(OrderedDict([
          ('conv1', nn.Conv2d(1,20,5)),
          ('relu1', nn.ReLU()),
          ('conv2', nn.Conv2d(20,64,5)),
          ('relu2', nn.ReLU())
        ]))

 2.代码:

import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.tensorboard import SummaryWriter


class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        """
        self.conv1 = Conv2d(3, 32, 5, padding=2)
        self.maxpool1 = MaxPool2d(2)
        self.conv2 = Conv2d(32, 32, 5, padding=2)
        self.maxpool2 = MaxPool2d(2)
        self.conv3 = Conv2d(32, 64, 5, padding=2)
        self.maxpool3 = MaxPool2d(2)
        self.flatten = Flatten()
        self.linear1 = Linear(1024, 64)     # 1024 不会算时,在 forward 中删除 linear1、2 然后输出可以看到(64,1024),接下行
        self.linear2 = Linear(64, 10)       # 64:batch_size   1024: flatten展成一行
        """
        self.model1 = Sequential(
            Conv2d(3, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 32, 5, padding=2),
            MaxPool2d(2),
            Conv2d(32, 64, 5, padding=2),
            MaxPool2d(2),
            Flatten(),
            Linear(1024, 64),
            Linear(64, 10)
        )

    def forward(self, x):
        """
        x = self.conv1(x)
        x = self.maxpool1(x)
        x = self.conv2(x)
        x = self.maxpool2(x)
        x = self.conv3(x)
        x = self.maxpool3(x)
        x = self.flatten(x)
        x = self.linear1(x)
        x = self.linear2(x)
        """
        x = self.model1(x)
        return x

tudui = Tudui()
print(tudui)
input = torch.ones(64, 3, 32, 32)   # 进行网络验证
output = tudui(input)
print("output.shape: " + str(output.shape))

writer = SummaryWriter("../logs_sequential")
writer.add_graph(tudui, input)
writer.close()
"""     检查网络正确性:
数据能不能经过网络后产生想要的输出,创建一个假想的输入:
input = torch.ones(64, 3, 32, 32)
输出: output.shape: torch.Size([64, 10])
tensorboard  --logdir=logs_sequential --port=2222
"""

3.结果展示:

小土堆pytorch学习 B站小土堆Pytoch学习 阅读详情

相关推荐

windows系统下,如何为comfyui如何安装triton

​ 有些加速插件、模型在安装的时候,比如说sageattention的安装,就需要提前安装triton这个包,不过这个包有点特殊,windows下略微不好装,经常会装失败。 🎠如何安装 之前也有人介绍过,要到github上找个wheel文件,找到对应的版本安装下就好了。 问题是:https://github.com/woct0rdho/triton-windows/releases 这个git地址上,已经找不到wheel文件了... ​

聚梦小课堂 4499

最大、平均、最小池化的作用和应用场景

最大池化(Max Pooling)、最小池化(Min Pooling)和平均池化(Average Pooling)是深度学习中常用的池化操作,主要用于减少特征图的空间维度,同时保留重要的特征信息。

diidiii的博客 3655

块坐标下降法实战:如何用Python一步步优化无人机通信网络?

本文通过Python实战案例,详细介绍了块坐标下降法在优化无人机通信网络中的应用。文章以最大化网络吞吐量为目标,将复杂的非凸问题拆解为功率分配和轨迹规划两个子问题,并提供了完整的算法实现、代码示例及调参指南,为机器学习工程师解决类似优化问题提供了实用参考。

sat99的博客 975

DL&ML基础学习四

DL&ML

olu 1000

ansys workbench 静力结构分析 高阶教程

ansys workbench 静力结构分析 高阶教程 目录ansys workbench 静力结构分析 高阶教程新建工程模型导入设置材料模型简化: 主要内容: 材料设置、模型简化、网格细化、约束分析、接触设置、求解设置、报错处理、结果分析 基础教程: ansys workbench 静力结构分析 基础操作流程(入门) ansys版本: 19.0(16.0及以上均可) 参考资料: 推荐教学视频《有限元分析 张晔》(超详细 ???? )、ansys workbench 超级学习手册(查阅用) 说明:一些基

weixin_43434624的博客 5万+

ESD放电模式以及电源箝位 (power clamp )电路

由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工由于ESD电压具有很快的上升速度(其ESD脉冲上升时间约在10ns左右),Vrc端的电压因为RC延迟效应无法跟得上VDD端的ESD电压上升速度,Vrc端的为低电位导致反相器工作将输出端Vout电压上拉到高电位。从而Vg端的高电位触发导通了NMOS元件(Mesd)的晶体管,因而ESD电流便经由Mesd而泄放掉。由于晶体管Mesd的栅极导通

DOG_BITE_DOG的博客 2万+

pytorch 简单方式实现最小池化

x = - max_pool(-x)

咕噜咕噜 2689

【算法设计与分析】期末复习题(超详细)

刚刚整理了一下电脑的文件,发现了这份上学期的算法设计与分析期末复习题,有需要的文后自取。

a1234567822的博客 6614

神经网络 小土堆pytorch记录

视频代码# 加载CIFAR10数据集transform=torchvision.transforms.ToTensor(), # 转换为Tensor# 定义测试神经网络# 创建卷积层# 创建网络实例一般也不平展,不介绍了。

qq_59157186的博客 1095

[ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429

[ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429 可以使用一些编码字符来制作URI,以访问WEB-INF目录的内容和/或绕过一些安全限制。默认合规模式允许带有包含 %u002e 段的 URI 的请求访问WEB-INF目录中的受保护资源。

qq_51577576的博客 3208

SAP SD销售订单的ATP检查简介

如果可用性检查组设置为01(汇总需求),系统将更新销售订单需求到汇总表VBBS,该表中未记录销售订单号码,因此在MD04中不会显示销售订单号码,而是按天汇总显示销售需求。如果物料的可用性检查组设置为02(单个需求),系统将更新销售订单需求到表VBBE,该表中记录了销售订单号码,因此在MD04显示销售订单的号码以及需求,前面的文章中我们解释了PP模块中的ATP检查,也解释了MM模块中的ATP的检查,本文将说明一下SD模块中的ATP检查。可用性检查用的最多的就是02,有兴趣的同学可以测试一下可用性检查01。

我小时候很黑的博客 4295

(神经网络和卷积入门)Pytorch小土堆跟练代码(第7天)

本系列为跟练每集代码,然后进入机器学习教程。欢迎大家一起交流!

2301_80060871的博客 769

分子动力学仿真软件:LAMMPS_(16).应用案例分析

通过以上四个应用案例,我们详细介绍了如何使用LAMMPS进行不同系统的分子动力学仿真。从简单的液体水仿真到复杂的纳米管仿真,每个案例都包含了详细的步骤说明和代码示例。读者可以通过这些示例实际操作并验证结果,从而更好地理解LAMMPS的功能和使用方法。希望这些案例能够为读者在分子动力学仿真领域的研究和应用提供帮助。

kkchenjj的博客 837

卷积神经网络(CNN)初步学习(参考小土堆)

对于RGB图像,每个颜色通道(红、绿、蓝)都有自己的均值和标准差。#在transforms.Normalize函数中,[0.5, 0.5, 0.5]是用于指定图像的均值(mean)参数,而[0.5, 0.5, 0.5]是用于指定图像的标准差(standard deviation)参数。#在transforms.Normalize函数中,[0.5, 0.5, 0.5]是用于指定图像的均值(mean)参数,而[0.5, 0.5, 0.5]是用于指定图像的标准差(standard deviation)参数。

omit250的博客 1641

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

(神经网络和卷积入门)Pytorch小土堆跟练代码(第11天)

首先使用CRFAR-10数据集来讲解这个可视化图形太方便了,可以把多层结构的各个部分都可视化出来附上代码,这里如果用Suquential的话可以省很多基础写的语句#使用crfar10,根据图片来识别类型的'padding是 dilation是空洞卷积'# self.conv1 = Conv2d(3,32,5,padding=2)#卷积层,根据公式算出来的。根据不变求出来的padding# self.maxpool1 = MaxPool2d(2) #池化层。

2301_80060871的博客 527

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

小土堆pytorch学习笔记 之神经网络基本骨架

TIP]首先来补补一些图像处理的基础知识吧!(尊嘟是 0 基础了)关于图片格式。

qq_51574420的博客 1868

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

土堆老师搭建神经网络代码

方式1-》保存方式1,加载模型。# 公众号:土堆碎念。# 方式2,加载模型。

auebud的博客 227

【Pytorch小土堆学习笔记】神经网络

官方文档在docs->torch.nn->Containers->Module。

double_double_的博客 261

(神经网络和卷积入门)Pytorch小土堆跟练代码(第9天)

本系列为神经网络跟练每集代码,然后进入机器学习部分。欢迎大家一起交流!

2301_80060871的博客 364

听 [小土堆PyTorch快速入门教程] 之神经网络

在PyTorch的官方文档可以清晰地认识到神经网络的结构:骨架,具体的类,处理层操作有哪些等等。这些就是图形的基本构建块,其中的Containers就是最基本的骨架Moudule就是构建神经网络的基类。

2402_87678111的博客 1682

pytorch 神经网络基础入门笔记【b站小土堆】

注意方法的输入与输出学会看帮助文档学会看源码,关注方法要什么参数不知道返回值的时候printDebug一般来说,和图像本身处理相关的不改变数据格式,数学相关的都是基于Tensor,中间的桥梁是toTensor。

C语言/数据结构/数学建模/深度学习/生物信息 1573

小土堆pytorch--神经网络-非线性激活&线性层及其他层介绍

小土堆pytorch--非线性激活&先行层及其他介绍

2302_80295520的博客 1267

基于小土堆入门教程的pytorch训练神经网络方法实现

还是画图比较清楚,对pytorch训练神经网络的整体过程总结如下:该过程大致和理论学习时一致,优化器整合了梯度下降部分,一些复杂的数学原理并没有向用户过多暴露,使得我们可以很快上手构造模型,但后续调参和模型优化仍要求我们理解底层原理。这么说来机器学习本身好像也是快上手,慢熟悉的过程,更多操作如特征缩放、判断收敛等还未使用,更不必说神经网络的底层原理,我们并没有规定特征的学习方向,网络究竟是如何通过激活函数和卷积操作等就能学习到准确的特征并判断的呢?不同参数又是如何在一个庞大的神经网络中作用的?

写代码的小阿帆的博客 1053

神经网络——卷积层 小土堆 P18

像素32*32由于卷积的影响变成30*30。out_channels:输出的通道数。in_channels:输入的通道数。kernel_size:卷积核大小。stride: 卷积过程中步径大小。可以看到由三通道变为六通道,padding:填充。

sixueh的博客 221

神经网络实战(土堆笔记)

用例:# `ReLU`;

m0_70929148的博客 629

代码实战(小土堆)——神经网络—卷积层

【代码】代码实战(小土堆)——神经网络—卷积层。

qq_42022648的博客 511
上一篇: pytorch学习:B站【小土堆】
下一篇: pytorch损失函数、反向传播、优化器【小土堆】
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值