PyTorch入门学习:7-Multiple Dimension Input

7 Multiple Dimension Input

1 Multiple Dimension Logistic Regression Model

1.1 Define linear model

  • Before(Logisitic Regression Model):
  • Now(Multiple Dimension Logistic Regression Model):

多个维度的模型

  • 公式右上角表示样本,右下角表示特征

使用矩阵运算

  • 转换成矩阵运算,方便进行并行运算
  • 使用torch.nn.Linear(8, 1)来表示8个特征的线性组合,其实就是不同维度空间的线性映射

1.2 Dimension mapping & multiple layers

多层网络,每层输入输出维度均不同

  • 正常情况下,层数越多,对于非线性的问题,能够拟合的能力越强。但是层数太多,会导致对于噪声也被拟合的问题。因此,网络的设计可以采用超参数搜索的方式。

老师在这里提到,计算机技能最重要的是读文档和基本架构的理念,而不是死抠书本。

  • 本节中将会使用8-6-4-1的网络结构作为示例。

1.3 Implementation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import numpy as np

xy = np.loadtxt('data/diabetes.csv.gz', delimiter=',', dtype=np.float32)
# 在个人显卡上一般仅支持float32,而在Tesla系列等上则会支持64位
x_data = torch.from_numpy(xy[:, :-1])
y_data = torch.from_numpy(xy[:, [-1]])

import torch

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()
# 将sigmoid函数放到forward中,作为

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)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

for epoch in range(1000):
# 这里并没有使用batch
y_pred = model(x_data)
loss = criterion(y_pred, y_data)

print(epoch, loss.item())

optimizer.zero_grad()
loss.backward()
optimizer.step()

2 Exercise: Try different activation functions

  • 最后一层的激活函数可以使用sigmoid函数,也可以使用tanh函数。但不是所有激活函数都可以用于最后一层。

PyTorch入门学习:7-Multiple Dimension Input
https://eleco.top/2026/02/24/learn-torch-7-Multiple-Dimension-Input/
作者
Eleco
发布于
2026年2月24日
许可协议