小白的机器学习之路(四)神经网络的初步认识:基于pytorch搭建自己的神经网络

小白的机器学习之路(四)

引子

当前交通大数据业务的需要,需要承担一部分算法工作(数据处理),考虑到上次研究深度学习算法还是两年前,我薄弱的基础已经无法支持当前的工作,通过前期的学习准备(其它算法工程师和chatgpt 的帮助),制定了五天的初步复习计划----初步定为:

目标四:

  • 学习深度学习基础:了解神经网络的基本结构、反向传播算法和激活函数等。

目标任务:使用深度学习算法构建一个简单的神经网络模型,并训练模型。

学习计划小贴士:

  • 每天定期复习前几天的内容,巩固知识。

  • 在学习过程中遇到问题及时查阅资料,或向论坛、社区寻求帮助。

  • 尝试在学习过程中动手实践,通过编写代码来加深对算法和原理的理解。

  • 学习过程中保持积极的学习态度和耐心,机器学习和深度学习是复杂的领域,需要持续学习和实践。

  • 学习机器学习基础:了解机器学习的定义、分类和基本原理。

  • 掌握数据预处理:学习数据清洗、特征选择和特征工程的基本方法。

准备一份草稿,后面更新

神经网络的基本结构

反向传播算法和激活函数

优化器

如何通过pytorch搭建自己的BP network

这里用到一个新的接口 torch.nn.Module

解释一下,torch.nn给了我们一个快速搭建bp的脚手架,我们可以直接设定参数来选择层数、神经元个数、每层的功能等;
对应的api如下

这里,我搭建一个简单网络进行处理,输入一些数据进行测试:

java 复制代码
import torch
import torchvision.datasets
from torch.utils.data import Dataset
from PIL import Image
from torch import nn
import torch.nn.functional as F
import numpy as np
from torch.utils.data import DataLoader
java 复制代码
class MyData(nn.Module):

    def __init__(self) -> None:
        super().__init__()
        self.conv1 = nn.Conv2d(1,20,1)
        self.conv2 = nn.Conv2d(20,20,5)



    def forward(self, input):
        output = F.relu(self.conv1(input))
        output = F.relu(self.conv2(output))
        return output

dataset  = torchvision.datasets.CIFAR10("../data", train=False, transform=torchvision.transforms.ToTensor(),
                             download=True)
dataloader = DataLoader(dataset, batch_size=64)

MyData = MyData()
x = torch.Tensor([[
        [[0.1000, 0.1000, 0.1000, 0.1000, 0.5000],
        [0.1000, 0.1000, 0.1000, 0.1000, 0.5000],
        [0.1000, 0.1000, 0.1000, 0.1000, 0.5000],
        [0.1000, 0.1000, 0.1000, 0.1000, 0.5000],
        [0.1000, 0.1000, 0.1000, 0.1000, 0.5000]]
]])

print(x)
print("ouput:", MyData(x))

结果分析:

tensor([[[[0.1000, 0.1000, 0.1000, 0.1000, 0.5000],

0.1000, 0.1000, 0.1000, 0.1000, 0.5000\], \[0.1000, 0.1000, 0.1000, 0.1000, 0.5000\], \[0.1000, 0.1000, 0.1000, 0.1000, 0.5000\], \[0.1000, 0.1000, 0.1000, 0.1000, 0.5000\]\]\]\]) ouput: tensor(\[\[\[\[0.0000\]\], \[\[0.1192\]\], \[\[0.0000\]\], \[\[0.0000\]\], \[\[0.0000\]\], \[\[0.0115\]\], \[\[0.0885\]\], \[\[0.0000\]\], ```java self.conv1 = nn.Conv2d(1,20,1) self.conv2 = nn.Conv2d(20,20,5) ``` 这里的`Conv2d(1,20,1)`是指进行卷积,输入通道数1,输出通道为20,我们的卷积核为1\*1; 最后进过两轮卷积,最后生成对应的结果; 卷积广泛应用于图像分类,下一章我们将讲到一个**图像分类的小项目;** 图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。 卷积神经网络(CNN)是用于图像分类问题的最流行的神经网络模型。CNN背后的一个重要思想是,对图像的局部理解是好的。实际的好处是,参数少将大大缩短了学习所需的时间,并减少了训练模型所需的数据量。CNN具有足够的权重来查看图像的小块,而不是来自每个像素的完全连接的权重网络。

相关推荐
随风飘摇的土木狗8 小时前
【MATLAB第114期】基于MATLAB的SHAP可解释神经网络分类模型(敏感性分析方法)
神经网络·matlab·分类·全局敏感性分析·gsa·敏感性分析·shap
乌旭9 小时前
AI芯片混战:GPU vs TPU vs NPU的算力与能效博弈
人工智能·pytorch·python·深度学习·机器学习·ai·ai编程
神经星星12 小时前
【vLLM 学习】API 客户端
数据库·人工智能·机器学习
KangkangLoveNLP13 小时前
深度探索:策略学习与神经网络在强化学习中的应用
人工智能·深度学习·神经网络·学习·机器学习·自然语言处理
菜小包14 小时前
什么是AI Agent ?在并行科技MAAS平台上怎么搭建自己的Agent?
人工智能·机器学习
橙色小博14 小时前
GPT:Transformer的专精产品
人工智能·python·gpt·深度学习·神经网络·transformer
pythonSuperman15 小时前
Correlation Matrix of Model Logits
人工智能·深度学习·机器学习
神经星星15 小时前
在线教程丨字节开源 InfiniteYou 图像生成框架,实现高保真面部特征迁移
人工智能·深度学习·机器学习
ayiya_Oese15 小时前
[环境配置] 2. 依赖库安装
人工智能·python·深度学习·神经网络·目标检测·机器学习·计算机视觉
CH3_CH2_CHO15 小时前
DAY01:【pytorch】张量
人工智能·pytorch·python