机器学习
学习笔记帮助掌握各种相关理论,PyTorch、TensorFlow 等机器学习库便是减轻负担的优秀工具。只要开始,这条路并不难走。
Steven·简谈
博观而约取,厚积而薄发
展开
-
TensorFlow文本生成(AI 写诗)
练一个模型,让它去“背书”吧,背完了再看看它学的怎么样。本次使用的是 TensorFlow2,采用基于循环神经网络的 GRU 。给它一两个字或者一句诗,甚至一个字也不给,然后写出格式正确的诗。不会照搬已存在诗句,而是根据它对看过的诗的理解原创 2020-06-18 00:10:51 · 5876 阅读 · 46 评论 -
自编码器(AE)原理解析
机器学习基本分为监督学习、无监督学习、强化学习,而自编码器则是无监督学习的一种,不过它比较自觉,别人不监督它但它自己监督自己,对输入样本 xxx 进行训练,得出结果后再与 xxx 进行对比。通过这一特性,自编码器可以随机生成与训练数据类似的数据,比如对图片进行重建。AE的结构无监督学习的数据没有额外的标注信息,只有数据 xxx 本身。利用数据 xxx 本身作为监督信号来指导网络的训练,即希望神经网络能够学习到映射 fθ:x→xf_{\theta}:x\to xfθ:x→x。我们把网络 fθf_原创 2020-06-12 00:02:21 · 6197 阅读 · 0 评论 -
循环神经网络(RNN)原理解析
对于具有时间维度的数据,比如阅读的文本、说话时发出的语音信号、随着时间变化的股市参数等,这类数据并不一定具有局部相关性,同时数据在时间维度上的长度也是可变的。这一特性导致一般的神经网络难以处理,而循环神经网络则以序列数据为输入,在序列的演进方向进行递归且所有节点按链式连接,具有记忆性、参数共享并且图灵完备,因此在对序列的非线性特征进行学习时具有一定优势,可以很好地解决问题。下面就来详细说明其原理。RNN的结构基础的神经网络只在层与层之间建立了权连接,而 RNN 则在此基础上在层之间的神经元之间也建原创 2020-06-09 01:07:16 · 4582 阅读 · 0 评论 -
Keras预测股票走势
众所周知,股票预测是一个玄学问题,没有经验和方法,一不留神就可能被割韭菜了。当然本文仅针对单纯的数据进行预测,不具备实际操作性,主要用于学习技术。如果想将预测数据用于实际操作,则仅供娱乐,不要太注重结果。原创 2020-05-31 18:40:26 · 3608 阅读 · 16 评论 -
sklearn文本聚类分析
面对如今的大数据时代,各种各样的信息令人眼花缭乱,你根本不知道哪些信息是自己所需要的,而一个个看又会浪费很多时间,更不用说对一大堆信息进行分类或总结了。对于聚类处理,这里使用 birch...原创 2020-05-10 19:04:15 · 5533 阅读 · 4 评论 -
sklearn垃圾邮件识别
垃圾邮件识别,算是一个二分类问题,也是一个相对简单的文本分类问题。这里使用sklearn库进行训练,使用其集成的各种优秀算法,帮助我们快速区分大量烦人的垃圾邮件...原创 2020-05-03 14:53:44 · 2900 阅读 · 0 评论 -
sklearn库的使用步骤
sklearn是目前python中十分流行的用来实现机器学习的第三方包,其中包含了多种常见算法如:决策树,逻辑回归、集成算法等。即使你还不太懂机器学习的具体过程,依旧可以使用此库进行机器学习操作,因为其对各种算法进行了良好的封装,可以在不了解算法实现过程的情况下使用算法,所以可以把 sklearn 库当作学习过程中的一个过度,如果你想快速建立一个模型,这也是一个不错的选择。数据导入skle...原创 2020-04-30 22:09:12 · 3420 阅读 · 0 评论 -
TensorFlow2.0中Tensor的数据统计
张量通常较大,直接观察数据很难获得有用信息,通过获取这些张量的统计信息可以较轻松地推测张量数值的分布张量范数在神经网络中,范数常用来表示张量的权值大小,梯度大小等常用范数:1 −范数,定义为向量 x 的所有元素绝对值之和2 −范数,定义为向量 x ...原创 2020-01-26 16:46:38 · 1534 阅读 · 0 评论 -
TensorFlow2.0常用激活函数
激活函数是神经网络中一个十分重要的组成部分,它可以对神经元的接收信息进行非线性变换,将变换后的信息输出到下一层神经元激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中构造数据import tensorflow as tfimport matplotlib.pyplot as pltx = tf.linspace(-5....原创 2020-01-24 10:30:18 · 3120 阅读 · 20 评论 -
TensorFlow2.0中Tensor的合并与拆分
合并将多个张量在某个维度上合并为一个张量,可以使用拼接和堆叠操作实现,拼接操作并不会产生新的维度,仅在现有的维度上合并,而堆叠会创建新维度。拼接: tf.concat(tensors, axis)tensors:保存了所有需要合并的张量 Listaxis:指定需要合并的维度索引合并时输入张量的维数必须匹配,并且除 axis 外的所有维数必须相等举个例子:>>> im...原创 2020-01-23 10:52:03 · 6278 阅读 · 0 评论 -
TensorFlow2.0中Tensor的维度变换
在张量的操作中,维度变换是最重要的操作之一,为了满足不同场景的运算需求,可以任意切换数据的形式。现列举一些常用方法,以方便查看。张量变形在总数据量不变的情况下,将其变换为不同的组合形式,且将此数据平铺时排列顺序不改变举个例子:>>> import tensorflow as tf>>> x = tf.range(24) # 生成一组连续整数向量&g...原创 2020-01-04 03:07:25 · 4289 阅读 · 0 评论 -
TensorFlow2.0中Tensor的索引与切片
构建数据使用随机数据: import tensorflow as tfx = tf.random.normal([3, 5, 4, 2]) # 创建一组4维张量 xtf.Tensor: id=11, shape=(3, 5, 4, 2), dtype=float32, numpy=array([[[[ 2...原创 2019-12-16 23:46:19 · 2535 阅读 · 0 评论 -
PyTorch模型的保存与提取
训练好一个模型后,最好将它直接保存下来,等以后需要的时候就可以直接提取调用,十分方便也节约了很多时间。三个核心功能:torch.save:将序列化的对象保存到 disk。这个函数使用Python的pickle实用程序进行序列化。使用这个函数可以保存各种对象的模型、张量和字典。torch.load:使用 pickle unpickle 工具将 pickle 的对象文件反序列化为内存。tor...原创 2019-07-10 21:22:33 · 3945 阅读 · 0 评论 -
PyTorch手写数字识别(MNIST数据集)
MNIST 手写数字识别是一个比较简单的入门项目,相当于深度学习中的 Hello World,可以让我们快速了解构建神经网络的大致过程。虽然网上的案例比较多,但还是要自己实现一遍。代码采用 PyTorch 1.0 编写并运行...原创 2019-06-05 08:27:40 · 29570 阅读 · 47 评论 -
PyTorch的Optimizer训练工具
torch.optim 是一个实现了各种优化算法的库。大部分常用的方法得到支持,并且接口具备足够的通用性,使得未来能够集成更加复杂的方法。使用 torch.optim,必须构造一个 optimizer 对象。这个对象能保存当前的参数状态并且基于计算梯度更新参数。...原创 2019-05-31 16:06:07 · 2762 阅读 · 0 评论 -
PyTorch搭建神经网络
所有的网络模型都应该继承 torch.nn.Module 类,需要重写初始化函数 __init__() 和前向过程 forward()。__init__() 函数调用父类的初始化函数;forward() 函数用于构建网络从输入到输出的过程。手动搭建举个例子:import torchimport torch.nn.functional as Fclass Net1(torch.nn....原创 2019-05-29 12:28:53 · 1252 阅读 · 0 评论 -
PyTorch中nn.Module浅析
torch.nn.Modules 相当于是对网络某种层的封装,包括网络结构以及网络参数和一些操作torch.nn.Module 是所有神经网络单元的基类...原创 2019-05-29 08:08:01 · 5595 阅读 · 0 评论 -
PyTorch中nn.Linear浅析
nn.Linear 对输入数据做线性变换:y=Ax+b,是最简单的线性回归函数,也是构建神经网络的基础方法...原创 2019-05-27 17:56:06 · 34409 阅读 · 5 评论 -
PyTorch常用激活函数
两个或多个线性网络层叠加,并不能学习一个新的东西,简单的堆叠网络层,而不经过非线性激活函数激活,学到的仍然是线性关系。通过激活函数的加入可以学到非线性的关系,这对于特征提取具有更强的能力...原创 2019-05-27 08:34:46 · 19593 阅读 · 0 评论 -
PyTorch的自动求导
排除子图每个变量都有两个标志:requires_grad 和 volatile。它们都允许从梯度计算中精细地排除子图,并可以提高效率。requires_grad如果有一个单一的输入操作需要梯度,它的输出也需要梯度。相反,只有所有输入都不需要梯度,输出才不需要。如果其中所有的变量都不需要梯度进行,后向计算不会在子图中执行...原创 2019-05-03 13:44:45 · 613 阅读 · 0 评论 -
PyTorch中Tensor的高阶操作
条件选取:torch.where(),以条件返回从 x 或 y 中选择元素的张量。查表搜集:torch.gather(),沿给定轴 dim,将输入索引张量 index 指定位置的值进行聚合...原创 2019-05-02 21:38:20 · 4463 阅读 · 0 评论 -
PyTorch中Tensor的数据统计
范数:torch.norm(input, p=2) → float还有最基础的统计方法,比如张量中的最小值、最大值、均值、累加、累积。比较操作: torch.topk()、 torch.kthvalue()、torch.eq()、torch.equal()...原创 2019-05-01 22:22:28 · 14981 阅读 · 0 评论 -
PyTorch中Tensor的拼接与拆分
拼接张量:在给定维度上对输入的张量序列 seq 进行连接操作拆分张量:将输入张量分割成相等形状的 chunks(如果可分)。 如果沿指定维的张量形状大小不能被 split_size 整分, 则最后一个分块会小于其它分块。 ...原创 2019-04-26 23:58:59 · 106726 阅读 · 2 评论 -
PyTorch中Tensor的维度变换
对于 PyTorch 的基本数据对象 Tensor (张量),在处理问题时,需要经常改变数据的维度,以便于后期的计算和进一步处理,本文旨在列举一些维度变换的方法并举例,方便大家查看。维度查看:torch.Tensor.size()查看当前 tensor 的维度举个例子:>>> import torch>>> a = torch.Tensor([[[1...原创 2019-04-25 23:48:18 · 48959 阅读 · 2 评论 -
机器学习笔记之大规模机器学习
学习大数据集获取高性能的机器学习系统途径是采用低偏差的学习算法,并用大数据进行训练。从下面的图中可以明确,只要使用大数据对算法进行训练,它的效果似乎会更好:从这样的结果可以得出,在机器学习中,决定因素往往不是最好的算法而是谁的训练数据最多。但是大数据集有它自己的特殊的问题,即计算问题。假设有一亿个训练样本,想要训练一个线性回归模型或一个逻辑回归模型,然后用梯度下降进行更新:θj=θj−α1...原创 2019-04-22 00:15:16 · 791 阅读 · 0 评论 -
机器学习笔记之推荐系统
问题规划机器学习领域的一个伟大思想:对于某些问题,有一些算法可以自动地学习一系列合适的特征,比起手动设计或编写特征更有效率。这是目前做的比较多的研究,有一些环境能让你开发某个算法来学习使用那些特征。推荐系统预测电影评分的问题:前三部电影是爱情片,后两部则是动作片,我们可以看出 Alice 和 Bob 似乎更倾向与爱情片, 而 Carol 和 Dave 似乎更倾向与动作片,并且没有一个用户...原创 2019-04-21 15:22:52 · 2883 阅读 · 0 评论 -
机器学习笔记之异常检测
问题动机异常检测问题是机器学习算法的一个常见应用,这种算法的一个有趣之处在于:它虽然主要用于非监督学习问题,但从某些角度看,它又类似于一些监督学习问题。举例:比如制造飞机引擎,当生产的飞机引擎从生产线上流出时,需要进行QA(质量控制测试),而作为这个测试的一部分,测量了飞机引擎的一些特征变量,比如引擎运转时产生的热量,或者引擎的振动等等。这样一来,你就有了一个数据集,从 x(1)x^{(1...原创 2019-04-21 01:41:51 · 5623 阅读 · 1 评论 -
机器学习笔记之降维
数据压缩本章谈论第二种类型的无监督学习问题,称为降维。数据压缩不仅可以压缩数据,因而使用较少的计算机内存或磁盘空间,也可以加快学习算法的速度。二维降到一维:假设我们未知两个的特征: x1x_1x1:用厘米表示的长度;x2x_2x2:用英寸表示同一物体的长度将数据从二维降至一维: 假使要采用两种不同的仪器来测量一些东西的尺寸,其中一个仪器测量结果的单位是英寸,另一个仪器测量的结果是厘米...原创 2019-04-20 12:05:01 · 3686 阅读 · 0 评论 -
机器学习笔记之无监督学习
无监督学习首先,拿监督学习来进行比较,有一个带标签的训练集,目标是找到一条能够区分正样本和负样本的决策边界:在一个典型的监督学习中,有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,需要据此拟合一个假设函数。与此不同的是,在非监督学习中,我们的数据没有附带任何标签,拿到的数据就是这样的:在这里有一系列点,却没有标签。也就是说,在非监督学习中,需要将一系列无标签的训练...原创 2019-04-20 09:20:13 · 3270 阅读 · 0 评论 -
机器学习笔记之支持向量机
优化目标与逻辑回归和神经网络相比,支持向量机,或者简称 SVM,在学习复杂的非线性方程时提供了一种更为清晰、更加强大的方式。回顾一下逻辑回归的相关概念,看如何进行改动可以得到支持向量机。逻辑回归的假设函数为 hθ(x)=11+e−θTxh_\theta(x)=\frac{1}{1+e^{-\theta^Tx}}hθ(x)=1+e−θTx1,对应的图像如下:Logistic 回归中的代价...原创 2019-04-18 17:18:04 · 2466 阅读 · 0 评论 -
机器学习笔记之反向传播算法
代价函数确认标记方法:假设神经网络的训练样本有 m 个,每个包含一组输入 x 和一组输出信号 y,L 表示神经网络层数,S_l 表示第 l 层的单元数(神经元数量),S_L 代表输出层的单元数。假设有如下的神经网络和训练集:图中下半部分左侧是二元分类问题,右侧是多类别分类问题。普通 Logistic回归 中的代价函数:J(θ)=−1m[∑i=1...原创 2019-04-14 00:05:05 · 2222 阅读 · 0 评论 -
机器学习笔记之神经网络介绍
非线性假设无论是线性回归还是逻辑回归,当特征太多时,计算的负荷会非常大。神经网络是一种很古老的算法,它最初产生的目的是制造能模拟大脑的机器。如果能找出大脑的学习算法,然后在计算机上执行大脑学习算法或与之相似的算法,就是人工智能方向的发展...原创 2019-04-07 00:21:16 · 989 阅读 · 0 评论 -
机器学习笔记之正则化
在训练数据不够多,或者是过度训练的情况下,经常会导致过拟合。正则化就是向原始模型引入额外信息,通过向目标函数添加一个参数范数惩罚项来降低模型容量的方法,以便于更好地拟合训练集...原创 2019-03-23 01:01:18 · 2088 阅读 · 0 评论 -
机器学习笔记之Logistic回归
Logistic 回归是一种分类方法,因变量可以是二分类也可以是多分类,但常用于二分类问题。是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域...原创 2019-03-21 13:56:02 · 1877 阅读 · 0 评论 -
机器学习笔记之多元梯度下降法
梯度下降法作为机器学习中很基础的方法,是我们必须要掌握的。随机以一组数据作为例子:x1x2x3…xn…y72011363…26…23291612015…33…38418721572…51…573…………………以上角标作为行索引,以下角标作为列索引第二行可以写成:x(2)=[91612015...原创 2019-03-19 18:19:05 · 5334 阅读 · 8 评论 -
PyTorch构建卷积神经网络
卷积神经网络由一个或多个卷积层和顶端的全连通层组成,同时也包括关联权重和池化层。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果,且考量的参数更少。卷积神经网络的运作,以图像识别举例: 神经网络有输入输出值,当输入值是图片时,实际输入的并不是我们肉眼看到的图案,而是只能被计算机识别的一堆数字。卷积神经网络有一个批量过滤器,持续不断地在图片上滚动收集图片里的信息,每一次收...原创 2019-10-01 23:59:33 · 7653 阅读 · 3 评论