PyTorch入门,帮你构建自己的神经网络模型


Pytorch 综合评价:
在这里插入图片描述
所以当前学pytorch 最合适,等待tensorflow 2的生态完善,
Tensorflow1和2完全不兼容
Pytorch 生态也比较完善
功能:GPU加速
自动求导: autugrad,grad函数
神经网络:全连接层nn.linear,卷积层nn.conv2d,循环层nn,LSTM
激活函数:nn.ReLU,nn.sigmoid
损失函数loss:nn.Softmax,nn.CrossEntropyLoss,nn.MSE

基础教程

  1. 基础数据类型 tensor

和python的numpy相对应 可以在gpu上运行torch 有类似于numpy的函数,处理数据.

python pytorch
Int IntTensor of size()
float FloatTensor of size()
Int array IntTensor of size[d1,d2,…]
Float array FloatTensor of size[d1,d2,d3…]
string ?

怎样表达string?
one-hot Embedding:1,word2vec 2,glove
数据初始化与类型查看
在这里插入图片描述

#cpu转Gpu
data=data.cuda()

标量

a=torch.tensor(1.)
a=tensor(1.)
#作用:计算loss 是标量

向量:张量

torch.tensor([1.1,2.2])
tensor([1.1,2.2])
#直接给尺寸,随机初始化
torch.FloatTensor(2)
#从numpy转换
data=np.ones(2)
torch.from_num(data)#numpy转tonsor
#作用 bias偏置。维度一般为1
#全连接层 输入 输出 [batch_size,feature_size]

在这里插入图片描述
dim=3
在这里插入图片描述
作用:RNN input [word_num,batch_size,feature]
dim=4
作用:图像 [batch_size,channels,h,w]

#元素数量
a.numel()

创建数据

#使用numpy导入
a=np.array([2,3.2])
torch_from_numpy(a)
#使用list
torch.tensor([2,3.2])
tensor([2,3.2])
#声明内存空间
Torch.empty()#里面传空间大小的参数
torch.Tensor(2,3)#两行三列

#设置默认数据类型
torch.set_default_tensor_type(torch.DoubleTensor)
#随机初始化
a=torch.rand(3,3)#[0,1]均匀分布

torch.rand_like(a)#参考a的shape
torch.randint()#取值[min,max)
#正态分布
torch.randn(3,3)#随机取值N(0,1)
#分布满足N(u,std)
torch.normal(men=torch.full([10],0),std=torch.arange(1,0,-0.1))
#赋值全部一样的数字
torch.full([2,3],7)#值全为7
#递增序列
torch.arange(0,10)
#生成等分
torch.linespace(0,10,steps=4)
torch.logspace(0,10,steps=11)
#全部是0 ,全部是1,对角全是1
torch.ones(3,3)
torch.zeros(3,3)
torch.eye(3,3)
#随机打散
torch.randperm(10)#使用索引的种子去shuffle

索引与切片

#索引
a=torch.rand(4,3,28,28)
a[0].shape#索引第一个位置  输出为torch.size([3,28,28])
a[0,0].shape#索引第一个位置的第二个位置 输出为 torch.size([28,28])
#切片的使用
a[:2].shape #输出为 torch.size([2,3,28,28])
a[:2,1:,:,:]#输出为 torch.size([2,1,28,28])
a[:,:,0:28:2,0:28:2].shape#select by step
#给具体的索引号 .index_select()
a.index_select(2,torch.arange(8)).shape#在第二个维度进行序索引 输出为 torch.Size([4,3,8,28])
#任意多的维度 ...
a[0,...].shape#输出为 torch.Size([3,28,28])

#select by mask
x=torch.randn(3,4)
mask=x.ge(0.5)
torch.masked_select(x,mask)#将x中大于0.5的元素取出 维度变成一维

Tensor维度变换

  1. View/reshape
a=torch.rand(4,1,28,28)
a.view(4,28*28)
a.view(4,28,28,1)#和reshape一致,torch0.4后收拾reshape
  1. Squeeze/unsqueeze
a=torch.rand(4,1,28,28)
a.unsqueeze(0).shape#输出为 torch.Size([1,4,1,28,28])在0索引前面插入
a.unsqueeze(-1).shape#在-1后面插入 输出为torch.Size([4,1,28,28,1])为像素上增加属性对象
#挤压,维度删减
a.squeeze
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值