深度学习(李沐)——学习笔记(一)

线性回归从0开始实现

Pytorch中的基本数据类型就是各式各样的张量,张量可以理解为多维矩阵。Pytorch中定义了一个Tensor类来实现张量,Tensor在使用上与numpy的ndarray类似,不同的是,Tensor可以在GPU上运行,但是numpy只能在CPU上运行,当然numpy与Tensor可以进行相互转换,以此使得numpy数据在GPU上运行。Pytorch中的Tensor又包括CPU上的数据类型和GPU上的数据类型,两种数据类型之间也可以进行相互转换

requires_grad是Pytorch中通用数据结构Tensor的一个属性,用于说明当前量是否需要在计算中保留对应的梯度信息

torch.rand和torch.randn有什么区别
一个均匀分布,一个是标准正态分布。
在这里插入图片描述
在这里插入图片描述

np.random.normal()的意思是一个正态分布numpy.random.normal(loc=0,scale=1e-2,size=shape) ,意义如下:
在这里插入图片描述

生成数据集

features = torch.randn(num_examples, num_inputs)
print(features[:, 0])

注意这输出的不是二维数组([[1],[2]])这种,输出的是一维数组([1,2,3])这种
在这里插入图片描述

噪声代表了数据集中无意义的干扰:
随机噪声项来生成标签,其中噪声项服从均值为0、标准差为0.01的正态分布

labels += torch.tensor(np.random.normal(0, 0.01, size=labels.size()),
                       dtype=torch.float32)

random.shuffle()
用于将一个列表中的元素打乱

a =[10,20,30,40,50,60]
random.shuffle(a)
print(a)

在这里插入图片描述

python中yield的用法详解

torch.index_select

torch.index_select(features,0, j)
等价于
features.index_select(0,j)

第一个参数是索引的对象,第二个参数0表示按行索引,1表示按列进行索引,第三个参数是一个tensor,就是索引的序号,比如b里面tensor[0, 2]表示第0行和第2行,c里面tensor[1, 3]表示第1列和第3列。

自动求梯度

Tensor是这个包的核心类,如果将其属性.requires_grad设置为True,它将开始追踪(track)在其上的所有操作。完成计算后,可以调用.backward()来完成所有梯度计算。此Tensor的梯度将累积到.grad属性中。

w.requires_grad_(requires_grad=True)
b.requires_grad_(requires_grad=True) 

torc

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值