首页 > 其他分享 >PyTorch 深度学习实践

PyTorch 深度学习实践

时间:2022-10-22 15:55:35浏览次数:60  
标签:loss nn self torch 实践 epoch PyTorch 深度 data

 1 import numpy as np
 2 import torch
 3 import matplotlib.pyplot as plt
 4 import os
 5 os.environ['KMP_DUPLICATE_LIB_OK']='True'
 6 
 7 #1 prepare dataset
 8 xy = np.loadtxt('diabetes.csv', delimiter=',', dtype=np.float32)
 9 x_data = torch.from_numpy(xy[:, :-1])  # 第一个‘:’是指读取所有行,第二个‘:’是指从第一列开始,最后一列不要
10 y_data = torch.from_numpy(xy[:, [-1]])  # [-1] 最后得到的是个矩阵
11 
12 
13 #2 design model using class
14 class Model(torch.nn.Module):
15     def __init__(self):
16         super(Model, self).__init__()
17         self.linear1 = torch.nn.Linear(8, 6)  # 输入数据x的特征是8维,x有8个特征
18         self.linear2 = torch.nn.Linear(6, 4)
19         self.linear3 = torch.nn.Linear(4, 1)
20         self.activate = torch.nn.ReLU()
21         self.sigmoid = torch.nn.Sigmoid()  # 将其看作是网络的一层,而不是简单的函数使用
22 
23     def forward(self, x):
24         x = self.activate(self.linear1(x))
25         x = self.activate(self.linear2(x))
26         x = self.sigmoid(self.linear3(x))  # y hat
27         return x
28 model = Model()
29 
30 #3 construct loss and optimizer
31 # criterion = torch.nn.BCELoss(size_average = True)
32 criterion = torch.nn.BCELoss(reduction='mean')
33 optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
34 
35 epoch_list = []
36 loss_list = []
37 #4 training cycle forward, backward, update
38 for epoch in range(1000):
39     y_pred = model(x_data)
40     loss = criterion(y_pred, y_data)
41     print(epoch, loss.item())
42     epoch_list.append(epoch)
43     loss_list.append(loss.item())
44 
45     optimizer.zero_grad()
46     loss.backward()
47 
48     optimizer.step()
49 
50 #test
51 # print('w = ', model.linear3.weight.data)
52 # print('b = ', model.linear3.bias.data)
53 # x_test = torch.Tensor([0.176471,0.256281,0.147541,-0.474747,-0.728132,-0.0730253,-0.891546,-0.333333])#0
54 # x_test = torch.Tensor([-0.0588235,-0.00502513,0.377049,0,0,0.0551417,-0.735269,-0.0333333])#1
55 # y_test = model(x_test)
56 # print('y_pred = ', y_test.data)
57 
58 plt.plot(epoch_list, loss_list)
59 plt.ylabel('loss')
60 plt.xlabel('epoch')
61 plt.show()

996 0.4599120318889618
997 0.4599059224128723
998 0.45989990234375
999 0.45989376306533813

训练1000次loss在0.45的样子,预测也不准,单独使用sigmoid函数收敛还慢点,再增加epoch次数也很难达到理想的效果,我达到的最好结果是loss在0.2几,应该是学习函数太简单了

 

标签:loss,nn,self,torch,实践,epoch,PyTorch,深度,data
From: https://www.cnblogs.com/zhouyeqin/p/16816240.html

相关文章

  • 云安全攻防体系实践-应用安全
    微服务架构下的应用安全1、认证服务2、授权服务3、数据安全防护4、与API网关/WAF结合进行深度防护认证服务1、基于JWT的认证2、基于Istio的认证3、传输认证4、请求级认证5、......
  • 云安全攻防体系实践-容器安全
    容器安全容器镜像存在的风险1、不安全的第三方组件2、大肆传播的恶意镜像3、极易泄露的敏感信息活动容器存在的风险1、不安全的容器应用2、不受限制的资源共享3、不安全的配......
  • 云安全攻防体系实践-CVE-2018-15664分析
    CVE-2018-15664符号链接替换漏洞如果在docker守护进程检查复制路径时,攻击者可以利用中间的间隙,先在这里放置一个非符号链接的常规文件或目录,检查结束后,攻击者赶在Docker守护......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够运......
  • 深度学习入门书籍笔记
    title:深度学习入门书籍笔记date:2022-08-0212:57:39mathjax:truetags:深度学习python第3章神经网络3.2激活函数将输入信号的总和转换为输出信号,一般称为......
  • 实验5:开源控制器实践——POX
    一、基础实验(1)tcpdump验证Hub模块h1-->h2和h1-->h3(2)tcpdump验证Switch模块h1-->h2和h1-->h3(3)L2_learning模块代码流程图二、进阶实验(1)进阶一(2)进阶二......
  • 图的广度深度遍历
    图的深度遍历以一条路径优先选一个点作为起点,再走向相邻的没有被访问过的点。一条路径走完后,如果还有没被访问的点,则再选择一个点作为起点,走向相邻的未被访问的点。如图......
  • 实验5:开源控制器实践——POX
    (一)基本要求(1)阅读Hub模块代码,使用tcpdump验证Hub模块;(2)阅读L2_learning模块代码,画出程序流程图,使用tcpdump验证Switch模块。流程图(二)进阶要求(1)重新搭建(一)的拓扑,此......
  • 实验5:开源控制器实践——POX
    一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够运用POX控制器编写自定义网络......
  • 【Unity项目实践】对话系统
    这篇文章总结一下简易对话系统的制作方式,教程来自M_Studio的迷失岛制作教程。Overview采用MVC方式,将数据、UI和逻辑分开。数据使用ScriptableObject进行存储和读取采用事件......