PyTorch自用笔记(第一周)
PyTorch 第一周
- 一、深度学习初见
- 1.1 深度学习框架简介
- 1.1.1 PyTorch的发展
- 1.1.2 PyTorch与同类框架
- 二、环境配置
- 三、回归问题
- 3.1 简单回归问题
- 3.1.1 梯度下降法
- 3.1.2 线性回归、逻辑回归、分类问题
- 3.2 分类问题引入
- 手写数字识别
一、深度学习初见
1.1 深度学习框架简介
1.1.1 PyTorch的发展
2002年Torch->2011年Torch7
Lua语言制约了Torch发展
PyTorch于2018.12发布正式版本,采用CAFFE2后端
本教程使用的是2019.5发布的1.1
1.1.2 PyTorch与同类框架
Google:theano -> Tensorflow1 -> Tensorflow2 + Keras
Facebook:Torch7 -> Caffe -> PyTorch + Caffe2
Amazon : MXNet
Microsoft : CNTK
Chainer
tensorflow是静态图优先的而PyTorch是动态图优先的
总结:
对于研究员,推荐使用PyTorch
对于工程师,推荐使用TensorFlow2
二、环境配置
Python 3.7 + Anaconda 5.3.1
CUDA 10.0
Pycharm Community
三、回归问题
3.1 简单回归问题
3.1.1 梯度下降法
loss:x2 * sin(x)
导数:2xsinx + x2cosx
x’ = x - α * f’(x)
α:学习率,控制梯度下降速度,一般设置为0.0001或0.01
由于噪声的存在,loss可以转化为(W * X + b - y)2的形式,当此loss函数取得极小值时,参数W和b即为所求参数
3.1.2 线性回归、逻辑回归、分类问题
线性回归的结果y∈R
逻辑回归由于加了激活函数的限制,将最终结果限制到了[0, 1]中,变为一个概率问题
分类问题特点:每个结果的概率加起来等于1
回归问题实验代码
import numpy as npdef compute_error_for_line_given_points(b, w, points):totalError = 0for i in range(0, len(points)):x = points[i, 0]y = points[i, 1]totalError += (y - (w * x + b)) ** 2return totalError / float(len(points))def step_gradient(b_current, w_current, points, learningRate):b_gradient = 0w_gradient = 0N = float(len(points))for i in range(0, len(points)):x = points[i, 0]y = points[i, 1]b_gradient += -(2/N) * (y - ((w_current * x) + b_current))w_gradient += -(2 / N) * x * (y - ((w_current * x) + b_current))new_b = b_current - (learningRate * b_gradient)new_w = w_current - (learningRate * w_gradient)return [new_b, new_w]def gradient_descent_runner(points, starting_b, startint_w, learning_rate, num_iterations):b = starting_bw = startint_wfor i in range(num_iterations):b, w = step_gradient(b, w, np.array(points), learning_rate)return [b, w]def run():points = np.genfromtxt("data.csv", delimiter=",")learning_rate = 0.0001initial_b = 0initial_w = 0num_iterations = 1000print("Staring gradient descent at b = {0}, w = {1}, error = {2}".format(initial_b, initial_w,compute_error_for_line_given_points(initial_b, initial_w, points)))print("Running...")[b, w] = gradient_descent_runner(points, initial_b, initial_w, learning_rate, num_iterations)print("After{0} iterations b = {1}, w = {2}, error = {3}".format(num_iterations, b, w,compute_error_for_line_given_points(b, w, points)))if __name__ == 'main':run()
结果:
Starting gradient descent at b = 0, w = 0, error = 5565.107834483211
Running…
After 1000 iterations b = 0.08893651993741346, w = 1.4777440851894448, error = 112.61481011613473
部分数据:
3.2 分类问题引入
MNIST数据集:0~9手写数字识别
· 每个数字有7k张图片
· 训练集60k,测试集10k
pred结果采用one-hot编码
线性相关模型难以解决具有非线性特征的问题,故引入非线性因素激活函数ReLU,然后运用梯度下降法将代价函数最小化,对于每一个新的X(手写数字),送到pred进行前向运算,取概率值最大的label为预测值
手写数字识别
H1 = relu(XW1 + b 1)
H2 = relu(H1W2 + b 2)
H1 = f(H2W3 + b 3)
步骤:
- 加载数据
- 建立模型
- 训练
- 测试
PyTorch自用笔记(第一周)相关推荐
- 吴恩达机器学习笔记第一周
第一周 吴恩达机器学习笔记第一周 一. 引言(Introduction) 1.1 欢迎 1.2 机器学习是什么? 1.3 监督学习 1.4 无监督学习 二.单变量线性回归(Linear Regress ...
- 机器学习笔记 (第一周)
机器学习笔记 (第一周) 目录 机器学习笔记 (第一周) 引言(Introduction) 1.1 什么是机器学习,机器学习能做些什么事情 1.2 机器学习是什么? 1.3 监督学习 1.4 无监督学 ...
- 从零开始写安卓APP 《第一行代码》笔记 第一周
这是软件开发课的任务,本人其实不会java也不会安卓开发.以前只做过web端,因为某课程的爆炸实验单人撸了全栈.不过好在很早前就想学了,这里记录一下过程.放的主要是<第一行代码>的一些笔记 ...
- 《Text Mining and Analytics》学习笔记——第一周
课程链接:https://www.coursera.org/learn/text-mining 主讲:伊利诺伊大学香槟分校 ChengXiang Zhai教授 NLP领域有哪些神一样的人物:知乎链接 ...
- WDK学习笔记第一周
文章目录 摘要 一.对PM2.5预测的论文的总结 1.1 背景 1.2 PM2.5 1.3 综述 1.4 对桂林空气质量文章的总结 1.4.1 空气质量变化 1.4.2 污染物扩散的影响因素 二.LS ...
- 2022李宏毅机器学习深度学习学习笔记--第一周
文章目录 摘要 机器学习的基本概念 机器学习 不同的函式类别 gradient descent 深度学习(Deep learning) Case study 摘要 本文主要介绍什么是机器学习,机器学习 ...
- 机器学习公开课笔记第一周
一,机器学习是什么? "A computer program is said to learn from experience E with respect to some class of ...
- 吴恩达机器学习课程笔记——第一周
1. 单变量线性回归(Linear Regression with One Variable) 1.1 模型表示 像上述公式,因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题. 例子 ...
- 北京大学生物信息学笔记-第一周-生物信息学概述
什么生物信息学? [1] 基因组:生命手册 [2] 人类基因组有31亿碱基对 [3] 碱基编码基因占~2.9% [4] ~97%的基因以前被称为是"垃圾" [5] 他们包含编码指令 ...
最新文章
- 7年前轰动全球的Science论文,被发现可能搞错了
- 《数据库系统概念》7-函数、存储过程、触发器
- .NET 4.5 基类库中的新增功能
- 数据库建模模板、菜单显示出问题解决方案
- 学习笔记Hadoop(一)—— Hadoop介绍(1)——认识大数据
- ITK:使用Otsu阈值图像
- TensorBoard使用
- Java Integer类详解
- everything 中文免安装_GTA5中文免安装版
- 每个数据科学家都应该知道的 20 个 NumPy 操作
- linux授权命令chmod777_【HDFS篇02】HDFS命令行操作
- 《变革中的思索》连载二:依旧有效的四律
- db模块未绑定 Uncaught TypeError: Cannot read property 'openDatabase' of undefined
- 软件测试简历中的项目应该如何准备?
- 表单美化+html+css
- 弱监督学习-snorkel
- can协议crc计算_CAN协议教程|CAN报文分析
- ios visio流程图_Mac下有如Visio一样好用的流程图软件吗?
- 支付宝支付服务端对接记录(小程序/APP 预支付统一下单及回调处理)
- PCB多层板为什么都是偶数层