基于PyTorch框架实现深度学习之numpy基础

文章目录

前言

一、Numpy简介

二、Numpy使用

1.从已有数据中创建数组

2.利用random模块生成数组

3.创建特定形状的多维数组

 4.利用arange、linspace函数生成数组

 5.获取元素

 6.Numpy的算术运算

 7.合并数组

8.批量处理

总结


前言

近期在摸索深度学习,本系列博客将会围绕基于PyTorch框架实现算法网络,后续中所谈到的内容均来自有关资料书籍,予以记录与诸君分享,当然也欢迎大家批评指正。


一、Numpy简介

在机器学习和深度学习中,图像、声音、文本等输入数据最终都要转换 为数组或矩阵。如何有效地进行数组和矩阵的运算?这就需要充分利用 Numpy。Numpy是数据科学的通用语言,而且与PyTorch关系非常密切,它 是科学计算、深度学习的基石。尤其对PyTorch而言,其重要性更加明显。 PyTorch中的Tensor与Numpy非常相似,它们之间可以非常方便地进行转 换,故此掌握好Numpy是掌握好Pytorch的重要基础。

二、Numpy使用

1.从已有数据中创建数组

直接对Python的基础数据类型(如列表、元组等)进行转换来生成 ndarray:

1)将列表转换成ndarray:

import numpy as np

#将列表转换成ndarray:
lst1 = [3.14, 2.17, 0, 1, 2]  #注意列表有逗号
nd1 = np.array(lst1)
print(nd1)  # [3.14 2.17 0. 1. 2. ]#数组没有逗号
print(type(nd1))  # <class 'numpy.ndarray'>

2)嵌套列表可以转换成多维ndarray:

lst2 = [[3.14, 2.17, 0, 1, 2], [1, 2, 3, 4, 5]]  #注意这里是二维,一维可以看作表格中的一行,二维则是两行
nd2 = np.array(lst2)
print(nd2)  # [[3.14 2.17 0. 1. 2. ] # [1. 2. 3. 4. 5. ]]
print(type(nd2)) # <class 'numpy.ndarray'>

注:如果把上面示例中的列表换成元组也同样适用。

2.利用random模块生成数组

在深度学习中,我们经常需要对一些参数进行初始化,因此为了更有效 地训练模型,提高模型的性能,有些初始化还需要满足一定的条件,如满足 正态分布或均匀分布等。这里介绍了几种常用的方法,如表1-1所示列举了 np.random模块常用的函数。

 下面来看一些函数的具体使用:

nd3 = np.random.random([3, 3])
print(nd3)
# [[0.43007219 0.87135582 0.45327073] 
# [0.7929617 0.06584697 0.82896613] 
# [0.62518386 0.70709239 0.75959122]] 
# print("nd3的形状为:",nd3.shape) # nd3的形状为: (3, 3)

#为了每次生成同一份数据,可以指定一个随机种子,使用shuffle函数打乱生成的随机数
nd4 = np.random.randn(2, 3)
print(nd4)
np.random.shuffle(nd4)
print("随机打乱后数据:")
print(nd4)
print(type(nd4))
# [[-0.23042745  0.67994083 -1.45989658]
#  [ 1.56310165 -1.07267341  0.54721811]]
# 随机打乱后数据:
# [[ 1.56310165 -1.07267341  0.54721811]
#  [-0.23042745  0.67994083 -1.45989658]]
# <class 'numpy.ndarray'>

3.创建特定形状的多维数组

参数初始化时,有时需要生成一些特殊矩阵,如全是0或1的数组或矩 阵,这时我们可以利用np.zeros、np.ones、np.diag来实现,具体函数如下表所示

下面通过几个示例说明:

# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值