【pytorch速成】Pytorch图像分类从模型自定义到测试

PyTorch 目标检测教程 目标检测任务不仅要识别图像中的物体类别,还要精确定位物体的边界框。在此任务中,每个模型输出一个物体类别标签和一个边界框。 阅读详情

文章首发于微信公众号《与有三学AI》

【pytorch速成】Pytorch图像分类从模型自定义到测试

前面已跟大家介绍了Caffe和TensorFlow,链接如下。

【caffe速成】caffe图像分类从模型自定义到测试

【tensorflow速成】Tensorflow图像分类从模型自定义到测试

今天说说Pytorch。

作者&编辑 | 言有三  

 

01 什么是 Pytorch

一句话总结 Pytorch = Python + Torch。

Torch 是纽约大学的一个机器学习开源框架,几年前在学术界非常流行,包括 Lecun等大佬都在使用。但是由于使用的是一种绝大部分人绝对没有听过的 Lua 语言,导致很多人都被吓退。后来随着 Python 的生态越来越完善,Facebook 人工智能研究院推出了Pytorch并开源。Pytorch不是简单的封装 Torch并提供Python接口,而是对Tensor以上的所有代码进行了重构,同TensorFlow一样,增加了自动求导。

后来Caffe2全部并入Pytorch,如今已经成为了非常流行的框架。很多最新的研究如风格化、GAN 等大多数采用Pytorch源码,这也是我们必须要讲解它的原因。

1.1 特点

(1)动态图计算。TensorFlow从静态图发展到了动态图机制Eager Execution,pytorch则一开始就是动态图机制。动态图机制的好处就是随时随地修改,随处debug,没有类似编译的过程。

(2)简单。相比TensorFlow中Tensor、Variable、Session等概念充斥,数据读取接口频繁更新,tf.nn、tf.layers、tf.contrib各自重复,Pytorch则是从Tensor到Variable再到nn.Module,最新的Pytorch已经将Tensor和Variable合并,这分别就是从数据张量到网络的抽象层次的递进。有人调侃TensorFlow的设计是“make it complicated”,那么 Pytorch的设计就是“keep it simple”。

1.2 重要概念

(1)Tensor/Variable

每一个框架都有基本的数据结构,Caffe是blob,TensorFlow和Pytorch都是Tensor,都是高维数组。Pytorch中的Tensor使用与Numpy的数组非常相似,两者可以互转且共享内存。

tensor包括cpu和gpu两种类型,如torch.FloatTensortorch.cuda.FloatTensorvirable,就分别表示cpu和gpu下的32位浮点数。

tensor包含一些属性。data,即Tensor内容;Grad,是与data对应的梯度;requires_grad,是否容许进行反向传播的学习,更多的可以去查看API。

(2)nn.module

抽象好的网络数据结构,可以表示为网络的一层,也可以表示为一个网络结构,这是一个基类。在实际使用过程中,经常会定义自己的网络,并继承nn.Module。具体的使用,我们看下面的网络定义吧。

(3)torchvision包,包含了目前流行的数据集,模型结构和常用的图片转换工具

 

02 Pytorch 训练

安装咱们就不说了,接下来的任务就是开始训练模型。训练模型包括数据准备、模型定义、结果保存与分析。

2.1 数据读取

前面已经介绍了Caffe和TensorFlow的数据读取,两者的输入都是图片list,但是读取操作过程差异非常大,Pytorch与这两个又有很大的差异。这一次,直接利用文件夹作为输入,这是 Pytorch更加方便的做法。数据读取的完整代码如下:

data_dir = '../../../../datas/head/'    
   data_transforms = {
       'train': transforms.Compose([
           transforms.RandomSizedCrop(48),
           transforms.RandomHorizontalFlip(),
           transforms.ToTensor(),
           transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])
       ]),
       'val': transforms.Compose([
           transforms.Scale(64),
           transforms.CenterCrop(48),
           transforms.ToTensor(),
           transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])
       ]),
   }
   image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
                                             data_transforms[x]) for x in ['train', 'val']}
   dataloders = {x: torch.utils.data.DataLoader(image_datasets[x],
                                                batch_size=16,
                                                shuffle=True,
                                                num_workers=4) for x in ['train', 'val']}

下面一个一个解释,完整代码请移步 Git 工程。

 

(1)datasets.ImageFolder

Pytorch的torchvision模块中提供了一个dataset 包,它包含了一些基本的数据集如mnist、coco、imagenet和一个通用的数据加载器ImageFolder。

它会以这样的形式组织数据,具体的请到Git工程中查看。

root/left/1.png
root/left/2.png
root/left/3.png

root/right/1.png
root/right/2.png
root/right/3.png

imagefolder有3个成员变量。

self.classes:用一个list保存类名,就是文件夹的名字。

self.class_to_idx:类名对应的索引,可以理解为 0、1、2、3 等。

self.imgs:保存(imgpath,class),是图片和类别的数组。

不同文件夹下的图,会被当作不同的类,天生就用于图像分类任务。

(2)Transforms

这一点跟Caffe非常类似,就是定义了一系列数据集的预处理和增强操作。到此,数据接口就定义完毕了,接下来在训练代码中看如何使用迭代器进行数据读取就可以了,包括 scale、减均值等。

(3)torch.utils.data.DataLoader

这就是创建了一个 batch,生成真正网络的输入。关于更多 Pytorch 的数据读取方法,请自行学习。

2.2 模型定义

import torch
import torch.nn as nn
import torch.nn.functional as F
import numpy as np
class simpleconv3(nn.Module):`
def __init__(self):
       super(simpleconv3,self).__init__()
       self.conv1 = nn.Conv2d(3, 12, 3, 2)
       self.bn1 = nn.BatchNorm2d(12)
       self.conv2 = nn.Conv2d(12, 24, 3, 2)
       self.bn2 = nn.BatchNorm2d(24)
       self.conv3 = nn.Conv2d(24, 48, 3, 2)
       self.bn3 = nn.BatchNorm2d(48)
       self.fc1 = nn.Linear(48 * 5 * 5 , 1200)
       self.fc2 = nn.Linear(1200 , 128)
       self.fc3 = nn.Linear(128 , 2)
def forward(self , x):
       x = F.relu(self.bn1(self.conv1(x)))
       x = F.relu(self.bn3(self.conv3(x)))
       x = x.view(-1 , 48 * 5 * 5) 
       x = F.relu(self.fc1(x))
       x = F.relu(self.fc2(x))
       x = self.fc3(x)
       return x

我们的例子都是采用一个简单的3层卷积 + 2层全连接层的网络结构。根据上面的网络结构的定义,需要做以下事情。

(1)simpleconv3(nn.Module)

继承nn.Module,前面已经说过,Pytorch的网络层是包含在nn.Module 里,所以所有的网络定义,都需要继承该网络层,并实现super方法,如下:

super(simpleconv3,self).__init__()

这个就当作一个标准执行就可以了。

(2)网络结构的定义都在nn包里,举例说明:

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

完整的接口如上,定义的第一个卷积层如下:

nn.Conv2d(3, 12, 3, 2)

即输入通道为3,输出通道为12,卷积核大小为3,stride=2,其他的层就不一一介绍了,大家可以自己去看nn的API。

(3)forward

backward方法不需要自己实现,但是forward函数是必须要自己实现的,从上面可以看出,forward 函数也是非常简单,串接各个网络层就可以了。

对比Caffe和TensorFlow可以看出,Pytorch的网络定义更加简单,初始化方法都没有显示出现,因为 Pytorch已经提供了默认初始化。

如果我们想实现自己的初始化,可以这么做:

init.xavier_uniform(self.conv1.weight)init.constant(self.conv1.bias, 0.1)

它会对conv1的权重和偏置进行初始化。如果要对所有conv层使用 xavier 初始化呢?可以定义一个函数:

def weights_init(m):    
   if isinstance(m, nn.Conv2d):
       xavier(m.weight.data)
       xavier(m.bias.data)  
   net = Net()   
   net.apply(weights_init)

 

03 模型训练

网络定义和数据加载都定义好之后,就可以进行训练了,老规矩先上代码:

def train_model(model, criterion, optimizer, scheduler, num_epochs=25):
       for epoch in range(num_epochs):
           print('Epoch {}/{}'.format(epoch, num_epochs - 1))
           for phase in ['train', 'val']:
               if phase == 'train':
                   scheduler.step()
                   model.train(True)  
               else:
                   model.train(False)  
                   running_loss = 0.0                running_corrects = 0.0
               for data in dataloders[phase]:
                   inputs, labels = data
                   if use_gpu:
                       inputs = Variable(inputs.cuda())
                       labels = Variable(labels.cuda())
                   else:
                       inputs, labels = Variable(inputs), Variable(labels)

                   optimizer.zero_grad()
                   outputs = model(inputs)
                   _, preds = torch.max(outputs.data, 1)
                   loss = criterion(outputs, labels)
                   if phase == 'train':
                       loss.backward()
                       optimizer.step()

                   running_loss += loss.data.item()
                   running_corrects += torch.sum(preds == labels).item()

               epoch_loss = running_loss / dataset_sizes[phase]
               epoch_acc = running_corrects / dataset_sizes[phase]

               if phase == 'train':
                   writer.add_scalar('data/trainloss', epoch_loss, epoch)
                   writer.add_scalar('data/trainacc', epoch_acc, epoch)
               else:
                   writer.add_scalar('data/valloss', epoch_loss, epoch)
                   writer.add_scalar('data/valacc', epoch_acc, epoch)

               print('{} Loss: {:.4f} Acc: {:.4f}'.format(
               phase, epoch_loss, epoch_acc))
       writer.export_scalars_to_json("./all_scalars.json")
       writer.close()
       return model

分析一下上面的代码,外层循环是epoches,然后利用 for data in dataloders[phase] 循环取一个epoch 的数据,并塞入variable,送入model。需要注意的是,每一次forward要将梯度清零,即optimizer.zero_grad(),因为梯度会记录前一次的状态,然后计算loss进行反向传播。

loss.backward()
optimizer.step()

下面可以分别得到预测结果和loss,每一次epoch 完成计算。

epoch_loss = running_loss / dataset_sizes[phase]
epoch_acc = running_corrects / dataset_sizes[phase]
_, preds = torch.max(outputs.data, 1)
loss = criterion(outputs, labels)

可视化是非常重要的,鉴于TensorFlow的可视化非常方便,我们选择了一个开源工具包,tensorboardx,安装方法为pip install tensorboardx,使用非常简单。

第一步,引入包定义创建:

from tensorboardX import SummaryWriter
writer = SummaryWriter()

第二步,记录变量,如train阶段的 loss,writer.add_scalar('data/trainloss', epoch_loss, epoch)。

按照以上操作就完成了,完整代码可以看配套的Git 项目,我们看看训练中的记录。Loss和acc的曲线图如下:

 

网络的收敛没有Caffe和TensorFlow好,大家可以自己去调试调试参数了,随便折腾吧。

 

04 Pytorch 测试

上面已经训练好了模型,接下来的目标就是要用它来做inference了,同样给出代码。

import torch
import torch.nn as nn
import torch.optim as optim
from torch.optim import lr_scheduler
from torch.autograd import Variable
import torchvision
from torchvision import datasets, models, transforms
import time
import os
from PIL import Image
import sys
import torch.nn.functional as F

from net import simpleconv3
data_transforms =  transforms.Compose([
               transforms.Resize(48),
               transforms.ToTensor(),
               transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])])

net = simpleconv3()
modelpath = sys.argv[1]
net.load_state_dict(torch.load(modelpath,map_location=lambda storage,loc: storage))

imagepath = sys.argv[2]
image = Image.open(imagepath)
imgblob = data_transforms(image).unsqueeze(0)
imgblob = Variable(imgblob)
torch.no_grad()
predict = F.softmax(net(imgblob))
print(predict)

从上面的代码可知,做了几件事:

定义网络并使用torch.load和load_state_dict载入模型。

用PIL的Image包读取图片,这里没有用OpenCV,因为Pytorch默认的图片读取工具就是PIL的Image,它会将图片按照RGB的格式,归一化到 0~1 之间。读取图片之后,必须转化为Tensor变量。

evaluation的时候,必须设置torch.no_grad(),然后就可以调用 softmax 函数得到结果了。

 

05 总结

本节讲了如何用 Pytorch 完成一个分类任务,并学习了可视化以及使用训练好的模型做测试。

 

同时,在我的知乎专栏也会开始同步更新这个模块,欢迎来交流

https://zhuanlan.zhihu.com/c_151876233

注:部分图片来自网络

—END—

本系列完整文章:

第一篇:【caffe速成】caffe图像分类从模型自定义到测试

第二篇:【tensorflow速成】Tensorflow图像分类从模型自定义到测试

第三篇:【pytorch速成】Pytorch图像分类从模型自定义到测试

第四篇:【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试

第五篇:【Keras速成】Keras图像分类从模型自定义到测试

第六篇:【mxnet速成】mxnet图像分类从模型自定义到测试

第七篇:【cntk速成】cntk图像分类从模型自定义到测试

第八篇:【chainer速成】chainer图像分类从模型自定义到测试

第九篇:【DL4J速成】Deeplearning4j图像分类从模型自定义到测试

第十篇:【MatConvnet速成】MatConvnet图像分类从模型自定义到测试

第十一篇:【Lasagne速成】Lasagne/Theano图像分类从模型自定义到测试

第十二篇:【darknet速成】Darknet图像分类从模型自定义到测试

感谢各位看官的耐心阅读,不足之处希望多多指教。后续内容将会不定期奉上,欢迎大家关注有三公众号 有三AI!

 

 

简易入门安装PyTorch及其测试验证 这篇博客详细介绍了在不同系统环境下安装PyTorch的方法,涵盖了在Windows系统中通过pip和conda安装GPU版本和CPU版本的详细步骤。它还提供了如何检验PyTorch安装是否成功的指导,包括如何验证PyTorch的基本功能和检查GPU版本的PyTorch是否可用。这篇文章是对希望在其设备上安装和测试PyTorch的用户的有用指南,特别是在处理不同的硬件配置和系统环境时。 阅读详情

相关推荐

强化学习入门-Pytorch(CPU版本)简介、安装与测试运行

PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。本文主要介绍Pytorch的简介、查看设备是否有GPU、安装CPU版本的Pytorch,并测试运行。

zjh2883的博客 6193

pytorch安装与测试

PyTorch的飞速发展 框架好不好用,咱们来看图说话! 安装PyTorch:使用PIP的方法比较简单 先查看你的cuda版本: nvidia-smi 我的电脑cudaban版本是11.1的 用下面的网址找到对应的cuda版本,然后复制命令行在miniconda或者Anaconda的环境里安装即可。 https://pytorch.org/get-started/previous-versions/ 我的电脑安装命令就是: pip install torch==1...

生活如此美好,致敬每一个热爱“热爱”的人! 8393

PyTorch神经网络实战:从零构建图像分类模型

PyTorch已成为深度学习领域的主流框架,它的**动态计算图**和**直观的API设计**让模型构建像搭积木一样简单。self.conv1 = nn.Conv2d(1, 32, 3, 1) # 输入通道1, 输出32, 卷积核3x3。self.fc3 = nn.Linear(64, 10) # 输出层(10个数字)transforms.Normalize((0.1307,), (0.3081,)) # 标准化。x = x.view(-1, 28*28) # 展平图像(批大小, 784)

Loving_enjoy的博客 235

pytorch一小时速成

张量与NumPy的ndarrays类似,只是张量可以在GPU或其他硬件加速器上运行。事实上,张量和NumPy数组通常可以共享相同的底层内存,不需要复制数据(见与NumPy的转换)。张量还为自动分化进行了优化(我们将在后面的Autograd部分看到更多关于这一点)。如果你熟悉ndarrays,你就会对张量API很熟悉。

qq_26974921的博客 1379

aruco_ros实战:从USB摄像头到Marker位姿检测全流程解析

本文详细解析了使用aruco_ros从USB摄像头实现ArUco Marker检测与位姿估计的全流程。内容涵盖环境搭建、核心launch文件配置、可视化调试、位姿数据解析以及深度优化技巧,帮助开发者快速掌握ROS下的视觉定位关键技术,并集成到机器人项目中。

weixin_29230805的博客 265

深入STM32 USB OTG FS:从官方MSC例程到实战双存储设备移植全记录

本文详细解析了STM32 USB OTG FS在双存储设备开发中的实战应用,从协议栈底层机制到SD卡/SPI Flash同步挂载的实现。通过优化SDIO接口和SPI Flash驱动,结合USB MSC类的关键实现,提供了完整的解决方案和性能优化策略,适合嵌入式开发者参考。

weixin_28366475的博客 372

pytorch模型加载测试_【Pytorch速成】Pytorch图像分类从模型自定义到测试

前面已跟大家介绍了 Caffe 和 TensorFlow,现在说说 Pytorch,集齐三大主流框架以后方便召唤模型。1 什么是 Pytorch一句话总结 Pytorch = Python + Torch。Torch 是纽约大学的一个机器学习开源框架,几年前在学术界非常流行,包括 Lecun 等大佬都在使用。但是由于使用的是一种绝大部分人绝对没有听过的 Lua 语言,导致很多人都被吓退。后来随着 ...

weixin_39531761的博客 390

STM32控制舵机SG-5010转动,HAL库

首先设置时钟为72Mhz,预分频系数为72-1,自动重装载计数器的值为5000-1,这样的话就可以得到一个5ms的脉冲宽度,5000的计数值可以让舵机的旋转角度变得更加易控且相对精准,计算旋转角度的时候也可以更加精确。所以我们5ms脉宽,period是5000脉宽-------------角度----------pulse0.5ms-------------0度----------500;1.0ms------------45度---------1000;

qq_73783264的博客 1294

pytorch模型加载测试_「pytorch速成」Pytorch图像分类从模型自定义到测试

原标题:「pytorch速成」Pytorch图像分类从模型自定义到测试前面已跟大家介绍了Caffe和TensorFlow,今天说说Pytorch。1 什么是 Pytorch一句话总结 Pytorch = Python + Torch。Torch 是纽约大学的一个机器学习开源框架,几年前在学术界非常流行,包括 Lecun等大佬都在使用。但是由于使用的是一种绝大部分人绝对没有听过的 Lua 语言,导致...

weixin_39595487的博客 443

Vivado SDK中LWIP库版本冲突与RTL8211FDI兼容性实战解析

本文深入解析Vivado 2019.1 SDK中LWIP 1.0库与RTL8211FDI千兆PHY芯片的版本冲突问题,并提供实战解决方案。通过手动移植高版本LWIP库、整合第三方驱动及优化BSP配置,有效解决了以太网通信兼容性问题,确保千兆性能稳定运行。

ios99的博客 276

PIV实验流场流速云图(MALAB contour函数用法)

clear;clc; for k=1:5 str1=['filename1']; str2=['filename2']; str3=['filename3']; str=eval(['str',num2str(k)]); load(str); [m n]=size(y); y=flipud(y); v=-v; x=x-x(1,...

Nick_Cui的博客 3224

【杂谈】超过12个,150页深度学习开源框架指导手册与GitHub项目,初学CV你值得拥有...

之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息。开源框架背景现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的...

hacker_long的专栏 427

内存|内存的概念、内存的作用、内存的物理结构及内存使用

内存是硬件,是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理。内存是与CPU沟通的桥梁,计算机中所有程序的运行都要依靠内存,内存对计算机的影响非常大。本文简单介绍了内存的概念、作用、物理结构以及使用,内存远不止如此,后续文章会逐步深入讲解。

qq_59938293的博客 2万+

darknet框架_【通知】有三AI发布150页深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息。开源框架背景现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,deeplearning4j,matconvnet等。如何选择...

weixin_39780962的博客 88

基于FMU的Star CCM+与Amesim复杂控制联合分析

基于FMU的Star CCM+与Amesim复杂控制联合分析

2201_75375391的博客 2020

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

darknet框架_【杂谈】超过12个,150页深度学习开源框架指导手册与GitHub项目,初学CV你值得拥有...

之前我们公众号输出了很多深度学习开源框架相关的内容,今天整理成技术手册给大家分享以方便阅读,下面是详细信息。开源框架背景现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,deeplearning4j,matconvnet等。如何选择...

weixin_39745269的博客 92

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试

文章首发于微信公众号《与有三学AI》 【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试 这是给大家准备的paddlepaddle与visualdl速成例子 这一次我们讲讲paddlepadle这个百度开源的机器学习框架,一个图像分类任务从训练到测试出结果的全流程。 将涉及到paddlepaddle和visualdl,git如下:https://github...

hacker_long的专栏 3395

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

60分钟闪击速成PyTorch(Deep Learning with PyTorch: A 60 Minute Blitz)学习笔记

PyTorch官方教程:60分钟闪击速成PyTorch(Deep Learning with PyTorch: A 60 Minute Blitz)的学习笔记。

诸神缄默不语的博客 3万+

使用 PyTorch 进行深度学习:60 分钟速成

Deep Learning with PyTorch: A 60 Minute Blitz Author: Soumith Chintala What is PyTorch? PyTorch is a Python-based scientific computing package serving two broad purposes: A replacement for NumPy to use the power of GPUs and other accelerators. An automati

bill的博客 479

深度学习速成(3)Pytorch自带的数据集介绍

Pytorch自带的数据集介绍

qq_45591302的博客 2289

01-【多种深度学习框架从训练到预测】

【pytorch速成】Pytorch图像分类从模型自定义到测试 2018年10月09日 18:46:17言有三阅读数:2362 文章首发于微信公众号《与有三学AI》 【pytorch速成】Pytorch图像分类从模型自定义到测试 前面已跟大家介绍了Caffe和TensorFlow,链接如下。 【caffe速成】caffe图像分类从模型自定义到测试 【tensorflow速成】Ten...

cbd_2012的博客 860

PyTorch深度学习7天速成:从零基础到实战项目完整指南

深度学习作为人工智能的核心技术,通过神经网络模拟人脑学习机制实现智能决策。其原理基于反向传播算法自动优化网络参数,在计算机视觉、自然语言处理等领域展现出强大技术价值。PyTorch框架凭借动态计算图和简洁API设计,成为深度学习入门首选工具,特别适合快速原型开发和模型调试。通过系统学习张量运算、自动求导机制和神经网络构建,开发者能够快速掌握图像分类、文本处理等实际应用场景。本指南基于PyTorch框架,提供从环境配置到MNIST手写数字识别、CNN卷积神经网络等完整实战项目,帮助零基础学员7天内建立深度学习

weixin_33922670的博客 304

darknet框架_【杂谈】面向新手的深度学习开源框架指导手册与GitHub项目,欢迎加入我们的开源团队...

之前我们公众号输出了很多深度学习开源框架相关的内容,现在整理成技术手册给大家分享以方便阅读,下面是详细信息。开源框架背景现如今开源生态非常完善,深度学习相关的开源框架众多,光是为人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,deeplearning4j,matconvnet等。如何选择...

weixin_39634438的博客 123

AI速成课程全解析:从零构建机器学习与深度学习实战能力

机器学习作为人工智能的核心分支,通过算法让计算机从数据中学习规律,其基本原理涉及监督学习、无监督学习等范式,以及梯度下降等优化方法。深度学习作为机器学习的延伸,利用神经网络模拟人脑处理复杂模式,在计算机视觉、自然语言处理等领域展现出强大能力。掌握这些技术能高效解决分类、预测、生成等实际问题,提升自动化决策水平。本文以开源AI速成课程为例,系统讲解从Python环境搭建、Scikit-learn机器学习实战到PyTorch深度学习框架的应用路径,涵盖线性回归、卷积神经网络等关键实践,并融入大语言模型(LLM)

a2850363633的博客 282

5天深度学习速成:核心知识点与实战路径

深度学习作为人工智能的核心技术,通过神经网络模拟人脑处理信息的方式,广泛应用于图像识别、自然语言处理等领域。其核心原理包括前向传播、反向传播和梯度下降等优化算法,能够自动从数据中提取特征并做出预测。在工程实践中,PyTorch和TensorFlow等框架大幅降低了实现复杂度,而Jupyter Notebook等交互工具则提升了开发效率。本文以5天速成为切入点,重点解析如何通过80/20法则聚焦核心知识点,结合MNIST手写识别、CIFAR-10分类等经典项目实战,快速掌握深度学习的关键技能。特别针对物理AI

weixin_34072458的博客 371
上一篇: 【技术综述】如何Finetune一个小网络到移动端(时空性能分析篇)
下一篇: 【paddlepaddle速成】paddlepaddle图像分类从模型自定义到测试
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值