刘二大人-Pytorch深度学习实践-多维特征输入-笔记与作业07

多维特征的输入(示例:疾病风险预测)

  • 其实前面已经提到了,线性模型中的输入输出数据集可以不在是一个具体的数,而是可以是多维的矩阵

  • 采用矩阵加广播机制,可以不再使用for循环来训练,减轻代码量

  • 而此时可以回答复杂神经网络的问题,它中间有很多层,每层都是一次线性回归,但是层与层之间要加上激活函数

  • 当然你也可以手动的增加层数,比如你的输入集是8维的,输出集是一维的,直接使用(8 * 1)的权重当然可以,但是这样泛化能力不强。所以可以在中间加上几层神经网络,比如8–10–6–4—2–1,不但可以降维,甚至可以升维。

    image-20251015201229862

示例代码

主要训练代码和逻辑斯蒂回归一致,主要变化在于数据集的准备和构造模型上

data = np.loadtxt('DataSet/diabetes.csv.gz', delimiter=',', dtype=np.float32)
x_data = torch.from_numpy(data[:, :-1]) # 所有行,除了最后一列
y_data = torch.from_numpy(data[:, [-1]]) # 所有行,最后一列,加[]的原因是防止numpy自动把矩阵降级成向量

class MDIModel(nn.Module):
    def __init__(self):
        super(MDIModel, self).__init__()
        self.linear1 = nn.Linear(8, 6)
        self.linear2 = nn.Linear(6, 4)
        self.linear3 = nn.Linear(4, 1)
        self.sigmoid = nn.Sigmoid()
        self.relu = nn.ReLU()

    def forward(self, x):
        # 注意:连续使用 Sigmoid 可能会导致梯度消失,一般最后一层才用逻辑斯蒂
        # 现代网络中内部层通常使用 ReLU
        x = self.relu(self.linear1(x))
        x = self.relu(self.linear2(x))
        x = self.sigmoid(self.linear3(x))
        return x

image-20251015205313987

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值