Pytorch入门学习笔记(三)—— 神经网络

Pytorch入门学习笔记 定义两层卷积层 + 三层全连接层的神经网络: class Net(nn.Module): def __init__(self): # 定义神经网络结构 super(Net, self).__init__() # 第一层(卷积层) self.conv1 = nn.Conv2d(1,6,3) # 输入频道1,输出频道6,卷积大小3*3 ... 阅读详情

本文结合小土堆的教学视频PyTorch深度学习快速入门教程进行学习

一、 基本骨架 Containers

1. torch.nn.Module

Module 类是所有神经网络模块的基类,还可以包含其他模块,允许他们嵌套在树状结构中。

当继承 Module 父类时,需要调用 __init__() 函数进行初始化处理,并且在该函数中必须调用父类的初始化函数。同时还可以调用 forward() 函数进行前向传播。

具体代码实现如下

import torch

# 继承Module模块,创建一个属于自己的类
class Model(torch.nn.Module):

    # 类的初始化
    def __init__(self):
        super().__init__()

    # 调用forward函数
    def forward(self, input):
        output = input + 1
        return output

model = Model()
x = torch.tensor(1.0)
output = model(x)
print(output)

程序运行结果输出  tensor(2.) 

2.torch.nn.Sequential

Sequential 类继承自Module 类,是一个有顺序的容器,将特定神经网络模块按照在传入容器的顺序依次执行

具体代码实现如下

from torch import nn

# 创建Sequential实例
model = nn.Sequential(
          nn.Conv2d(1,20,5),    # 第一次卷积操作
          nn.ReLU(),            # 第一次非线性激活
          nn.Conv2d(20,64,5),   # 第二次卷积操作
          nn.ReLU()             # 第二次非线性激活
        )
print(model)

程序运行结果如下

Sequential(
  (0): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))
  (1): ReLU()
  (2): Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1))
  (3): ReLU()
)

二、 卷积层 Convolution Layers

功能实现:提取输入图像中的特征信息

Conv2d:对二维数据进行卷积层的处理

1. torch.nn.functional.conv2d

函数定义:

torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) 

参数含义:input 表示传入要进行处理的图像数据; weight  表示权重,即卷积核;bias 表示形状的可选偏置张量,默认值为 None; stride  表示卷积的步幅,默认值为1; padding  表示图像边沿填充的数目,默认值为0

具体代码实现如下

import torch
import torch.nn.functional as F
# 输入矩阵
input = 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]])
# 卷积核
kernel = torch.tensor([[1,2,1],
                       [0,1,0],
                       [2,1,0]])
# 由于直接使用torch.tensor传入的数据只有2个尺寸形式,而conv2d的传参要求需要4个尺寸形式
# 对输入矩阵和卷积核的尺寸进行转变
input = torch.reshape(input,(1,1,5,5))
kernel = torch.reshape(kernel,(1,1,3,3))

# 输出卷积结果
output = F.conv2d(input,kernel,stride=1)            # 卷积核步长为1,边缘无填充
output2 = F.conv2d(input,kernel,stride=2)           # 卷积核步长为2,边缘无填充
output3 = F.conv2d(input,kernel,stride=1,padding=1) # 卷积核步长为1,边缘填充一圈
print(output)
print(output2)
print(output3)

程序运行结果如下

tensor([[[[10, 12, 12],
          [18, 16, 16],
          [13,  9,  3]]]])
tensor([[[[10, 12],
          [13,  3]]]])
tensor([[[[ 1,  3,  4, 10,  8],
          [ 5, 10, 12, 12,  6],
          [ 7, 18, 16, 16,  8],
          [11, 13,  9,  3,  4],
          [14, 13,  9,  7,  4]]]])

2. torch.nn.Conv2d

计算公式为  out(N_i,C_{outj})=bias(C_{outj})+\sum_{k=0}^{C_{in}-1}weight(C_{outj},k) \times input(N_i,k)

其中 N 是批量大小,C 表示多个通道,H 是输入平面的高度(以像素为单位),W 是宽度(以像素为单位)

函数定义:

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) 

参数含义: in_channels  表示输入图像中的通道数(通常为 RGB 3通道); out_channels  表示经过卷积后输出图像的通道数; kernel_size  表示卷积核的大小,输入整数 size 表示大小为 size × size,输入序列 (h,w) 表示大小为 h × w; stride  表示卷积的步幅,默认值为1; padding  表示图像边沿填充的数目,默认值为0;padding_mode 表示边沿填充模式

具体代码实现如下

import torch
from torch import nn
from torch.nn import Conv2d
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

# 准备并加载测试数据集
dataset = torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloder = DataLoader(dataset,batch_size=64)

# 创建model类(继承Module)
class Model(nn.Module):
    # 类的初始化
    def __init__(self):
        super().__init__()    # 父类的初始化
        self.conv1 = Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)  # 定义卷积层
    # forward函数
    def forward(self,x):
        x = self.conv1(x)    # 对输入进来的x进行卷积操作
        return x

model = Model() # 创建类的实例
step = 0
writer = SummaryWriter("logs")
# 通过for循环遍历数据集中的每个子集
for data in dataloder:
    imgs,targets = data
    output = model(imgs)    # 传入图片进行卷积操作
    writer.add_images("input",imgs,step)    # 显示输入图片
    output = torch.reshape(output,(-1,3,30,30)) # 转变输出图片尺寸(经过卷积之后图片变成30×30)
    # -1表示不清楚该值要设置为多少,系统会自动根据后面的值进行计算;3表示将图片转化为三通道
    writer.add_images("output",output,step) # 显示输出图片
    step += 1
writer.close()

将程序运行后,在终端输入  tensorboard --logdir=logs --port=6007  ,结果显示如下

三、 池化层 Pooling Layers

功能实现:提取窗口的特征数据,保留输入的特征,减小需要计算的数据量

MaxPool2d:直接计算池化窗口内的原始数据,选择池化核覆盖的范围中的最大值

函数定义:

torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)

参数含义: kernel_size  表示池化核的窗口大小; stride  表示池化核窗口的步长(默认值为kernel_size); padding  表示图像边沿填充的数目; ceil_mode  当值为 True 时,表示将使用 ceil 而不是 floor 来计算输出形状,即保存大小不足为kernel_size的数据,自动补足NAN至kernel_size大小,值为 False表示直接舍弃大小不足为 kernel_size 的数据

具体代码实现如下(矩阵数据)

import torch
from torch import nn
from torch.nn import MaxPool2d

# 输入矩阵
input = 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) # 转为浮点数的tensor类型
# 对输入矩阵的尺寸进行转变,因为MaxPool2d的传参要求需要4个尺寸形式
input = torch.reshape(input,(1,1,5,5))

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        # 池化核大小为3×3,并保存大小不足为kernel_size的数据
        self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=True)

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

model = Model()
output = model(input)
print(output)

程序运行结果如下

tensor([[[[2., 3.],
          [5., 1.]]]])

若将 ceil_mode 的值赋为 False,则程序运行结果为  tensor([[[[2.]]]]) 

在调试过程中出现了  RuntimeError: "max_pool2d" not implemented for 'Long'  的报错,是由于我们传入数据的类型不符合 long 型,故需要在传入数据后添加  dtype=torch.float32 

具体代码实现如下(图像数据)

import torch
from torch import nn
from torch.nn import MaxPool2d
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

# 准备并加载测试数据集
dataset = torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloder = DataLoader(dataset,batch_size=64)

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        # 池化核大小为3×3,并保存大小不足为kernel_size的数据
        self.maxpool1 = MaxPool2d(kernel_size=3,ceil_mode=True)

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

model = Model()
step = 0
writer = SummaryWriter("logs")
# 通过for循环遍历数据集中的每个子集
for data in dataloder:
    imgs,targets = data
    output = model(imgs)    # 传入图片进行池化操作
    writer.add_images("input",imgs,step)    # 显示输入图片
    writer.add_images("output",output,step) # 显示输出图片
    step += 1
writer.close()

将程序运行后,在终端输入  tensorboard --logdir=logs --port=6007  ,结果显示如下

四、 非线性激活 Non-linear Activations

功能实现:向神经网络引入一些非线性的特质

1. torch.nn.ReLU

函数定义: torch.nn.ReLU(inplace=False) 

参数含义: inplace  若设置为 True ,则函数会把输出结果覆盖到输入变量中(默认值为 False)

计算公式: ReLU(x)=(x)^{+}=max(0,x)

具体代码实现如下

import torch
from torch import nn
from torch.nn import ReLU

# 输入数据矩阵
input = torch.tensor([[1,-0.5],
                      [-1,3]])
input = torch.reshape(input,(-1,1,2,2))   # 转化数据尺寸

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.relu1 = ReLU() # 定义非线性激活函数

    def forward(self,input):
        output = self.relu1(input)
        return output
    
model = Model()
output = model(input)
print(output)

程序运行结果如下

tensor([[[[1., 0.],
          [0., 3.]]]])

2. torch.nn.Sigmoid

函数定义: torch.nn.Sigmoid(*args, **kwargs) 

计算公式: Sigmoid(x)=\sigma(x)=\frac{1}{1+exp(-x)}

具体代码实现如下

from torch import nn
from torch.nn import Sigmoid
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

# 准备并加载测试数据集
dataset = torchvision.datasets.CIFAR10("./dataset",train=False,download=False,
                                       transform=torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset,batch_size=64)

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.sigmoid1 = Sigmoid() # 定义非线性激活函数

    def forward(self,input):
        output = self.sigmoid1(input)
        return output
    
model = Model()
step = 0
writer = SummaryWriter("logs")
for data in dataloader:
    imgs,targets = data
    writer.add_images("input",imgs,step)
    output = model(imgs)
    writer.add_images("output",output,step)
    step += 1
writer.close()

将程序运行后,在终端输入  tensorboard --logdir=logs --port=6007  ,结果显示如下

五、 线性层 Linear Layers

功能实现:将前面计算得到的特征向量进行线性变换,转化成一维向量

函数定义: torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None) 

参数含义: in_features  表示每次输入样本的大小; out_features  表示每次输出样本的大小;bias 表示偏置量

具体代码实现如下

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

# 准备并加载测试数据集
dataset = torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloder = DataLoader(dataset,batch_size=64,drop_last=True)

class Model(nn.Module):
    def __init__(self):
        super().__init__()
        self.linear1 = Linear(196608,10)    # 将输入图片的大小196608转化为10
    def forward(self,x):
        x = self.linear1(x)
        return x

model = Model()
for data in dataloder:
    imgs,targets = data
    # output = torch.reshape(imgs,(1,1,1,-1))   # 将图片数据扁平化
    output = torch.flatten(imgs)    # 可以替代上面的reshape函数的功能
    print(output.shape)
    output = model(output)
    print(output.shape)

六、 搭建神经网络模型小实战(结合 CIFAR10 模型)

CIFAR10 模型结构如下

具体实战代码实现如下

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


class Model(nn.Module):
    def __init__(self) -> None:
        super(Model,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)         # 第一次线性变换
        self.linear2 = 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)
        return x

model = Model()
print(model)
input = torch.ones((64,3,32,32))    # 构建一个值全为1的矩阵
output = model(input)
print(output.shape)

writer = SummaryWriter("logs")
writer.add_graph(model,input)
writer.close()

程序运行结果如下

Model(
  (conv1): Conv2d(3, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
  (maxpool1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (conv2): Conv2d(32, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
  (maxpool2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (conv3): Conv2d(32, 64, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
  (maxpool3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  (flatten): Flatten(start_dim=1, end_dim=-1)
  (linear1): Linear(in_features=1024, out_features=64, bias=True)
  (linear2): Linear(in_features=64, out_features=10, bias=True)
)
torch.Size([64, 10])

具体代码实现如下(结合 Sequential 类)

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


class Model(nn.Module):
    def __init__(self) -> None:
        super(Model,self).__init__()
        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.model1(x)
        return x

model = Model()
print(model)
input = torch.ones((64,3,32,32))
output = model(input)
print(output.shape)

writer = SummaryWriter("logs")
writer.add_graph(model,input)
writer.close()

程序运行结果如下

Model(
  (model1): Sequential(
    (0): Conv2d(3, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
    (1): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (2): Conv2d(32, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
    (3): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (4): Conv2d(32, 64, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
    (5): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (6): Flatten(start_dim=1, end_dim=-1)
    (7): Linear(in_features=1024, out_features=64, bias=True)
    (8): Linear(in_features=64, out_features=10, bias=True)
  )
)
torch.Size([64, 10])

将程序运行后,在终端输入  tensorboard --logdir=logs --port=6007  ,结果显示如下

 

Pytorch入门(1)神经网络 Pytorch入门(1)神经网络 import torch import torch.nn as nn import torch.nn.functional as F from torch.autograd import Variable import torch.optim as optim class Net(nn.Module): #定义Net的初始化函数,这个函数定义了... 阅读详情

相关推荐

Pytorch学习笔记(五)--多层神经网络

前请提要 Pytorch学习笔记(一)--Tensor和Variable Pytorch学习笔记(二)--autograd and dynamic-graph Pytorch学习笔记(三)--linear regression andgradient descend(线性回归和梯度下降) Pytorch学习笔记(四)--Logistic 回归模型 一.多层神经网络 之前学习的线性模型和logis...

屋顶数☆☆的博客 1728

PyTorch快速入门教程【小土堆】-神经网络-完整的模型训练套路

PyTorch快速入门教程【小土堆】-神经网络-完整的模型训练套路

weixin_42182290的博客 3772

PyTorch入门:从零开始搭建你的第一个神经网络

接下来,我们定义一个简单的全连接神经网络。PyTorch提供了`torch.nn.Module`类,所有神经网络模型都继承自这个类。

saluteSIWU的博客 933

P17-18:神经网络基本骨架以及卷积层(Pytorch小土堆学习笔记)

神经网络的基本架构以及将torch.nn.funcational和torch.nn中的conv2d进行比较,用具体的例子进行解释

Apple0631的博客 1507

Pytorch入门+实战系列二:Pytorch基础理论和简单的神经网络实现

Pytorch官方文档:https://pytorch.org/docs/stable/torch.html? 1. 写在前面 今天开始,兼顾Pytorch学习, 如果刚刚接触深度学习并且想快速搭建神经网络完成任务享受快感,当然是Keras框架首选,但是如果想在深度学习或人工智能这条路上走的更远,只有Keras就显得有点独木难支,这时候我们需要一个更加强大的框架,这里我想学习Pytorch,它代码...

Miracle8070 6050

地平线RDKX3初始配置与USB无线网卡

地平线X3无线网卡配置

Richard_Mei的博客 4077

学习笔记(b站小土堆)

可用 output = torch.flatten(imgs) 展平。

weixin_57736375的博客 2250

为什么大语言模型推理要分成 Prefill 和 Decode?深入理解这两个阶段的真正意义

Prefill 阶段是语言模型推理中的第一个步骤,它负责处理你输入的所有上下文内容(prompt),为后续生成打下基础。“请解释一下 Transformer 的原理。这句话会被 tokenizer 编码为一串 token,比如["请", "解释", "一下", "Trans", "##former", "的", "原理", "。"]。然后这些 token 会进入 Transformer 模型进行前向传播。重点来了 👇。

Harry的博客 1万+

Pytorch学习

本节主要是记录学习b站小土堆的pytorch教程做的简单笔记

akatsikitiandaci的博客 952

[pytorch] MedicalNet 3D Resnet预训练模型迁移学习实战:从分割到分类的代码改造

本文详细介绍了如何利用PyTorch对MedicalNet 3D ResNet预训练模型进行迁移学习,从分割任务改造为分类任务。通过解析模型结构、调整分类头、加载预训练权重及优化训练策略,帮助开发者在医疗影像领域快速实现高效模型部署。文章还涵盖了数据预处理、增强技巧及模型轻量化等实用内容。

kmeans3miner的博客 246

网格自适应_Comsol案例解析17:自适应网格的使用

本期导读自适应网格细化有许多优势,比如可以不用对网格进行全局加密,增加计算精度,又会降低求解自由度。本期仍然以气泡上升案例为例,在两相流模块中使用自适应网格。【打开案例模型】【修改网格】适当让气泡边界加密,注意,曲率因子越小,曲线上的网格越密【添加自适应网格】使用默认的参数即可,这里的误差指示器用的是水平集phi。可以根据具体求解模型选择适当的自变量作为误差指示器。【口诀】默认的一般是最...

weixin_28726871的博客 5681

PyTorch入门【小土堆】

pyTorch小土堆

Ashley_ly的博客 1974

STM32 伺服电机 指令脉冲+方向位置控制模式 主从定时器 实现PWM脉冲数精确控制

实验室有个项目涉及到多个步进电机以及伺服电机的控制,需要电机得到一个触发信号后精确移动一段距离。 下面以单个伺服电机控制为例,利用伺服电机的指令脉冲加方向位置控制模式实现jing'que ...

phcdd的博客 2万+

PyTorch学习笔记5—PyTorch深度学习入门(三)—神经网络

PyTorch学习笔记5—PyTorch深度学习入门(三)—神经网络

北街末雨Yyg 847

YOLOv5 改进点总览:轻量化、高精度的背后有哪些魔改?

YOLOv5是由Ultralytics团队开发的高效目标检测模型,其核心改进包括:主干网络采用CSPDarknet53提升梯度传播效率;特征融合使用PANet增强小目标识别;输出结构采用解耦头设计优化定位和分类任务。此外,YOLOv5通过CIoU损失函数、Mosaic数据增强和SimOTA标签分配机制进一步提升性能。模型支持多种推理格式(ONNX/TensorRT等),并具备自动锚框匹配和多尺度训练功能,使其在轻量化(yolov5s仅7MB)与高性能(最高51.2% mAP)间取得平衡,但缺乏正式论文支撑是

guoguozgw的博客 1805

VMware系列:此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI

VMware系列:此平台不支持虚拟化 Intel-VT-x/EPT 或 AMD-V/RVI

weixin_54626591的博客 1万+

【Pytorch入门】小土堆PyTorch入门教程完整学习笔记(详细笔记并附练习代码 ipynb文件)

【Pytorch入门】小土堆PyTorch入门教程完整学习笔记(详细笔记 文末附练习代码 ipynb文件)

几度热忱的博客 3万+

【自然语言处理】情感分析(一):基于 NLTK 的 Naive Bayes 实现

朴素贝叶斯(Naive Bayes)分类器可以用来确定输入文本属于某一组类别的概率。例如,预测评论是正面的还是负面的。它是 “朴素的”,它假设文本中的单词是独立的(但在现实的自然人类语言中,单词的顺序传达了上下文信息)。尽管有这些假设,但朴素贝叶斯在使用少量训练集预测类别时具有很高的准确性。

Data · Model · Agent · Repeat 2173

PyTorch 入门学习笔记

PyTorch 简介、安装、语法、基本概念等。

Cappuccino0001的博客 2421

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

pytorch入门——构建神经网络

本文介绍了基于pytorch神经网络的典型构建流程,介绍了损失函数 反向传播 更新参数等

qq_53536373的博客 7561

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Pytorch学习笔记(3):前馈神经网络

终于学到了我们最期待的神经网络部分了。

weixin_43554584的博客 2393

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

pytorch入门(三)—— 前馈神经网络

前馈神经网络 常见的前馈神经网络有感知机(Perceptrons)、BP(Back Propagation)网络、RBF(Radial Basis Function)网络等。 感知器(又叫感知机)是最简单的前馈网络,它主要用于模式分类,也可用在基于模式分类的学习控制和多模态控制中。感知器网络可分为单层感知器网络和多层感知器网络。 BP网络是指连接权调整采用了反向传播学习算法的前馈网络。与...

随笔 3312

Pytorch 三小时极限入门教程

张量是 Pytorch 中最基本的数据结构,类似于 NumPy 中的数组,但具有更强的功能。

爱好技术的小老头 3563

pyTorch——基础学习笔记

类似于Numpy但是能利用GPU加速一个非常灵活和快速用于深度学习的研究平台。目前学习深度学习一个好的框架十分的重要,现在主流的就是Pytorch和tf,今天让我们一起来学习pytorch。其实除了可以采用自动梯度方法,我们还可以通过构建一个继承了torch.nn.Module的新类,来完成对前向传播函数和后向传播函数的重写。在这个新类中,我们使用forward作为前向传播函数的关键字,使用backward作为后向传播函数的关键字。batch_n = 64#一个批次输入数据的数量。......

zyz博客 2477

Pytorch入门——两层神经网络(Numpy手写+Pytorch实现)

既然是实战,作为开篇,需要自己明确一下,理论的东西少整,实战就要多写代码。 先上一个重要的方法论吧,具有指导意义,也可用于学习其他技术上面: 文章目录1. Pytorch入门2. 两层神经网络的实现2.1 Numpy手写2.2 Pytorch实现 1. Pytorch入门 简单总结一些常用的一些操作吧,只是一个非常浅显总结。 x = torch.empty(5,3) #构造未初始化的tensor...

个人记录使用 1175
上一篇: Pytorch入门学习笔记(二)
下一篇: Pytorch入门学习笔记(四)
tryflyhigh
博客等级 码龄3年 136粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值