1、pytorch写的第一个Linear模型(原始版,不调用nn.Modules模块)
参考: https://github.com/Iallen520/lhy_DL_Hw/blob/master/PyTorch_Introduction.ipynb
模拟一个回归模型,y = X * w + 随机数
如,y : n*1矩阵, X : n*2矩阵 , w : 1,2矩阵
设置true_w = [[-1.0], [2.0]] , 随机初始化w 比如[[1.0], [0.0]],目标是拟合出正确的w
代码如下:
#自己写一个test case
import torch d = 2
n = 50
X = torch.randn(n,d)
true_w = torch.tensor([[-1.0], [2.0]])
y = X @ true_w + torch.randn(n,1) * 0.1
print('X shape', X.shape)
print('y shape', y.shape)
print('w shape', true_w.shape) print(X.shape)
print(true_w.shape) #w = torch.rand(2,1, requires_grad = True)
w = torch.tensor([[1.],[0]], requires_grad= True)
print("w:", w) print('iter,\tloss,\tw')
for i in range(20):
loss = torch.norm(y - torch.matmul(X,w))**2 / n loss.backward() w.data = w.data - 0.1 * w.grad print('{},\t{:.2f},\t{}'.format(i, loss.item(), w.view(2).detach().numpy())) w.grad.zero_() print('\ntrue w\t\t', true_w.view(2).numpy())
print('estimated w\t', w.view(2).detach().numpy())
X shape torch.Size([50, 2])
y shape torch.Size([50, 1])
w shape torch.Size([2, 1])
torch.Size([50, 2])
torch.Size([2, 1])
w: tensor([[1.],
[0.]], requires_grad=True)
iter, loss, w
0, 6.20, [0.7062541 0.32114884]
1, 4.45, [0.45446268 0.59016734]
2, 3.20, [0.2387764 0.81564814]
3, 2.30, [0.05413117 1.0047431 ]
4, 1.65, [-0.10385066 1.1634098 ]
5, 1.19, [-0.23894812 1.2966142 ]
6, 0.86, [-0.3544196 1.4084985]
7, 0.62, [-0.4530713 1.5025208]
8, 0.45, [-0.5373176 1.5815694]
9, 0.32, [-0.60923356 1.6480589 ]
10, 0.24, [-0.6706013 1.7040086]
11, 0.17, [-0.7229501 1.7511086]
12, 0.13, [-0.76759106 1.7907746 ]
13, 0.09, [-0.8056477 1.8241924]
14, 0.07, [-0.8380821 1.8523566]
15, 0.05, [-0.86571765 1.8761011 ]
16, 0.04, [-0.8892586 1.8961263]
17, 0.03, [-0.90930706 1.91302 ]
18, 0.02, [-0.9263775 1.9272763]
19, 0.02, [-0.9409093 1.9393103] true w [-1. 2.]
estimated w [-0.9409093 1.9393103]
出错点:
1.初始化tensor时,要为float,否则容易报错
2. 初始化时设置 requires_grad = True
3. 定义的loss要在for循坏之内
4. 要用w.data不用w,否则报错,可能和pytorch初始化有关
5. w.grad.zero_() 注意这个写法
1、pytorch写的第一个Linear模型(原始版,不调用nn.Modules模块)的更多相关文章
- 2、pytorch——Linear模型(最基础版,理解框架,背诵记忆)(调用nn.Modules模块)
#define y = X @ w import torch from torch import nn #第一模块,数据初始化 n = 100 X = torch.rand(n,2) true_w = ...
- Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)
JEECG 智能开发平台. 开发模式由代码生成器转变为Online Coding模式 (通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义 ...
- GAN实战笔记——第三章第一个GAN模型:生成手写数字
第一个GAN模型-生成手写数字 一.GAN的基础:对抗训练 形式上,生成器和判别器由可微函数表示如神经网络,他们都有自己的代价函数.这两个网络是利用判别器的损失记性反向传播训练.判别器努力使真实样本输 ...
- Pytorch写CNN
用Pytorch写了两个CNN网络,数据集用的是FashionMNIST.其中CNN_1只有一个卷积层.一个全连接层,CNN_2有两个卷积层.一个全连接层,但训练完之后的准确率两者差不多,且CNN_1 ...
- pytorch入门2.1构建回归模型初体验(模型构建)
pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...
- 详解Pytorch中的网络构造,模型save和load,.pth权重文件解析
转载:https://zhuanlan.zhihu.com/p/53927068 https://blog.csdn.net/wangdongwei0/article/details/88956527 ...
- 【小白学PyTorch】1 搭建一个超简单的网络
文章目录: 目录 1 任务 2 实现思路 3 实现过程 3.1 引入必要库 3.2 创建训练集 3.3 搭建网络 3.4 设置优化器 3.5 训练网络 3.6 测试 1 任务 首先说下我们要搭建的网络 ...
- 手写数字识别 ----Softmax回归模型官方案例注释(基于Tensorflow,Python)
# 手写数字识别 ----Softmax回归模型 # regression import os import tensorflow as tf from tensorflow.examples.tut ...
- Anaconda+django写出第一个web app(二)
今天开始建立App中的第一个Model,命名为Tutorial. Model的定义在main文件夹下的models.py中通过类进行,我们希望Tutorial这个model包含三个属性:标题.内容和发 ...
随机推荐
- DateUtil-1
/** * @Title: DateUtil.java * @Package com.jd.big.data.dao.dashboard.util * @Description: 日期工具 * @au ...
- Linux 网络栈 转载
此文章 来自 http://arthurchiao.art/blog/tuning-stack-rx-zh/ [译] Linux 网络栈监控和调优:接收数据(2016) Published ...
- 差分进化算法介绍及matlab实现
引言 差分进化算法是基于群体智能理论的优化算法,是通过群体内个体间的合作与竞争而产生的智能优化搜索算法,它保留了基于种群的全局搜索策略,采用实数编码.基于差分的简单变异操作和"一对一&quo ...
- 【Python】Json序列化和反序列化模块dumps、loads、dump、load函数介绍
1.json.dumps() json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数. 转换案例: ...
- POJ2689 [质数距离] 题解
质数距离 题目TP门 题目描述 给定两个整数L和R,你需要在闭区间[L,R]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对. 同时,你 ...
- git key生成
1.打开git ssh 2.检查home目录的ssh目录是否存在,没有创建一个,mkdir ~/.ssh 3.运行命名:ssh-keygen -t rsa -C "你的邮箱", 如 ...
- NPOI读写Excel组件封装Excel导入导出组件
后台管理系统多数情况会与Excel打交道,常见的就是Excel的导入导出,对于Excel的操作往往是繁琐且容易出错的,对于后台系统的导入导出交互过程往往是固定的,对于这部分操作,我们可以抽离出公共组件 ...
- 通过Folx的排序功能来设置下载任务的优先级
当我们使用Folx进行多任务下载时,突然遇到要下载一个紧急文件的情况,该如何让这个紧急文件的下载任务排在优先的位置?当然,用户也可以先暂停所有的下载任务,仅开启紧急文件的下载任务. 但这种方式需要用户 ...
- 如何用pdfFactory新建打印机并设置属性
今天我们来讲一讲,在pdfFactory中如何去修改PDF文件打印页面的页边距.页面大小.页面清晰度等属性参数. pdfFactory是一款Windows平台上的虚拟打印机,在没有打印机可以安装的情况 ...
- api4excel - 接口自动化测试excel篇
api4excel - 接口自动化测试excel篇 工作原理: 测试用例在excel上编辑,使用第三方库xlrd,读取表格sheet和内容,sheetName对应模块名,Jenkins集成服务发现服务 ...