Pytorch深度学习(六):多维特征的输入
多维特征的输入一、概念二、完整实现代码:一、概念我们来看看多维输入(Multiple Dimension Input),我们先看看多维Logistic回归模型:假设我们有一个8维的输入,于是就可以改变我们的Logistic回归模型。运用相关矩阵的知识我们便可以分析出Z矩阵的相关维度,并且b矩阵可以运用广播机制来参与相关的运算。下面是对糖尿病病人的病情进行预测,预测未来是否会加重。输入有8个指标,也
·
一、概念
我们来看看多维输入(Multiple Dimension Input),我们先看看多维Logistic回归模型:
假设我们有一个8维的输入,于是就可以改变我们的Logistic回归模型。
运用相关矩阵的知识我们便可以分析出Z矩阵的相关维度,并且b矩阵可以运用广播机制来参与相关的运算。
下面是对糖尿病病人的病情进行预测,预测未来是否会加重。
输入有8个指标,也就是8个维度,输出只有一个维度即是否加重病情。
维度的变化其实就是线性代数中矩阵乘法的作用:[m×n]⋅[n×k]=[m×k][m×n]⋅[n×k]=[m×k]
二、完整实现代码:
import numpy as np
import torch
#1.准备数据集
xy = np.loadtxt('diabetes.csv.gz',delimiter=',',dtype=np.float32)
#xy = np.loadtxt('diabetes.csv',delimiter=',',dtype=np.float32)
'''
torch.from_numpy()方法把数组转换成张量,且二者共享内存,
对张量进行修改比如重新赋值,那么原始数组也会相应发生改变。
'''
x_data = torch.from_numpy(xy[:,:-1]) #x_data除了最后一列不取
y_data = torch.from_numpy(xy[:,[-1]]) # y_data是最后1列
#2.构建网络模型class
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()
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()
#3.构造损失函数和优化器
criterion = torch.nn.BCELoss(size_average=True) #还是二分类的,继续用BCELoss
optimizer = torch.optim.SGD(model.parameters(),lr=0.1)
#4.训练
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()
参考链接:https://blog.csdn.net/qq_45866407/article/details/108112533
https://www.bilibili.com/video/BV1Y7411d7Ys?p=7
点击阅读全文
更多推荐
目录
所有评论(0)