spinning up_example01笔记

本文介绍了新手在学习PyTorch时遇到的一些基本概念,包括类别分布(Categorical)、线性层(Linear)的使用,以及Sequential模型和卷积层(Conv2d)的应用。还讲解了如何使用assert和isinstance进行错误检查和类型判断。重点部分阐述了如何构建mlp网络处理状态和动作空间的维度。
摘要由CSDN通过智能技术生成

新手笔记,全是错误勿看

搬运工作

英语不好真的很吃力!

nn.Categorical

torch.distributions.categorical.Categorical(probs=None, logits=None, validate_args=None)

不同时传入probs或者logits,分别表示对数概率或普通概率。
尽量传入一维长度任意的张量

m = Categorical(torch.tensor([0.25, 0.25, 0.25, 0.25]))
m.sample()
# >>tensor(3)
# print(m) : Categorical(probs: torch.Size([4]))

中文名为类别分布,K个类型概率和为1

torch.linear

torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)
在这里插入图片描述
shape:函数输入input(任意,in_features),output(任意, out_features)

>>> m = nn.Linear(20, 30) # input 20 , output 30
>>> input = torch.randn(128, 20) # input为128行20列的矩阵
>>> output = m(input) # 128*20
>>> print(output.size())
torch.Size([128, 30])

上面的代码实际上执行了如下的矩阵乘法,因此得到的输出时128*30
在这里插入图片描述
权重实际上时根据(-根号k, 根号k)的均匀分布随机选取得到的,k=1/in_features,他的shape是(20,30),很多人不知道怎么来的,其实代码的第一行就设置好了。

nn.Sequential

序贯模型,看下面的代码就能看懂,nn.Sequential之后就生成了一个序贯神经网络模型

import torch.nn as nn
model = nn.Sequential(
                  nn.Conv2d(1,20,5),
                  nn.ReLU(),
                  nn.Conv2d(20,64,5),
                  nn.ReLU()
                )
 
print(model)
print(model[2]) # 通过索引获取第几个层
'''运行结果为:
Sequential(
  (0): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))
  (1): ReLU()
  (2): Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1))
  (3): ReLU()
)
Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1))
'''

assert和isinstance

assert 语句用法:

assert ('linux' in sys.platform), "该代码只能在 Linux 下执行"

断言语句,如何断言不正确,输出引号里的内容,如果正确就继续执行程序。

isinstance用法:

isinstance(env.observation_space, Box)

判断环境的状态空间是否为连续型,是就返回True,否则返回False

重点

logits_net = mlp(sizes=[obs_dim]+hidden_sizes+[n_acts])

在这里插入图片描述
实际上是如上,用状态空间的维数、隐藏层的维数和动作空间的维数创建一个三层神经网络,这里必须联合mlp函数充分理解。
理解了之后再来看logits = logits_net(obs),实际上就是将观测值赋给生成好的三层神经网络。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

rookiexxj01

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

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

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

打赏作者

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

抵扣说明:

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

余额充值