ITPub博客

首页 > IT职业 > IT生活 > 【PyTorch基础教程7】多维特征input(学不会来打我啊)

【PyTorch基础教程7】多维特征input(学不会来打我啊)

IT生活 作者:专注的阿熊 时间:2021-10-19 17:26:20 0 删除 编辑

# -*- coding: utf-8 -*-

"""

Created on Mon Oct 18 10:18:24 2021

@author: 86493

"""

import torch

import torch.nn as nn

import numpy as np

import matplotlib.pyplot as plt

# 这里的 type 不用 double ,特斯拉 GPU double

xy = np.loadtxt('diabetes.csv',

                 delimiter = ' ',

                 dtype = np.float32)

# 最后一列不要

x_data = torch.from_numpy(xy[: , : -1])

# [-1] 则拿出来的是一个矩阵,去了中括号则拿出向量

y_data = torch.from_numpy(xy[:, [-1]])

losslst = []

class Model(nn.Module):

     def __init__(self):

         super(Model, self).__init__()

         self.linear1 = nn.Linear(9, 6)

         self.linear2 = nn.Linear(6, 4)

         self.linear3 = nn.Linear(4, 1)         

         # 上次 logistic 是调用 nn.functional Sigmoid

         self.sigmoid = nn.Sigmoid()

         # 外汇跟单gendan5.com 这个也是继承 Module, 没有参数 , 比上次写法不容易出错

     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 = nn.BCELoss(size_average = False)

optimizer = torch.optim.SGD(model.parameters(),

                             lr = 0.01)

# 训练,下面没有用 mini-batch ,后面讲 dataloader 再说

for epoch in range(10):

     y_predict = model(x_data)

     loss = criterion(y_predict, y_data)

     # 打印 loss 对象会自动调用 __str__

     print(epoch, loss.item())

     losslst.append(loss.item())

     # 梯度清零后反向传播

     optimizer.zero_grad()

     loss.backward()

     # 更新权重

     optimizer.step()

# 画图

plt.plot(range(10), losslst)

plt.ylabel('Loss')

plt.xlabel('epoch')

plt.show()


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69946337/viewspace-2838188/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-23

  • 博文量
    263
  • 访问量
    144744