PyTorch简介

策略网络(演员)

class Actor

Q-网络(评论家)

class QCritic

张量 Tensor

Tensor张量 ,在PyTorch中用于存储基本数据。
张量表示多维数组。
零维张量表示标量;
一维张量表示向量;
二维张量表示矩阵;
多维张量表示多维数组。

1.Tensor cuda的转换

torch.cuda.is_available()判断是否支持GPU,将Tensor a 放入GPU 只需a.cuda().
ex.
if torch.cuda.is_available():
a_cuda=a.cuda()
print(a_cudda)

2.squeeze/unsqueeze;

squeeze用来压缩维度为1的Tensor;unsqueeze则用来增加一个维度。

3.自动梯度计算

PytTorch里面有一个NumPy中没有的概念——Variable(变量),这是神经网络计算图中特有的概念。
New一个 Variable对象v,它由data,grad以及grad_fn三部分组成。
v.data用于存储Variable中的Tensor数值;
v.grad也是一个Variable对象,用于存储Variable的反向传播梯度,用v.grad.data来访问;
v.grad_fn,可以用来得到Variable的操作,给出如何得到的操作算子。

4.模型的搭建

(1)torch.nn.Squential 序列容器,可以构建序列化模型
(2)torch.nn.Module 自定义模型类,继承torch.nn.Module
至少需要重写两个函数①__init__②forward

5.模型的保存与重载

模型的保存-两种方式:

(1)全部保存,保存整个模型的结构信息和参数信息,保存的对象是整个模型。
torch.save(model,‘/model.pkl’)
(2)只保存训练后的模型参数,保存的对象是模型的状态。
torch.save(model_state_dict(),‘./model_state_dict.pkl’)

模型的加载-两种方式:与保存的两种方式相对应

(1)全部保存则全部加载。则需要重新加载网络。
load_model=torch.load(‘./model.pkl’)
(2)由于保存训练后的模型参数,需要自己 导入或者搭建好与保存模型相同的神经网络结构。
使用model.load_state_dict()来导入模型的参数信息。
load_model=torch.load(‘./model_state_dict.pkl’)

总结:第一种全部保存方式在重载较大的网络时,通常时间比较长,存储所需要的空间也比较大。
因此,当网络较大时,通常使用第二种方式来保存模型和加载模型。

注意

(1)在Pytorch中通过网络传递NumPy数组之前将他们转换为torch张量;而在Tensorflow2.0中,可以直接将NumPy数组传递给模型。
Tensor可以在GPU上运行,而Numpy智能在CPU上运行。
(2)PyTorch创建的是静态图,Tensorflow创建的是动态图。具体来说,Tensorflow在定义模型的整个计算图之后才开始运行机器学习模型,而PyTorch的计算图在运行时创建的,可以随时定义、随时更改、随时执行节点。
(3)Tensorflow的学习曲线要比PyTorch陡峭得多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值