栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

动手学习深度学习:遇到的一些函数意思(1)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动手学习深度学习:遇到的一些函数意思(1)

torch.normal()的用法 该函数原型如下:
normal(mean, std, *, generator=None, out=None)

该函数返回从单独的正态分布中提取的随机数的张量,该正态分布的均值是mean,标准差是std。

用法如下:我们从一个标准正态分布N~(0,1),提取一个2x2的矩阵

torch.normal(mean=0.,std=1.,size=(2,2))

我们也可以让每一个值服从不同的正态分布,我们还是生成2x2的矩阵:

torch.normal(mean=torch.arange(4.),std=torch.arange(1.,0.6,-0.1)).reshape(2,2)

期望值也就是均值μ=0,即曲线图象对称轴为Y轴,标准差σ=1条件下的正态分布,记为N(0,1)。

标准的正太分布

均值和标准差求解 计算均值。

把所有数值相加,再除以总体大小:

  • 均值 (μ) = ΣX/N,这里的 Σ 是求和(加法)符号, xi 是每个单一数值,而N则是总体大小。
  • 在上例中,均值 μ 就是 (12+55+74+79+90)/5 = 62。

标准差

**计算标准差。**它表征总体的分布情况。 标准差 = σ = sqrt [(Σ((X-μ)^2))/(N)].

  • 对以上给出的例子,标准差是 sqrt[((12-62)^2 + (55-62)^2 + (74-62)^2 + (79-62)^2 + (90-62)^2)/(5)] = 27.4。(注意,如果要求样本的标准差,则应除以n-1,即样本大小减1。

torch.matmul()用法介绍

torch.matmul是tensor的乘法,输入可以是高维的。
当输入是都是二维时,就是普通的矩阵乘法,和tensor.mm函数用法相同。

如果是二维的矩阵相乘,那就跟平时咱们做的矩阵乘法一样:
a = torch.tensor([[1,2], [3,4]])

a
Out[31]: 
tensor([[1, 2],
        [3, 4]])
        
b = torch.tensor([[2,2], [3,4]])

b
Out[33]: 
tensor([[2, 2],
        [3, 4]])
        
torch.matmul(a, b)
Out[34]: 
tensor([[ 8, 10],
        [18, 22]])
        
torch.matmul(a, b).shape
Out[35]: torch.Size([2, 2])

如果维度更高呢?前面的维度必须要相同,然后最里面的两个维度符合矩阵相乘的形状限制:i×j,j×k。
a = torch.tensor([[[1,2], [3,4], [5,6]],[[7,8], [9,10], [11,12]]])

a
Out[37]: 
tensor([[[ 1,  2],
         [ 3,  4],
         [ 5,  6]],
        [[ 7,  8],
         [ 9, 10],
         [11, 12]]])
         
a.shape
Out[38]: torch.Size([2, 3, 2])

b = torch.tensor([[[1,2], [3,4]],[[7,8], [9,10]]])
b
Out[40]: 
tensor([[[ 1,  2],
         [ 3,  4]],
        [[ 7,  8],
         [ 9, 10]]])
         
b.shape
Out[41]: torch.Size([2, 2, 2])

torch.matmul(a, b)
Out[42]: 
tensor([[[  7,  10],
         [ 15,  22],
         [ 23,  34]],
        [[121, 136],
         [153, 172],
         [185, 208]]])

# a 和 b 的最外面的维度都是 2,相同。
# 最里面两个维度分别是 3 × 2 和 2 × 2,那么乘完以后就是 3 × 2
torch.matmul(a, b).shape
Out[43]: torch.Size([2, 3, 2])

当输入是都是二维时,就是普通的矩阵乘法,和tensor.mm函数用法相同。

当输入有多维时,把多出的一维作为batch提出来,其他部分做矩阵乘法。

下面看一个两个都是3维的例子。


reshape(-1,1)

大意是说,数组新的shape属性应该要与原来的配套,如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。

举几个例子或许就清楚了,有一个数组z,它的shape属性是(4, 4)

z = np.array([[1, 2, 3, 4],
          [5, 6, 7, 8],
          [9, 10, 11, 12],
          [13, 14, 15, 16]])
z.shape
(4, 4)
z.reshape(-1)
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])
z.reshape(-1,1)
 array([[ 1],
        [ 2],
        [ 3],
        [ 4],
        [ 5],
        [ 6],
        [ 7],
        [ 8],
        [ 9],
        [10],
        [11],
        [12],
        [13],
        [14],
        [15],
        [16]])
 
 z.reshape(-1, 2)
 array([[ 1,  2],
        [ 3,  4],
        [ 5,  6],
        [ 7,  8],
        [ 9, 10],
        [11, 12],
        [13, 14],
        [15, 16]])
 
shuffle()函数的使用

shuffle()函数是打乱序列里面的元素,并随机排列的。

import random

random.shuffle (alist )

注意下:alist可以使是一个列表,也可以是个序列。shuffle()是不能直接访问的,需要导入random模块

具体例子:

import random
alist = [1,2,3,4,5]
random.shuffle(alist)
print(alist)

#[3, 5, 4, 2, 1] #---->结果都是随机的
indices = list(range(10))
indices = list(range(10)) 
indices
 #输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号