pytorch 深度学习实战chapter1(1)

1.np.random.rand()函数 “0~1”均匀分布的随机样本值。随机样本取值范围是[0,1)

np.random.rand(d0,d1,d2……dn)

注:使用方法与np.random.randn()函数相同
作用: 通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1。
应用:在深度学习的Dropout正则化方法中,可以用于生成dropout随机向量(dl)
例如(keep_prob表示保留神经元的比例):
dl = np.random.rand(al.shape[0],al.shape[1])

import torch
import numpy as np
a=np.random.rand(1)
b=np.random.rand(2)

2np.random.randn(d0,d1,d2……dn) 返回一个或一组服从标准正态分布的随机样本值

1)当函数括号内没有参数时,则返回一个浮点数;
2)当函数括号内有一个参数时,则返回秩为1的数组,不能表示向量和矩阵;
3)当函数括号内有两个及以上参数时,则返回对应维度的数组,能表示向量或矩阵;
4)np.random.standard_normal()函数与np.random.randn()类似,但是np.random.standard_normal()
的输入参数为元组(tuple).
5)np.random.randn()的输入通常为整数,但是如果为浮点数,则会自动直接截断转换为整数。
通过本函数可以返回一个或一组服从标准正态分布的随机样本值。
标准正态分布是以0为均数、以1为标准差的正态分布,记为N(0,1)

np.random.randn(3)

在这里插入图片描述
pytorch中只包含一个元素的变量称为标量
pytorch中用Array数组表示向量
在这里插入图片描述

3.torch.from_numpy()方法把数组转换成张量,且二者共享内存,对张量进行修改比如重新赋值,那么原始数组也会相应发生改变

import numpy as np
a = np.array([1, 2, 3])
a
t = torch.from_numpy(a)
t
t[0]=-1
a

4.sklearn中的datasets数据集

datasets数据集 不需要从某个外部网站下载任何文件,用datasets.load_xx()加载。

波士顿房价数据集 统计了波士顿506处房屋的13种不同特征( 包含城镇犯罪率、一氧化氮浓度、住宅平均房间数、到中心区域的加权距离以及自住房平均房价等 )以及房屋的价格,适用于回归任务

from sklearn import datasets  # 导入库
boston = datasets.load_boston()  # 导入波士顿房价数据
print(boston.keys())  # 查看键(属性)     ['data','target','feature_names','DESCR', 'filename'] 
print(boston.data.shape,boston.target.shape)  # 查看数据的形状 (506, 13) (506,)
print(boston.feature_names)  # 查看有哪些特征 这里共13种
#print(boston.DESCR)  # described 描述这个数据集的信息 
print(boston.filename)  # 文件路径

鸢尾花数据集包含了150个鸢尾花样本,对应3种鸢尾花,各50个样本,以及它们各自对应的4种关于花外形的数据 ,适用于分类任务。

 import torch
from sklearn import datasets
iris=datasets.load_iris()
iris_data=iris["data"]
iris_data.shape
iris_tensor=torch.from_numpy(iris_data)
iris_tensor.shape
iris_tensor[:4,]#切片操作 前四行

在这里插入图片描述

5.Python: PIL.Image 基本使用

导入 from PIL import Image
Image.open(fp, mode=‘r’):参数mode不是图片的mode,而是读写的方式,必须是‘r’。该函数只是打开图片,并不读入内存。读入内存时Image会调用Image.load()方法
展示图片
Image.show(title=None, command=None)
在这里插入图片描述

6.自动微分计算

偏导数可以计算W和b对误差的贡献程度,所以我们可以使用误差loss对W和bd的偏导数来更新优化w和b
pytorch 可以支持有向无环图的构建和反向传播的链式法则引入一种特殊的数据结构tensor 计算拓扑沿着有向无环图进行计算得出output 后通过output计算损失值由链式法则可以将梯度传回叶子结点从而更新权重,图的节点用来计算梯度的函数函数保存在tensor的.grad_fn中当反向传播时会用tensor记录.grad_fn来计算相应梯度。
在这里插入图片描述

#对y=x+b求偏导数
x = torch.ones((2,5),requires_grad=True)
b = 6
y = 6*x+b
holder_weights = torch.ones((2,5))#初始化
y.backward(holder_weights)#对y进行反向传播
x.grad
#y=sin(x)求导
x = torch.ones((1,4),requires_grad=True)
y = torch.sin(x)
holder_weights = torch.ones((1,4))
y.backward(holder_weights)
x.grad
#对指数函数y=e^x求导数
import math
x = torch.Tensor([[1,3],[2,4]])
x.requires_grad=True
y = torch.pow(math.e,x)
holder_weights = torch.ones_like(x)
y.backward(holder_weights)
x.grad
#对数函数y=lnx求导数
import math
x = torch.Tensor([[1,3],[2,4]])
x.requires_grad=True
y = torch.log(x)
holder_weights = torch.ones_like(x)
y.backward(holder_weights)
x.grad
#sigmod的导数
import math
x = torch.Tensor([[1,3],[2,4]])
x.requires_grad=True
y = 1/(1+math.e**-x)
holder_weights = torch.ones_like(x)
y.backward(holder_weights)
x.grad

7.pytorch的核心模块Tensor

torch.tensor 求导 grad/grad_fn
创建 torch.randn/torch.randint
参与运算 sum argmax

torcn.nn 构建网络参数

       nn.parameters 获取网络参数
       torch.nn function 提供了大量的模块 conv\relu pooling softmax
       结果输出值通过nn.xxxLoss损失函数计算损失(MSELoss\CrossCrossEntropyLoss)
       损失传递给优化模块 torch.optim (SGD Adam)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值