一篇文章入门机器学习与PyTorch张量
机器学习机器学习常见算法分类机器学习方式有监督学习无监督学习半监督学习强化学习。机器学习建模流程机器学习建模流程获取数据、数据基本理、特征工程、机器学习训练模型、模型评估模型拟合问题拟合用在机器学习领域用来表示模型对样本点的拟合情况欠拟合模型在训练集上表现很差、在测试集表现也很差过拟合模型在训练集上表现很好、在测试集表现很差泛化 具体的、个别的扩大为一般的能力深度学习深度学习区别于机器学习的显著特征是学习过程不可观测深度学习入门顺序PyTorch中的Tensor张量 ANN人工神经网络 CNN卷积神经网络 RNN循环神经网络Tensor张量PyCharm快捷键1、altshift鼠标左键纵向复制2、鼠标选中报错地方altenter自动导包3、alt1:左侧隐藏 alt4右侧隐藏4、ctrlaltinsert新建python文件5、altshift↓内容下移一行6、shiftf6:重命名张量的创建张量创建基本方式torch.tensor 根据指定数据创建张量创建全1、全0、内容全一样的张量创建线性和随机张量torch.arange(起始值终止值步长)#【包左不包右】torch.linspace(起始值终止值元素个数)#【等差数列】torch.manual_seed()#【设置随机种子】torch.rand(size(2,3))#【设置指定形状的均匀分布随机张量】torch.randn(size(2,3))# 【设置指定形状的正态分布随机张量】torch.randint(最小值最大值size(2,3))datetorch.tensor([1,4,,5,6,8],dtypetorch.float)t2date.type(torch.int16)张量元素类型转换张量的类型转换1、使用 from_numpy 可以将 ndarray 数组转换为 Tensor默认共享内存使用 copy 函数避免共享。2、使用 torch.tensor 可以将 ndarray 数组转换为 Tensor默认不共享内存。# 张量 numpyt1torch.tensor([1,2,3,4,5])n1t1.numpy()张量数值计算张量基本运算张量点乘、乘法运算张量运算函数PyTorch 为每个张量封装很多实用的计算函数均值平方根求和指数计算对数计算等等张量索引操作简单行列索引列表索引范围索引布尔索引依据文字的前后顺序看函数时从里到外看多维索引张量形状操作1、reshape 函数可以在保证张量数据不变的前提下改变数据的维度将其转换成指定的形状。2、squeeze 函数删除形状为 1 的维度降维unsqueeze 函数添加形状为1的维度升维。3、transpose 函数可以实现交换张量形状的指定维度, 例如: 一个张量的形状为 (2, 3, 4) 可以通过 transpose 函数把 3 和 4 进行交换, 将张量的形状变为 (2, 4, 3) 。 permute 函数可以一次交换更多的维度。4、view 函数也可以用于修改张量的形状只能用于修改连续的张量。在 PyTorch 中有些张量的底层数据在内存中的存储顺序与其在张量中的逻辑顺序不一致view 函数无法对这样的张量进行变形处理例如: 一个张量经过了 transpose 或者 permute 函数的处理之后就无法使用 view 函数进行形状操作。# 获取张量维度大小张量.shape[0]#【第0维大小】张量.shape[1]#【第1维大小】# 1、使用 reshape 函数修改张量形状datatorch.tensor([[10,20,30],[40,50,60]])new_datadata.reshape(1,6)print(new_data.shape)#torch.Size([1, 6])#2、使用squeeze 函数降维与unsqueeze 函数升维mydata1torch.tensor([1,2,3,4,5])mydata2mydata1.unsqueeze(dim0)print(在0维度上 拓展维度,mydata2,mydata2.shape)#1*5mydata3mydata1.unsqueeze(dim1)print(在1维度上 拓展维度,mydata3,mydata3.shape)#5*1mydata4mydata1.unsqueeze(dim-1)print(在-1维度上 拓展维度,mydata4,mydata4.shape)#5*1mydata5mydata4.squeeze()print(压缩维度,mydata5,mydata5.shape)#1*5# 3、使用transpose 函数与permute 函数datatorch.tensor(np.random.randint(0,10,[3,4,5]))print(data shape:,data.size())# 3.1 交换1和2维度mydata2torch.transpose(data,1,2)print(mydata2.shape---,mydata2.shape)# 3.2 将data 的形状修改为 (4, 5, 3), 需要变换多次mydata3torch.transpose(data,0,1)mydata4torch.transpose(mydata3,1,2)print(mydata4.shape---,mydata4.shape)# 3.3 使用 permute 函数将形状修改为 (4, 5, 3)# 3.3.1 方法1mydata5torch.permute(data,[1,2,0])print(mydata5.shape---,mydata5.shape)# 3.3.2 方法2mydata6data.permute([1,2,0])print(mydata6.shape---,mydata6.shape)#4、使用is_contiguous()判断是否为连续张量使用 contiguous 函数转换为连续的张量再使用 view 函数# 使用 transpose 函数修改形状datatorch.tensor([[10,20,30],[40,50,60]])mydata3torch.transpose(data,0,1)mydata4mydata3.contiguous().view(2,3)张量拼接操作1、torch.cat()函数可以将多个张量根据指定的维度拼接起来不改变维度数。2、torch.stack()函数会在一个新的维度上连接一系列张量这会增加一个新维度并且所有输入张量的形状必须完全相同。注意行列宽从外层到内层想象三维张量时建立空间感【行–左右列–上下宽–里外】自动微分模块1、PyTorch不支持向量张量对向量张量的求导,只支持标量张量对向量张量的求导x如果是张量,y必须是标量(一个值)才可以进行求导2、计算梯度: y.backward(), y是一个标量3、获取x点的梯度值: x.grad, 会累加上一次的梯度值4、梯度下降法公式: w w - r*grad (r是学习率, grad是梯度值)5、清空上一次的梯度值: x.grad.zero_()6、梯度计算不能将自动微分的张量转换成numpy数组会发生报错可以通过detach()方法实现案例-演示自动微分真实应用场景
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2443122.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!