神经网络编程- PyTorch深度学习

深度学习是机器学习的一个子领域,它使用受大脑神经网络的结构和功能启发的算法。
深度学习中使用的神经网络为人工神经网络(ANN)
人工神经网络是一种计算系统,由称为神经元的连接单元的集合组成,这些单元被组织为我们所谓的层。

使用PyTorch进行深度学习
PyTorch是一个深度学习框架和科学计算软件包。

为什么深度学习和神经网络使用gpu
最适合GPU的计算类型是可以并行完成的计算。
**注:**将相对较小的计算任务移动到GPU上不会使我们的速度提高很多,甚至可能会使我们的速度减慢。

张量-深度学习的数据结构
张量是多维数组,简称nd数组。
张量属性:rank,axes,shape
rank:张量中的维数。张量的秩告诉我们需要多少索引来引用张量中的一个特定元素。
一个张量的axes是一个张量的特定维数
e.g:

t = torch.tensor(dd)
t
tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])

This torch.Tensor is a rank 2 tensor with a shape of [3,3] or 3 x 3.

卷积神经网络和特征图
卷积神经网络是图像识别任务的首选网络,因为它们非常适合检测空间模式
CNN输入的形状长度通常为4。这意味着我们有一个四个轴的秩-4张量。[Batch, Channels, Height, Width]
有了输出通道,我们不再有颜色通道。
特征图是卷积的输出

神经网络程序设计
step1:数据预处理:目标之一将原始输入数据转换成张量形式
在PyTorch中创建张量的最佳选项:
在这里插入图片描述
张量操作类型
在这里插入图片描述
1.(1)Reshaping张量只会改变张量的形状,而不会改变其背后的数据。
t.reshape(1, -1),将-1作为第二个参数传递给reshape()函数,-1就是张量中包含的元素的数量
(2)cat()组合张量:
torch.cat((t1, t2), dim=0)按行组合

  1. element-wise:作用于张量之间的对应元素(前提:两个张量必须具有相同的形状)

经典数据集:
MINIST:
在这里插入图片描述
Fashion-MNIST(平衡的数据集)
如果每类有不同的数据样本,我们称这个数据集为不平衡的数据集
ELT(Extract ,Transform,Load)
在这里插入图片描述
构建CNN

class Network(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5)
        self.conv2 = nn.Conv2d(in_channels=6, out_channels=12, kernel_size=5)

        self.fc1 = nn.Linear(in_features=12*4*4, out_features=120)
        self.fc2 = nn.Linear(in_features=120, out_features=60)
        self.out = nn.Linear(in_features=60, out_features=10)

    def forward(self, t):
        # implement the forward pass
        return t

超参数:(是手动或任意选择的参数)kernel_size;out_channels;out_features
输出通道out_channels(即特征图)由卷积核的个数决定

第一个卷积层的输入通道依赖于构成训练集的图像内部的彩色通道数量

输出层的输出特征out_features依赖于我们训练集中的类的数量

可学习的参数:网络中的权值
对于卷积层,权值存在于过滤器中,在代码中,过滤器实际上就是权值张量本身。
所有的滤波器都用一个张量表示。
过滤器具有用于输入通道的深度。

Tensor Reduction Operations
对张量的约简运算是一种减少张量中包含的元素数量的运算。

PyTorch - torch.eq、torch.ne、torch.gt、torch.lt、torch.ge、torch.le
在这里插入图片描述
在整个项目过程中,我们将遵循四个一般步骤:

  1. 准备数据
  2. 构建模型
  3. 训练模型
  4. 分析模型的结果

类和对象
类:一个实际对象的蓝图和描述
对象:事物本身
一个给定类的所有实例都有两个核心组件:方法和属性
方法代表代码,属性代表数据,方法和属性由类定义
属性:描述对象的特征
方法:描述对象的行为
比如:蜥蜴类让我们知道蜥蜴对象有颜色和长度,,但具体值不知道(因为类只描述对象)

在pytorch中构建神经网络

  1. 扩展nn.Module基础类
  2. 在类构造函数中将网络的层定义为类属性
  3. 实现forward()方法

参考链接:https://deeplizard.com/learn/video/6stDhEA0wFQ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值