6、处理多维特征的输入

(1)在实际应用中,我们会遇到多个输入、一个输出的分类问题,如下图所示糖尿病数据集,x1~x8表示糖尿病的相关指标,Y表示第二年患糖尿病的概率。

 (2)为了处理多维特征的输入,我们需要用多维度的Logistic回归模型,解决的也是二分类问题

(3)mini-batch:一次运行一个mini-batch,更新一次梯度

 (4)数据集为上述糖尿病数据集。按照神经网络的思想,可以将8维的输入变为6维的输出,6维的输入变为4维的输出,4维的输入变为1维的输出,模型定义如下:

 (5)损失函数使用解决二分类问题的交叉熵损失函数,优化器使用SGD随机梯度下降更新权重

(6)代码实现:

import torch
import  numpy as np
#delimiter分隔符
xy = np.loadtxt('diabetes.csv.gz', delimiter=',', dtype=np.float32)
#最后一列不要
x_data = torch.from_numpy(xy[:,:-1])
#只要最后一列,加[]保证是矩阵,不是向量
y_data = torch.from_numpy(xy[:, [-1]])

class Model(torch.nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.linear1 = torch.nn.Linear(8, 6)
        self.linear2 = torch.nn.Linear(6, 4)
        self.linear3 = torch.nn.Linear(4, 1)
        # 这个模块中没有参数,不需要训练
        self.sigmoid = torch.nn.Sigmoid()
        #self.activate = torch.nn.RuLU()

    def forward(self, x):
        x = self.sigmoid(self.linear1(x))
        x = self.sigmoid(self.linear2(x))
        x = self.sigmoid(self.linear3(x))
        # x = self.activate(self.linear1(x))
        # x = self.activate(self.linear2(x))
        # x = self.activate(self.linear3(x))
        return x

model = Model()
#二分类损失函数
criterion = torch.nn.BCELoss(size_average=True)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

for epoch in range(100):
    #Forward
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    print(epoch, loss.item())

    #Backward
    optimizer.zero_grad()
    loss.backward()
    #Update
    optimizer.step()

结果输出:

 

(7)可选用其他激活函数测试

 

### 回答1: LSTM(长短期记忆网络)是一种常用于处理序列数据的循环神经网络。在多维特征输入LSTM中,我们将多个维度的特征同时输入到网络中进行处理。 首先,多维特征输入LSTM中的输入张量需要满足三维形状(batch_size, sequence_length, input_dim),其中batch_size表示每个batch中的样本数量,sequence_length表示每个序列的长度,input_dim表示每个时间步的输入维度。 在多维特征输入LSTM中,我们可以将每个时间步的输入特征作为一个维度来表示。例如,假设我们有一个时间序列数据集,每个时间步有3个特征维度,输入数据可以表示为以下形式的张量: [ [样本1的特征1, 样本1的特征2, 样本1的特征3], [样本2的特征1, 样本2的特征2, 样本2的特征3], ... ] 然后,我们可以将这个输入张量输入LSTM网络中进行处理LSTM网络能够自动学习序列中的长期依赖关系,并且对不同时刻的输入特征进行联合建模。 在LSTM中,每个时间步的输入特征会被分别输入输入门、遗忘门和输出门进行处理,并通过各个门控制信息的输入、遗忘和输出。通过这种方式,LSTM能够较好地处理多维特征输入,并且在建模序列数据时具有较好的表达能力。 总之,多维特征输入LSTM是将多个维度的特征同时输入LSTM网络中进行处理的一种方式。通过LSTM网络对序列数据中的长期依赖关系进行建模,可以提取出特征之间的关联信息,从而为后续的任务(如分类、预测等)提供更准确的结果。 ### 回答2: 在LSTM(长短期记忆网络)中,多维特征输入是指将具有不止一维特征的数据输入到模型中进行训练和预测。 通常情况下,传统的LSTM模型接受的输入是一维时间序列数据,如自然语言处理中的文本数据或时间序列数据。然而,在实际应用中,很多场景下我们需要考虑多个特征维度,比如图像数据中的RGB三个通道或者其他非时序多维数据。 为了处理这些多维特征输入,可以采用以下策略: 1. 通道堆叠(Channel stacking):将多个特征维度的数据按通道方式堆叠起来作为输入。比如在图像数据中,可以将RGB三个通道作为网络的输入。 2. 展平(Flattening):将多维特征数据展平为一维,然后输入LSTM模型。这种方法将多维数据转化为一维时间序列数据,适用于某些模型仅接受一维数据的情况。 3. 并行处理(Parallel processing):将每个特征维度的数据分别输入到不同的LSTM模块中进行处理,然后将它们的输出进行合并。这种方法可以同时考虑多个特征维度的信息。 4. 多输入模型(Multi-input model):为每个特征维度设计独立的LSTM模块,并将它们的输出进行合并或级联。这种方法可以同时对每个特征维度进行独立处理,并学习它们之间的关联。 无论采用哪种策略,多维特征输入的关键在于设计合适的数据表示和合理的模型结构,以确保网络能够充分利用多个特征维度的信息,并提高模型的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值