Deep Learning:pytorch项目实战 and 基本知识点及语法

pytorch项目实战!and 基本知识点及语法!

相关链接:

实战项目——基于pytorch的深度学习花朵种类识别项目完整教程(内涵完整文件和代码)

超详细CNN卷积神经网络教程(零基础到实战)

知识点:

特征提取,神经元逐层判断

请添加图片描述

中间层(隐藏层)越多越厉害
请添加图片描述

学习权值、神经元进行运算

返向传递:将输出值与正确答案进行比较,将误差传递回输出层回去(叫梯度,pytorch自动完成),从而计算每个权值的最优值,去进行更改。

Pytorch核心:Autograd包(完成自动梯度计算及返向传递)

请添加图片描述

训练一个模型的时候需要返向传递,用的时候不需要

TensorFlow:

定义运算符、定义运算、定义梯度、开启对话框、注入数据、进行运算。

Pytorch:

初始化、进行运算(变调式便运算)

上code:

import torch
#定义向量
vector = torch.tensor([1,2,3,4])
print("Vector:",vector)
print("Vector Shape:",vector.shape)
#定义矩阵
matrix = torch.tensor([[1,2],[3,4]])
print("matrix:",matrix)
print("matrix Shape:",matrix.shape)
#定义张量
tensor = torch.tensor([[1,2,],[3,4],[5,6]])
print("tensor:",tensor)
print("tensor Shape:",tensor.shape)

#
Vector: tensor([1, 2, 3, 4])
Vector Shape: torch.Size([4])
matrix: tensor([[1, 2],
        [3, 4]])
matrix Shape: torch.Size([2, 2])
tensor: tensor([[1, 2],
        [3, 4],
        [5, 6]])
tensor Shape: torch.Size([3, 2])

矩阵:

创建矩阵(tensor格式):

#这里矩阵是tensor格式,numpy中是array格式
#运算的时候都要用tensor格式,运算完展示的时候用numpy格式
#python中利用numpy创建矩阵a = np.ones(5)


#创建一个5行3列的随机数矩阵,后面加上一个参数的意思是后面可以求偏导计算梯度值了
x = torch.rand(5, 3,requires_grad=True)
#初始化一个5行3列的全零的矩阵
x = torch.zeros(5, 3, dtype=torch.long)
#初始化一个一行五列的单位矩阵
a = torch.ones(5)
#直接传入数据,结果是:tensor([5.0000, 3.0000])
x = torch.tensor([5, 3]) 
#展开矩阵看是几行几列的
x.size()

tensor:

import torch
from torch import tensor

x = tensor(42.) 
#得42.0

v = tensor([1.5, -0.5, 3.0])
#得【1.5,-0.5,3.0】

M = tensor([[1., 2.], [3., 4.]])
#得矩阵
#【1.,2】
#【3.,4】

view改变矩阵维度:

#创建一个4*4随机矩阵
x = torch.randn(4, 4)
#改变成一个一行16个元素的矩阵
y = x.view(16)
#(行,列)(-1代表自动计算,有8列)
z = x.view(-1, 8) 
print(x.size(), y.size(), z.size())

tensor矩阵格式转化为numpy的array矩阵格式:

a = torch.ones(5)
b = a.numpy()
b

pytorch基本语法:

import torch


t = x + b
y = t.sum()
#反向传播
y.backward(retain_graph=True)#如果不清空会累加起来
#反向传播中b的梯度值
b.grad 

一个线性回归模型(用GPU):

其实线性回归就是一个不加激活函数的全连接层

import torch
import torch.nn as nn


#定义一个 y=2*x+1 函数
x_values = [i for i in range(11)]
x_train = np.array(x_values, dtype=np.float32)
x_train = x_train.reshape(-1, 1) #把数据都转化成矩阵的格式
x_train.shape

y_values = [2*i + 1 for i in x_values]
y_train = np.array(y_values, dtype=np.float32)
y_train = y_train.reshape(-1, 1)
y_train.shape


#构建网络模型
#模型都是定义一个类,(nn.Module)调用一个模块,下面直接写调用第几层就行了
class LinearRegressionModel(nn.Module):
    #构造函数:写明用了哪个层
    def __init__(self, input_dim, output_dim):
        super(LinearRegressionModel, self).__init__()
        #nn.全连接层(输入数据维度,输出数据维度),这里都是1
        self.linear = nn.Linear(input_dim, output_dim)  

    #前向传播,写明各个层是怎么走的
    def forward(self, x):
        #这里只写了一个全连接层(y=kx+b)
        out = self.linear(x)
        #输出结果
        return out

#定义输入输出维度,因为是y=kx+b,这里都是1
input_dim = 1
output_dim = 1
#输出model
model = LinearRegressionModel(input_dim, output_dim)


#指定使用GPU跑模型,需要把数据和模型传入到cuda里面
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)


#定义相关参数和函数
#训练次数
epochs = 1000
#指定学习率
learning_rate = 0.01
#指定优化器,选SGD(所有需要优化的参数,学习率)
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
#定义损失函数
criterion = nn.MSELoss()


#训练模型
#迭代100次
for epoch in range(epochs):
    epoch += 1
    # 注意转行成tensor,tenser才能做运算,同时需要把数据和模型传入到cuda里面
    inputs = torch.from_numpy(x_train).to(device)
    labels = torch.from_numpy(y_train).to(device)

    # 梯度要清零每一次迭代
    optimizer.zero_grad() 

    # 前向传播
    outputs = model(inputs)

    # 计算损失
    loss = criterion(outputs, labels)

    # 返向传播
    loss.backward()

    # 更新权重参数
    optimizer.step()
    
    if epoch % 50 == 0:
        print('epoch {}, loss {}'.format(epoch, loss.item()))

        
#预测模型结果,再转化为numpy格式        
predicted = model(torch.from_numpy(x_train).requires_grad_()).data.numpy()
predicted


#模型的保存(权重参数,‘名字’)
torch.save(model.state_dict(), 'model.pkl')
#模型读取
model.load_state_dict(torch.load('model.pkl'))

迁移学习:

用相似的模型的权重初始化

全连接层需要改变

hub模块(调用别人训练好得网络架构):

GITHUB:https://github.com/pytorch/hub

模型:https://pytorch.org/hub/research-models

请添加图片描述
关注博主,分享学习教程,一起HappyCodeing

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 深度学习是一项非常热门的技术,在人工智能领域得到广泛应用。PyTorch是一种使用Python编程语言的开源深度学习框架,它非常适合研究和开发深度学习模型。为了帮助初学者更好地学习PyTorch深度学习技术,CSDN(全球最大中文IT社区)开设了“DeepLearning with PyTorch”系列课程。 这个系列课程以实践为主要教学方式,让学生在实际操作中掌握PyTorch深度学习的技能。在学习过程中,学生可以学到基础的模型结构设计,各种优化算法,如学习率调整、梯度下降等,并且可以在实战操作中学到如何使用PyTorch完成各种实际应用,例如图像分类和识别,自然语言处理等等。 这门课程的受众群体不仅仅是那些想要从事人工智能开发的工程师,它对于对深度学习感兴趣的学生和科研人员也是非常有用的。这是因为在这个课程中,教师基于实际使用场景和数据集介绍了PyTorch深度学习技术,从实践中总结出的方法和经验不仅可以快速提升工程开发效率,也可以加深对深度学习理论的理解。 总之,“DeepLearning with PyTorch”系列课程非常实用和有趣,可以为初学者提供全面而深入的深度学习知识,帮助他们掌握用PyTorch来开发深度学习模型的基础技能。 ### 回答2: Deep Learning是一种用于训练多层神经网络的机器学习方法,已被广泛应用于视觉、语音、自然语言处理等领域。而PyTorch是一种开源的深度学习框架,具有快速、灵活、易用等优点,因此受到了越来越多的关注和使用。 CSDN是一个致力于IT技术在线学习和分享的平台,在其中学习deeplearning with pytorch将能够获取丰富的知识和实践经验。首先,我们需要了解PyTorch基本概念和操作方法,如如何构建网络模型、定义损失函数和优化器、进行前向传播和反向传播等。然后,我们可以学习如何使用PyTorch进行数据预处理,如数据清洗、标准化、归一化等。此外,还可了解如何使用PyTorch进行分布式训练、混合精度训练等高级技术,以及如何在GPU上进行训练和推理等实践技巧。 总之,在CSDN上学习deeplearning with pytorch,能够让我们更好地掌握PyTorch的使用技巧,帮助我们更快、更好地完成深度学习的应用开发和研究工作。同时也可以通过活跃在CSDN平台上与其他开发者的交流来共同进步。 ### 回答3: PyTorch是一种针对深度学习任务的开源机器学习库,它支持快速的原型设计和大量的实验,是当前科学界和工业界中最受欢迎的深度学习框架之一。CSDN推出的Deeplearning with Pytorch系列课程就是致力于教授学生如何使用PyTorch进行深度学习,以及在此基础上更深层次的研究探索。 此系列课程包含了从入门到进阶多个方面的内容,在基础课程中,学员将学会如何使用PyTorch进行深度学习的各个方面,包括但不限于神经网络、优化器、损失函数等,使其基本掌握PyTorch的使用方法。而在进阶课程中,以一些大型深度学习任务为基础,详细介绍了超参数优化、神经网络模型架构选择、分布式训练、自己写网络模型等更高级的知识,通过深度剖析一些开源库的源码,为学员提供了很多实现深度学习任务的技巧和方法。 课程的开设不仅帮助了很多想更深入了解深度学习的爱好者,也有助于那些打算将深度学习应用在自己的科研工作中的研究者们更加快捷、有效地完成自己的研究任务。相信随着人工智能的不断发展,PyTorch这样的框架将会发挥越来越重要的作用,而帮助大家掌握这些工具的Deeplearning with Pytorch系列课程也必将得到更多的关注和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zhaohaobingSIU

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值