使用Pytorch处理多维特征的输入

简介: 下图这个预测一个人在一年之后得糖尿病的概率的例子,这个时候我们的输入将会有很多的指标。你可以把它看成是我们体检的各种值。最后一排的外代表了他是否会得糖尿病。

下图这个预测一个人在一年之后得糖尿病的概率的例子,这个时候我们的输入将会有很多的指标。你可以把它看成是我们体检的各种值。最后一排的外代表了他是否会得糖尿病。


67eb8d67ae9846db9936db3c37fabd9c.png


那么多维的特征输入应该怎么办呢?我们就需要把每一个特征x付以相应的权重。在进行逻辑回归时,把每一个维度的x乘相应的权值的和加上一个偏置量,送入sigema函数进行二分类,就像这样:


43da4e38e2b04aaf85fdcb655dd3d63c.png


当然在真正编程的时候是以矩阵乘法的形式进行运算的,也就是一次能算多个样本的值,具体的推导过程大家可以看刘老师的教学视频,这里就不写了。根据数据集,我们需要构造一个从八维到一维的计算图,就是这样:


17f84ec3e4ee44729204f1abcd21ffb7.png


import numpy as np
import torch
from torch import nn
xy=np.loadtxt("CIFAdata/diabetes.csv.gz",delimiter=",",dtype=np.float32)
x_data=torch.from_numpy(xy[:,:-1])
print(x_data)
#[-1] 表示要拿出一个矩阵
y_data=torch.from_numpy(xy[:,[-1]])
print(y_data)
class Model(nn.Module):
    def __init__(self):##构造函数
        super(Model, self).__init__()
        #8维转为6维
        self.linear1 = torch.nn.Linear(8,6)
        self.linear2 = torch.nn.Linear(6, 4)
        self.linear3 = torch.nn.Linear(4, 1)
        #激活函数
        # self.active=torch.nn.ReLU()
        #因为他里边也没有权重需要更新,所以要一个就行了,单纯的算个数
        self.sigmoid = torch.nn.Sigmoid()
    def forward(self,x):##构建一个计算图,就像上面图片画的那样
        x = self.sigmoid(self.linear1(x))
        x = self.sigmoid(self.linear2(x))##将上面一行的输出作为输入
        x = self.sigmoid(self.linear3(x))
        return x
model=Model()##实例化模型
criterion=torch.nn.BCELoss(size_average=True)
#model.parameters()会扫描module中的所有成员,
#                  如果成员中有相应权重,那么都会将结果加到要训练的参数集合上
optimizer=torch.optim.SGD(model.parameters(),lr=0.1)
for epoch in range(100):
    y_pred=model(x_data)
    loss=criterion(y_pred,y_data)
    print(epoch,loss.item())
    #反向传播
    optimizer.zero_grad()
    loss.backward()
    #Updata
    optimizer.step()
# 如果想查看某些层的参数,以神经网络的第一层参数为例,可按照以下方法进行。
# 第一层的参数:
layer1_weight = model.linear1.weight.data
layer1_bias = model.linear1.bias.data
print("layer1_weight", layer1_weight)
print("layer1_weight.shape", layer1_weight.shape)
print("layer1_bias", layer1_bias)
print("layer1_bias.shape", layer1_bias.shape)


目录
相关文章
|
7月前
|
机器学习/深度学习 PyTorch 算法框架/工具
使用PyTorch处理多维特征输入的完美指南
使用PyTorch处理多维特征输入的完美指南
使用PyTorch处理多维特征输入的完美指南
|
机器学习/深度学习 资源调度 PyTorch
PyTorch实现随机傅里叶特征映射的示例代码
这里我们定义了一个名为RFFeatureMap的类,它继承自PyTorch的nn.Module类。该类接受输入维度input_dim、输出维度output_dim和高斯核参数sigma作为参数。在初始化函数中,我们生成了随机正弦和余弦函数的系数omega和随机偏移量b,并将它们保存在该类的实例变量中。 在前向函数中,我们首先将输入x转换为形状为(batch_size, input_dim)的张量。然后我们通过点乘x和omega的转置,加上偏移量b,并应用余弦函数,计算出特征映射z。最后我们返回特征映射z。
394 0
|
机器学习/深度学习 数据可视化 PyTorch
使用Pytorch和Matplotlib可视化卷积神经网络的特征(下)
使用Pytorch和Matplotlib可视化卷积神经网络的特征
356 0
使用Pytorch和Matplotlib可视化卷积神经网络的特征(下)
|
机器学习/深度学习 数据可视化 自动驾驶
使用Pytorch和Matplotlib可视化卷积神经网络的特征(上)
使用Pytorch和Matplotlib可视化卷积神经网络的特征
202 0
使用Pytorch和Matplotlib可视化卷积神经网络的特征(上)
|
机器学习/深度学习 并行计算 PyTorch
【PyTorch基础教程7】多维特征input
之前的一维特征input,只有一个x和权重w相乘,多维的情况则是xi依次与逐个wi相乘(ps:每行x都这样算,每行即每个样本),可以用向量形式表示:
174 0
【PyTorch基础教程7】多维特征input
|
2月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
384 2
|
23天前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
42 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
2月前
|
机器学习/深度学习 自然语言处理 监控
利用 PyTorch Lightning 搭建一个文本分类模型
利用 PyTorch Lightning 搭建一个文本分类模型
75 8
利用 PyTorch Lightning 搭建一个文本分类模型
|
2月前
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
131 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
|
3月前
|
机器学习/深度学习 PyTorch 调度
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型
在深度学习中,学习率作为关键超参数对模型收敛速度和性能至关重要。传统方法采用统一学习率,但研究表明为不同层设置差异化学习率能显著提升性能。本文探讨了这一策略的理论基础及PyTorch实现方法,包括模型定义、参数分组、优化器配置及训练流程。通过示例展示了如何为ResNet18设置不同层的学习率,并介绍了渐进式解冻和层适应学习率等高级技巧,帮助研究者更好地优化模型训练。
215 4
在Pytorch中为不同层设置不同学习率来提升性能,优化深度学习模型