Pytorch

0

添加链接描述

1.1 torch.optim.SGD

  • Q:不知道momentum啥意思
    在这里插入图片描述

SGD是最基础的优化方法,普通的训练方法, 需要重复不断的把整套数据放入神经网络NN中训练,
这样消耗的计算资源会很大.当我们使用SGD会把数据拆分后再分批不断放入 NN 中计算. 每次使用批数据, 虽然不能反映整体数据的情况,
不过却很大程度上加速了 NN 的训练过程, 而且也不会丢失太多准确率.

torch.optim.SGD(params, lr=<required parameter>, momentum=0, dampening=0, weight_decay=0, nesterov=False, *, maximize=False, foreach=None)

在这里插入图片描述
A:momentum即动量,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。(if μ!=0)(让参数变化保留一点原来的方向?不知道咋说)

1.2 torch.cat()

import torch
# 总结:
# 1. torch.cat((x,y),dim=0) :张量 X,Y按照列堆起来
# 2. torch.cat((x,y),dim=1) :张量 X,Y按照行并排起来
x = torch.ones(3, 4)
y = torch.zeros(3, 4)
z = torch.cat((x, y), dim=0)  # dim = 0 ;按列堆起来
m = torch.cat((x, y), dim=1)  # dim = 1 :按行并排
print(f'x={x}')
print(f'y={y}')
print(f'z={z}')
print(f'm={m}')

x=tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])
y=tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])
z=tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])
m=tensor([[1., 1., 1., 1., 0., 0., 0., 0.],
        [1., 1., 1., 1., 0., 0., 0., 0.],
        [1., 1., 1., 1., 0., 0., 0., 0.]])

抄的

1.3 torch.size()

Q:不知道啥意思序列长度和特征维度?这里x指的是feat数据集

 seq_len, feature_dim = x.size(0), x.size(1)

torch.size()可以查看tensor的尺寸;size(0)就是为了将前面多维度的tensor展平成一维。
还是有点不懂,试一试。。

    for i, fname in tqdm(enumerate(usage_list)):
        feat = load_feat(os.path.join(feat_dir, mode, f'{fname}.pt'))
        if i>10:
            break
        print(i)
        print(feat.shape)
        print(feat.size(0),feat.size(1))
0
torch.Size([936, 39])
936 39
1
torch.Size([653, 39])
653 39
2
torch.Size([598, 39])
598 39
3
torch.Size([485, 39])
485 39

???,好家伙,这不就是行和列吗
(三个维数的用sharp报错了。。TypeError: ‘torch.Size’ object is not callable )
A:

 seq_len, feature_dim = x.size(0), x.size(1)

表示一个数据特征的长度以及维度。维度与39-dim MFCC有关,是已经处理好的。。

1.4 view和permute

Q:啥意思,菜鸡落泪

  x = x.view(seq_len, concat_n, feature_dim).permute(1, 0, 2) 

view函数的作用为重构张量的维度

b = a.permute(0,2 ,1) 将a的维度索引1和维度索引2交换位置

import torch
x=torch.tensor([1,2,3,4,5,6,7,8,9,10,11,12])
print(x.view(2,6))
print(x.view(2,3,2))
print(x.view(2,3,2)).permute(1, 0, 2) 
#(2,3,2)第一项和第二项换参数
变为(322
tensor([[ 1,  2,  3,  4,  5,  6],
        [ 7,  8,  9, 10, 11, 12]])   
tensor([[[ 1,  2],
         [ 3,  4],
         [ 5,  6]],

        [[ 7,  8],
         [ 9, 10],
         [11, 12]]])
tensor([[[ 1,  2],
         [ 7,  8]],

        [[ 3,  4],
         [ 9, 10]],

        [[ 5,  6],
         [11, 12]]])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值