深度再学习第二篇


前言

本篇记录内容比较杂,皆是学习过程中遇到的各种小问题。


一、相乘

<wx> == torch.dot(w,x),内积
在这里插入图片描述

二、torch的某些用法

1.torch.reshape(1,1)

reshape(-1,1)中的-1代表无意义
reshape(-1,1)代表将二维数组重整为一个一列的二维数组
reshape(1,-1)代表将二维数组重整为一个一行的二维数组
reshape(-1,n)代表将二维数组重整为n列的二维数组
reshape(n,-1)代表将二维数组重整为n行的二维数组

2.torch.normal()

代码如下(示例):

X = torch.normal(0,1,(num_examples,len(w)))

X=torch.normal(mean=1,std=2,size=(3,4))

生成一个符合正态分布的张量,可以设置均值,标准差,形状

3.torch.matmal()

代码如下(示例):

y = torch.matmul(X,w) +b

多维矩阵相乘,如果是两个二维矩阵相乘就相当于torch.mm

三、定义data_iter()获取批次数据

1.random.shuffle()

把列表中的元素打乱顺序,但不会生成新的列表

2.yield

Python中的关键字,生成器,生成一个抛出来一个,相当于是一个return,但是return一出现他就停了,所以yield在这里可以一边执行一边往外抛出

3.代码

# 数据迭代器,取数据用
def data_iter(batch_size, features, labels):
    num_examples = len(features)
    #这里要把他变成列表是因为下面需要用函数打乱顺序
    indices = list(range(num_examples))
    # 这些样本是随机读取的,没有特定的顺序
    random.shuffle(indices)
    for i in range(0, num_examples, batch_size):
        # batch_indices = torch.tensor(
        #     indices[i: min(i + batch_size, num_examples)])
        # 这里可以看下面的例子
        batch_indices = indices[i: min(i + batch_size, num_examples)]
        # 生成器,生成一个抛出来一个,相当于是一个return,但是return一出现他就停了,所以yield在这里可以一边执行一边往外抛出
        yield features[batch_indices], labels[batch_indices]

四、Python中的*

除了乘法这一用途外,*在Python中常被用于解包,具体用途如下

# 对*解包作用的实验
a = [1,2,3,4,5]
b = [6,7,8,9,0]
print((a,b))
print('-'*50)
print(*(a,b))
([1, 2, 3, 4, 5], [6, 7, 8, 9, 0])
--------------------------------------------------
[1, 2, 3, 4, 5] [6, 7, 8, 9, 0]

(a,b)将ab两个列表组成一个元组,而加上*可以将该元组拆成两个列表

五、TensorDataset&DataLoader

# TensorDataset:把输入的两类数据进行一 一对应;DataLoader:重新排序
    dataset = data.TensorDataset(*data_array)
    return data.DataLoader(dataset,batch_size,shuffle=is_Trian)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值