小白的机器学习之路(四)神经网络的初步认识:基于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具有足够的权重来查看图像的小块,而不是来自每个像素的完全连接的权重网络。

相关推荐
MYX_3091 小时前
第七章 完整的模型训练
pytorch·python·深度学习·学习
CLubiy1 小时前
【研究生随笔】Pytorch中的线性代数
pytorch·python·深度学习·线性代数·机器学习
材料科学研究1 小时前
深度学习物理神经网络(PINN)!
python·深度学习·神经网络·pinn
学不会就看1 小时前
PyTorch 张量学习
人工智能·pytorch·学习
兰文彬1 小时前
Pytorch环境安装指南与建议
人工智能·pytorch·python
孤狼灬笑2 小时前
机器学习十大经典算法解析与对比
人工智能·算法·机器学习
星际棋手2 小时前
【AI】一文说清楚神经网络、机器学习、专家系统
人工智能·神经网络·机器学习
教练、我想打篮球3 小时前
13 pyflink/scala 进行 csv 文件的批处理
人工智能·机器学习
可触的未来,发芽的智生4 小时前
触摸未来2025-10-18:生成文字的小宇宙矩阵溯源
人工智能·python·神经网络·程序人生·自然语言处理
武子康4 小时前
AI-调查研究-106-具身智能 机器人学习数据采集工具和手段:传感器、API、遥操作、仿真与真人示教全流程
人工智能·深度学习·机器学习·ai·系统架构·机器人·具身智能