《PyTorch深度学习实践》学习笔记:处理多维特征的输入

本文介绍了如何在PyTorch中处理多维特征输入,通过实例展示了处理糖尿病数据集分类的过程。文章讨论了神经网络的非线性变换和激活函数的作用,如Sigmoid、ReLU和Softplus,并通过实验比较了它们对损失函数下降的影响。此外,还提供了完整的代码示例。
摘要由CSDN通过智能技术生成


一、多维特征计算

在这里插入图片描述
pytorch提供的sigmoid函数是一种向量函数。也就是说torch.exp([x1 x2 x3]) = [e^x1 e^x2 e^x3]

采用Mini-Batch的形式可以将方程运算转换矩阵的运算。转化的原因是向量化的运算可以利用计算机GPU/CPU的并行运算的能力来提高整个运算的速度。如果使用for循环来写这种运算,计算是相当慢的。
在这里插入图片描述
此时我们可以编写这个向量运算的模型代码:

class Model(nn.Module):
    def __init__(self):
        super(Logisticmodel, self).__init__()
        self.linear = nn.Linear(8,1)      # 只需要修改这里的维度就变成了多维计算
 
    def forward(self,x):
        y_pred = self.linear(x)
        y_pred = torch.sigmoid(y_pred)
        return y_pred	
model = Model()

上述我们是通过一层的网络,实现了8-D到1-D的转变,我们还可以通过多层网络实现从8D-1D,比如我们可以8D-6D-2D-1D这样多层网络实现。对于多层网络的计算,本质上还是通过矩阵的运算实现。对于实际问题中具体每一层网络的参数怎么设置,这是一个超参数搜索的问题,通过不断地尝试去发现哪个参数在测试集上表现的好。
在这里插入图片描述
神经网络的本质:就是寻找一种最优的非线性的空间变换函数。而这种非线性的空间变换函数是通过多个线性变换层,通过找到最优的权重,组合起来的模拟的一种非线性的变化。

其中在网络的中间会使用Sigmoid函数,因为激活函数(Sigmoid函数)可以将线性变换增加一些非线性的因子,这样我们就可以拟合一些非线性的变换。(如果每一层的神经网络只是不断的叠加线性函数的话,最终的函数还会只是一个线性函数。)

(神经网络并不是学习能力越强越好,学习能力太强,会学习数据集中的一些噪声,并不利于优化模型,学习的太强会导致过拟合,从而可以看到泛化能力弱。)


二、处理糖尿病数据集分类

数据集:
在这里插入图片描述
其中X1-X8代表糖尿病的一系列指标,Y代表一年后糖尿病是否会加重。

糖尿病数据集:提取链接 提取码: dpfj

1. 接下来首先应该读取数据集中的数据:

xy =  np.loadtxt('diabetes.csv.gz',delimiter=',',dtype=np.float32)
x_data = torch.from_numpy(xy[:,:-1])   # 所有行除最后一列
y_data = torch.from_numpy(xy[:,[-1]])  # 所有行最后一列
print(x_data.type()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值