Multiple Dimension Input 处理多维特征的输入

简介: Multiple Dimension Input 处理多维特征的输入

6、Multiple Dimension Input 处理多维特征的输入

B站视频教程传送门:PyTorch深度学习实践 - 处理多维特征的输入

6.1 Revision

我们先来回顾一下回归分类

差别: 主要在于输出值

回归(Regressiom):y ∈ R

分类(Classification):y ∈ { } 离散的集合

6.2 Diabetes Dataset 糖尿病数据集

如果我们安装过sklearnpython编程安装sklearn),其中就包含糖尿病数据集,可以进入该目录(D:\Software\Anaconda\Lib\site-packages\sklearn\datasets\data)下查看,如下图所示:

6.3 Logistic Regression Model 逻辑斯蒂回归模型

由于这里的 x不再是简简单单的一维,而是 8维,所以应该看成下方两个矩阵相乘:

image.png

6.4 Mini-Batch(N samples)

import torch
class Liang(torch.nn.Module):
    def __init__(self):
        super(Liang, self).__init__()
        self.linear = nn.Linear(8, 1)
        self.sigmoid = torch.nn.Sigmoid()
    def forward(self, x):
        x = self.sigmoid(self.linear(x))
        return x
model = Liang()

6.5 Neural Network 神经网络

当输入8维,输出2维时:

self.linear = torch.nn.Linear(8, 2)

当输入8维,输出6维时:

self.linear = torch.nn.Linear(8, 6)

可以降维,可以升维,也可以一降(升)一升(降):

6.6 Diabetes Prediction 糖尿病预测

X1~X8:病人相应的指标

Y:一年后病情是否加重(预测)

6.6.1 Prepare Dataset

import numpy as np
xy = np.loadtxt('../data/diabetes.csv.gz', delimiter=',', dtype=np.float32)
x_data = torch.from_numpy(xy[:, :-1])  # 所有行,除了最后一列
y_data = torch.from_numpy(xy[:, [-1]])  # 所有行,最后一列 转为矩阵而不是向量

6.6.2 Define Model

6.6.3 Construct Loss and Optimizer

criterion = torch.nn.BCELoss(reduction='mean')
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)

6.6.4 Training Cycle

for epoch in range(100):
    # Forward
    y_pred = model(x_data) # This program has not use Mini-Batch for training. We shall talk about DataLoader later.
    loss = criterion(y_pred, y_data)
    print(epoch, loss.item())
    # Backward
    optimizer.zero_grad()
    loss.backward()
    # Update
    optimizer.step()

6.6.5 Activate function

神经网络中激活函数的可视化:https://dashee87.github.io/deep%20learning/visualising-activation-functions-in-neural-networks/

PyTorch文档:https://pytorch.org/docs/stable/nn.html#non-linear-activations-weighted-sum-nonlinearity

6.6.5 完整代码

import torch
import numpy as np
import matplotlib.pyplot as plt
xy = np.loadtxt('../data/diabetes.csv.gz', delimiter=',', dtype=np.float32)
x_data = torch.from_numpy(xy[:, :-1])  # 所有行,除了最后一列
y_data = torch.from_numpy(xy[:, [-1]])  # 所有行,最后一列 转为矩阵而不是向量
class Liang(torch.nn.Module):
    def __init__(self):
        super(Liang, 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()  # Sigmoid
        self.tanh = torch.nn.Tanh()
    def forward(self, x):
        x = self.tanh(self.linear1(x))
        x = self.tanh(self.linear2(x))
        x = self.sigmoid(self.linear3(x))
        return x
model = Liang()
criterion = torch.nn.BCELoss(reduction='mean')
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
epoch_list = []
loss_list = []
for epoch in range(100):
    # Forward
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    print(epoch, loss.item())
    epoch_list.append(epoch)
    loss_list.append(loss.item())
    # Backward
    optimizer.zero_grad()
    loss.backward()
    # Update
    optimizer.step()
plt.plot(epoch_list, loss_list)
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.title('Tanh')
plt.show()

目录
相关文章
W9
|
8月前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
703 2
|
10月前
|
运维 C# UED
C# 一分钟浅谈:异常处理的最佳实践
【9月更文挑战第5天】在软件开发中,异常处理对保证程序稳定性和用户体验至关重要。本文从基础概念入手,详细讲解C#中的异常处理策略,并通过代码示例说明如何有效实现异常管理。文章涵盖`try`、`catch`和`finally`块的使用,探讨常见问题如忽略异常和过度捕获,并提出最佳实践建议,如使用具体异常类型、记录异常信息及优雅地处理异常,助力开发者构建更健壮的应用程序。
491 1
|
8月前
|
机器学习/深度学习 自然语言处理 计算机视觉
【YOLOv11改进 - 注意力机制】 MHSA:多头自注意力(Multi-Head Self-Attention)
【YOLOv11改进 - 注意力机制】 MHSA:多头自注意力(Multi-Head Self-Attention)BoTNet是一种将自注意力机制引入ResNet的创新架构,通过在最后三个瓶颈块中用全局自注意力替换空间卷积,显著提升了图像分类、物体检测和实例分割的性能,同时减少了参数量和计算开销。在COCO实例分割和ImageNet分类任务中,BoTNet分别达到了44.4%的Mask AP和84.7%的Top-1准确率,超越了现有模型。
【YOLOv11改进 - 注意力机制】 MHSA:多头自注意力(Multi-Head Self-Attention)
|
传感器 资源调度 Shell
遥感物理基础(2)物体的发射与反射辐射特征
本文内容主要介绍地物的发射和反射辐射特征,通过名词解释与案例,认识地物特征与遥感影像成像的联系,结合实践理解晦涩难懂的原理
655 0
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:图神经网络(GNN)
使用Python实现深度学习模型:图神经网络(GNN)
886 1
|
12月前
|
机器学习/深度学习 编解码 计算机视觉
【YOLOv8改进- Backbone主干】BoTNet:基于Transformer,结合自注意力机制和卷积神经网络的骨干网络
【YOLOv8改进- Backbone主干】BoTNet:基于Transformer,结合自注意力机制和卷积神经网络的骨干网络
|
SQL OLAP Apache
年度合集!Apache Hudi 技术文章一次看个够
年度合集!Apache Hudi 技术文章一次看个够
262 4
|
Rust 开发者
Rust中的模块与包管理:构建高效、可扩展的代码库
本文详细阐述了Rust编程语言中模块与包管理的概念、特点和使用方法。通过深入了解模块与包的概念、组织方式、导入导出机制以及Rust的Cargo工具,我们将学会如何构建高效、可扩展的代码库,提高代码的可读性、可维护性和可重用性。
报错The above error occurred in the <InnerPicker> component:解决方法和Ant Design form表单setFieldValue修改input
报错The above error occurred in the <InnerPicker> component:解决方法和Ant Design form表单setFieldValue修改input
458 0
|
SQL 分布式计算 HIVE
Apache Hudi入门指南(含代码示例)
Apache Hudi入门指南(含代码示例)
367 0