pytorch深度学习入门 第7讲(处理多维度特征的输入)

学习内容:B站 刘二大人 《pytorch深度学习实践》课程系列


处理多维度特征的输入

还是以二分类问题为例,输入转换为多个维度

对于每个样本xi->yi的计算过程如上图,x的每个特征都要乘以一个w。

mini-batch

实际处理中,一个mini-batch的向量化操作如上图:

  • 输入x的形状:n x d(n是样本个数,d是特征维度)。
  • 输出y的形状:n x 1(n表示样本的个数)
  • 通过x和y确定,w的形状:d x 1(d是每个特征对应的权重)。
  • b的形状:根据张量的广播机制,其形状自动转换为:n x 1。
  • z看作是线性变换的输出,sigmoid的操作是point-wise的,即针对z中每个元素。

计算图

将一个8维映射到1维

扩展

        在神经网络中,我们的目标是将一个多维空间非线性地映射到一个1维空间,为了使我们的模型更加复杂,可以将模型进行多次线性变换,并在每个linear后边加一个sigmoid激活函数引入非线性。

扩展后的计算图

数据集

diabetes.csv.gz---糖尿病患病率数据集。输入特征有8个维度,分别是人的各个指标,y是是否患病。这个数据去网上下。
import torch
import torch.nn as nn
import torch.nn.functional as F
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]])
#为了确保y_data得到的是个矩阵,第二个维度切片需要使用[-1]

模型设计

class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.linear1 = nn.Linear(8,6)
        self.linear2 = nn.Linear(6,4)
        self.linear3 = 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()

损失函数和优化器

criterion = torch.nn.BCELoss(size_average = False)
optimizer = torch.optim.SGD(model.parameters(),lr = 0.01)

循环训练

#Train Model
for epoch in range(1000):
    #Forward
    y_pred = model(x_data)#整个数据集都扔进来了
    loss = criterion(y_pred,y_data)
    print(epoch,loss)

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

    #Update
    optimizer.step()

注意:这里并没有做mini-batch的操作,而是把所有数据都放到model了,后面会讲如何做mini-batch操作。

这里训练1000,loss还是很大,应该是要训练更多epoch,所以这里先不写测试了,麻烦。

小结

这讲需要掌握如何用逻辑回归解决"糖尿病诊断"问题,掌握以下:

1)多维特征如何处理

2)如何构建一个多层的线性变换+sigmoid 的模型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值