本文介绍了PyTorch上搭建简单神经网络实现回归和分类的示例,分享给大家,具体如下:
<强> 1。安装方法强>
登录PyTorch官网http://pytorch.org,可以看到以下界面:
conda安装pytorch torchvision - c soumith
<强> 2。Numpy与火炬强>
torch_data=https://www.yisu.com/zixun/torch.from_numpy (np_data)可以将numpy(数组)格式转换为火炬(张量)格式;torch_data.numpy()又可以将火炬的张量格式转换为numpy格的阵列式。注意火炬的张量和numpy的数组会共享他们的存储空间,修改一个会导致另外的一个也被修改。
对于1维(一维)的数据,numpy是以行向量的形式打印输出,而火炬是以列向量的形式打印输出的。
其他例如罪恶,因为,abs,意味着等numpy中的函数在火炬中用法相同。需要注意的是,numpy中np。matmul(数据、数据)和data.dot(数据)矩阵相乘会得到相同结果,火炬中火炬。毫米(张量,张量)是矩阵相乘的方法,得到一个矩阵,tensor.dot(张量)会把张量转换为1维的张量,然后逐元素相乘后求和,得到与一个实数。
<强>相关代码:强>
进口火炬 进口numpy np np_data=https://www.yisu.com/zixun/np.arange (6) .reshape ((2、3) torch_data=torch.from_numpy (np_data) #将numpy(数组)格式转换为火炬(张量)格式 tensor2array=torch_data.numpy () print (‘\ nnumpy数组:\ n’, np_data, torch_data,‘\ ntorch张量: “\ ntensor数组:\ n”, tensor2array, )#火炬数据格式在打印的时候前后自动添加换行符 # abs data=https://www.yisu.com/zixun/[1、2、2、2] 张量=torch.FloatTensor(数据) print(“\小伙子”, “\ nnumpy: \ n”, np.abs(数据), ‘\ ntorch:’, torch.abs(张量) )# 1维的数据,numpy是行向量形式显示,火炬是列向量形式显示 #罪 打印( ‘\ nsin’, “\ nnumpy: \ n”, np.sin(数据), ‘\ ntorch:’, torch.sin(张量) ) #的意思 打印( ‘\ nmean’, ‘\ nnumpy:’, np.mean(数据), ‘\ ntorch:’, torch.mean(张量) ) #矩阵相乘 data=https://www.yisu.com/zixun/[[1、2], [3,4]] 张量=torch.FloatTensor(数据) print (“\ nmatrix乘法(matmul)”, \ nnumpy: \ n、np。matmul(数据、数据), “\ ntorch:”,火炬。毫米(张量,张量) ) data=https://www.yisu.com/zixun/np.array(数据) print (“\ nmatrix乘法(点)”, “\ nnumpy: \ n”, data.dot(数据), ‘\ ntorch:’, tensor.dot(张量) )
<强> 3。变量强>
PyTorch中的神经网络来自于autograd包,autograd包提供了张量所有操作的自动求导方法。
autograd。变量这是这个包中最核心的类。可以将变量理解为一个装有张量的容器,它包装了一个张量,并且几乎支持所有的定义在其上的操作,一旦完成运算,便可以调用.backward()来自动计算出所有的梯度。也就是说只有把张量置于变量中,才能在神经网络中实现反向传递,自动求导等运算。
可以通过属性. data来访问原始的张量,而关于这一变量的梯度则可通过.grad属性查看。
<强>相关代码:强>
进口火炬 从火炬。autograd导入变量 张量=torch.FloatTensor ([[1、2], [3,4]]) 变量=变量(张量,requires_grad=True) #打印展示变量类型 打印(张量) 打印(变量) t_out=torch.mean(张量*张量)#每个元素的^ 2 v_out=torch.mean(变量*变量) 打印(t_out) 打印(v_out) v_out.backward() #变量的误差反向传递 #比较变量的原型和研究生属性,数据属性及相应的numpy形式 打印(变量:\ n,变量) # v_out=1/4 *总和(变量*变量)这是计算图中的v_out计算步骤 #针对于v_out的梯度就是,d (v_out)/d(变量)=1/4 * 2 *变量=变量/2 打印(“变量。研究生:\ n ', variable.grad) #变量的梯度 打印(“变量。数据:\ n ', variable.data) #变量的数据 打印(variable.data.numpy()) #变量的数据的numpy形式PyTorch上搭建简单神经网络实现回归和分类的示例