Datawhalre 深入浅出Pytorch【第一章:Pytorch基础知识】

Pytorch基础知识

  • 前言
  • 一、张量是什么?
  • 二、自动求导
    • 1.介绍
    • 2.求导代码示例
  • 三、并行计算
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:
李老师说一句话让我印象特别深刻,多练习多动手。好好学pytorch,熟练掌握后,早日用到工作中。


提示:以下是本篇文章正文内容,下面案例可供参考

一、张量是什么?

Scalar:标量;Vector:向量;Matrix:矩阵;Tensor: 张量,多维。张量多处理图片。
Datawhalre 深入浅出Pytorch【第一章:Pytorch基础知识】_第1张图片
Tensor是高维的,是Pytorch运算的基本单元。
requires_grad:代表是否愿意求导
dtype:指定类型。
#使用指定类型函数随机初始化指定大小的Tensor
d=torch.FloatTensor(2,3) #两行三列
#tensor和numpy array 之间的相互转换
#numpy为数组,有的时候需要把张量读入到numpy里面
import numpy as np
g=np.array([[1,2,3],[4,5,6]])
h=torch.tensor(g)
print(h)
j=h.numpy()
print(j)
#tensor的运算
k=torch.rand(2,3)
o=torch.add(k,1)
#tensor的索引方式
print(o[:,1]) #第一列
print(o[0,:]) #第0行
#改变tensor形状的神器
print(o.view(-1,2))

二、自动求导

1.介绍

Datawhalre 深入浅出Pytorch【第一章:Pytorch基础知识】_第2张图片
损失函数如何反向传播?就需要求导
多元函数求导的雅克比矩阵和复合函数求导的链式法则(有点儿难,我后面补一下数学求导)
Datawhalre 深入浅出Pytorch【第一章:Pytorch基础知识】_第3张图片
简单易懂的图: z=x*y,z可以求导x,y,但如果有个张量M,是无发求导,因为没有加进来。
Datawhalre 深入浅出Pytorch【第一章:Pytorch基础知识】_第4张图片

2.求导代码示例

import torch
x1=torch.tensor(1.0,requires_grad=True)
x2=torch.tensor(2.0,requires_grad=True)
y=x1+2x2
print(y)
#首先查看每个变量是否需要求导
print(x1.requires_grad)
print(x2.requires_grad)
print(y.requires_grad)
#反向传播后看导数大小
y=x1+2
x2 #这里做了很多操作
y.backward()
print(x1.grad.data)
print(x2.grad.data)

#导数是会累积,grad会增加

三、并行计算

能计算、算得开、效果好
方法:
1.网络结构分布到不同的设备中:并不常用
2.同一层的任务分布到不同的设备中:没必要,例如:把卷积层1的内容分到不同的设备中计算
3.不同数据分布到不同的设备中:常用!

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pytorch的基本知识,虽然听着还可以,但是我怕后续难度突然起飞,还是得多动手多练习。

你可能感兴趣的:(pytorch,深度学习,python)