深度学习从入门到放弃
本专栏将围绕《深度学习》来介绍相关学习算法、概念问题。从基础的机器学习算法(如线性回归、逻辑回归、主成分分析等)到深度学习基础(如神经网络算法、相关应用)再到深度学习相关研究(如模型构建、蒙特卡罗方法、近似推断等)。本专栏是笔者暑期学习的相关记录,适合初学者一起学习。
wangbowj123
炼丹中。
展开
-
如何去设计一个深度学习加速器?
How to make your own deep learning accelerator chip!Currently, there are more than 100 companies all over the world building ASICs (Application Specific Integrated Circuit) or SOC’s (System on Chip) ...原创 2020-03-01 15:02:22 · 3532 阅读 · 0 评论 -
图的embedding问题
图的embedding问题[摘要]:随着word2vec模型的提出,embedding问题开始逐渐引起大家的注意。在如今大数据背景的驱动下,商品、行为、用户等实体之间的关系越来越复杂化、网络化,而word2vec是sequence embedding的,故其表示能力较弱,已不适合表示当下的复杂数据,因此人们又提出了graph embedding,即通过某种方法,将大型的图进行embedding,...原创 2020-01-04 19:00:12 · 3206 阅读 · 0 评论 -
TVM(端到端的优化栈)概述
陈天奇团队宣布推出 TVM,在微博上表示,「我们今天发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机,cuda, opencl, metal, javascript 以及其它各种后端。欢迎对于深度学习,编译原理,高性能计算,硬件加速有兴趣的同学一起加入 dmlc 推动领导开源项目社区 。」大多数现有系统针对窄范围的服务器级 GPU 进行优化,且需要在包括手机、I...原创 2019-07-30 23:32:11 · 5889 阅读 · 0 评论 -
用tensorflow实现带批标准化(BN)的MNIST数据集识别训练程序
引入这也是笔者第一次接触面向对象版的神经网络程序——其实也不难发现,我们每一次定义的层级结构中有很多重复的定义或操作,一旦引入面向对象编程方法将大大提高程序的可复用性。并且我们本次要做的是带有BN结构的CNN程序。我们可以把BN操作看成一个放在激活函数操作之后的一个功能单元或层级结构,这样我们可以避免每次都定义一些重复的变量。BN的操作大体如下:对于每一个输入实例xkx_kxk,我们...原创 2019-07-23 13:23:01 · 982 阅读 · 0 评论 -
关于Batch Normalization(批标准化)的理解与代码实现
今天看了《深度学习》中关于批标准化的小节,一开始感觉有些困惑,后来搜集了资料后也有了自己的理解,总结如下。概念问题我认为要理解批标准化首先要理解标准化概念。那么,什么是标准化?通过中心化或标准化处理,得到均值为0,标准差为1的服从标准正态分布的数据。事实证明,一个神经网络接收一张白化(令像素点标准化)过后的图片作为输入数据,那么其收敛速度较快。那么将此实例延申,放入神经网络所有结构...原创 2019-07-23 00:26:06 · 2747 阅读 · 1 评论 -
深度学习中学习率的更新策略(MNIST实践)
引入随机梯度下降(SGD)算法是现如今使用较为广泛的优化算法(此处的SGD指的是小批量梯度下降)。具体执行方法是不断迭代直到满足停止准则,在每次的迭代中取小批量训练集,计算损失函数对于权重参数的梯度,并以一定学习率执行权重更新。《深度学习》一书中指出学习率(ε\varepsilonε)是SGD算法中的关键参数。并且在我之前所编写的深度学习程序中,学习率一直是一个固定的变量,但通过阅读才发现自己...原创 2019-07-20 23:09:57 · 3202 阅读 · 0 评论 -
Tensor Comprehensions(TC)语言语法简述
背景Tensor Comprehensions 是一种可以构建 just in time(JIT)系统的语言,程序员可通过该语言用高级编程语言去高效的实现 GPU 等底层代码。该项目由face book开源发布。我的理解是我们通过该语言可以更加有效的理解张量、运算图等。虽然tensorflow已经有了tensorboard这样的可视化工具,但是在运算图的理解方面还是有些困难。语法示例下面给...原创 2019-07-17 15:45:41 · 1353 阅读 · 0 评论 -
深度学习之手写数字识别——用bp神经网络实现
任务设计一个bp神经网络是实现对MNIST手写数字集的识别任务。网路结构包含一个输入层、一个隐层和一个输出层。 其实总共只有两个层级结构。包、数据集载入我们使用tensorflow来简化我们的操作。import tensorflow as tfimport numpy as npfrom tensorflow.examples.tutorials.mnist import input...原创 2019-07-16 00:17:21 · 8628 阅读 · 0 评论 -
12行实现一个简易神经网络
准备工作现实现一个具有三层的最简单的神经网络,激活函数采用sigmod函数。整体结构如下所示:x是输入的样本值。设定为5*3的矩阵,即代表5个样本值,每个样本有3个特征值。y是标签,为5*1的矩阵代表每一个样本的标签。且取值范围为0或1。即完成一个简单的分类问题。w0、w1为中间的权重参数。L0、L1、L2表示每一层的计算结果。L2即是最终与标签比对的结果首先是数据的初始化:x...原创 2019-03-27 17:28:00 · 830 阅读 · 1 评论 -
tensorflow2.0GPU版本的环境配置与安装教程
现在tensorflow2.0也已经问世了,自然忍不住会想要安装一下,将安装过程记录如下:一、创建虚拟环境虚拟环境自然是在Anaconda下创建。因为tf2.0对应的是python3.7版本,所以我们在Anaconda Prompt或cmd下输入命令:conda create -n your_env_name python=3.7二、CUDA的安装:切记tensorflow2.0对应的...原创 2019-04-18 16:20:10 · 58282 阅读 · 32 评论 -
机器学习算法之主成分分析——代码实现与相关理论分析
引入主成分分析(PCA)是一种常见的数据分析方法,通过该方法我们可以对数据进行降维操作,并且保留方差较大(信息量大)的维度。为了引入相关概念,我们先看一组数据:import pandas as pdimport numpy as npimport matplotlib.pyplot as plt%matplotlib inline# 总共十个样本 每个样本有两个特征值data = ...原创 2019-07-13 15:17:00 · 666 阅读 · 0 评论 -
梯度下降求解逻辑回归2(代码编写以及三种梯度下降对比)
*上一篇是理论知识、背景介绍以及大体的实现方向,这一篇是具体代码实现代码编写我们的功能模块:写出sigmoid函数,返回被录取的概率,即映射到概率g(z)=11+e−zg(z)=11+e−zg(z) = \frac{1}{1+e^{-z}} 写出model函数,返回预测结果值,即X(样本值)与theta的矩阵相乘结果(θ0θ1θ2)×⎛⎝⎜1x1x2...原创 2018-02-18 21:53:33 · 4962 阅读 · 3 评论 -
机器学习实战——梯度下降求解逻辑回归(1理论基础)
问题的提出现要实现一个简单的线性回归: 我们将建立一个逻辑回归模型来预测一个学生是否被大学录取。假设你是一个大学系的管理员,你想根据两次考试的结果来决定每个申请人的录取机会。你有以前的申请人的历史数据,你可以用它作为逻辑回归的训练集。对于每一个培训例子,你有两个考试的申请人的分数和录取决定。为了做到这一点,我们将建立一个分类模型,根据考试成绩估计入学概率。即要求我们通过一些数据集...原创 2018-02-17 17:33:23 · 1659 阅读 · 0 评论 -
一文讲懂普通线性回归与贝叶斯线性回归的区别
将均方误差应用到线性回归问题中首先我们先回顾频率派的解决方法,即常规解法——利用最小二乘法解决问题。损失函数采用均方误差函数。关于模型容量问题:在《深度学习》中专门指出,模型的容量也是一个需要用户指定的超参数,即拟合的多项式次数。此处为了简化操作,暂定为一次多项式。解决代码如下:import numpy as npx = np.random.randn(10) + 5# 初始参数k...原创 2019-07-12 01:22:19 · 3263 阅读 · 0 评论 -
线性回归的讨论
线性回归的概念给定一个数据集D={(x1,y1),(x2,y2),(x3,y3)…},所谓线性回归就是模拟出一个线性模型f(X)=k∗X+bf(X) = k * X + bf(X)=k∗X+b,使得对所有的x∈\in∈D得到 f(X) ≈\approx≈ y ∈\in∈ D,即尽可能准确的预测真实的y值。问题主要集中在我们该如何得到k、b的值呢?关键在于如何度量f(X)与真实的y之间的...原创 2019-01-03 15:45:39 · 365 阅读 · 0 评论 -
isl使用方法
1.isl_ctx对象的创建:All manipulations of integer sets and relations occur within the context of an isl_ctx. A given isl_ctx can only be used within a single thread. All arguments of a function are require...原创 2019-10-04 10:43:51 · 4806 阅读 · 2 评论