epoch

写给程序员的机器学习入门 (六)

半腔热情 提交于 2020-08-13 13:37:28
这一篇将会举两个例子说明怎么应用递归模型,包括文本情感分类和预测股价走势。与前几篇不同,这一篇使用的数据是现实存在的数据,我们将可以看到更高级的模型和手法🤠。 例子① - 文本感情分类 文本感情分类是一个典型的例子,简单的来说就是给出一段话,判断这段话是正面还是负面的,例如淘宝或者京东上对商品的评价,豆瓣上对电影的评价,更高级的情感分类还能对文本中的感情进行细分。因为涉及到自然语言,文本感情分类也属于自然语言处理 (NLP, Nature Langure Processing),我们接下来将会使用 ami66 在 github 上 公开的数据 ,来实现根据商品评论内容识别是正面评论还是负面评论。 在处理文本之前我们需要对文本进行切分,切分方法可以分为按字切分和按单词切分,按单词切分的精度更高但要求使用分词类库。处理中文时我们可以使用开源的 jieba 类库来按单词切分,执行 pip3 install jieba --user 即可安装,使用例子如下: # 按字切分 >>> words = [c for c in "我来到北京清华大学"] >>> words ['我', '来', '到', '北', '京', '清', '华', '大', '学'] # 按单词切分 >>> import jieba >>> words = list(jieba.cut("我来到北京清华大学")) >>

Linux下制作rpm包工具fpm

拈花ヽ惹草 提交于 2020-08-13 12:32:32
fpm工具安装 CentOS 6.x下安装 #centos6 由于自带yum源中的ruby版本太低,需要如下安装: yum -y install rpm-build yum update nss gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB curl -sSL https://get.rvm.io | bash -s stable source /etc/profile.d/rvm.sh rvm install 1.9.3 gem install fpm rvm use 1.9.3 --default #选择ruby版本 CentOS 7.x下安装 #安装ruby: yum -y install ruby rubygems ruby-devel rpm-build gem install fpm FPM常用参数 -f :强制覆盖[覆盖同名rpm包] -n :指定的rpm包名 -p :指定的rpm包文件放置位置 -v :指定的rpm包版本 -d :指定依赖的软件 ( [-d 'name'] or [-d 'name > version'] 例子: -d 'libstdc+

YOLOV3剪枝源码阅读---模型部署加速

被刻印的时光 ゝ 提交于 2020-08-13 09:49:13
YOLOV3剪枝 论文:Network Slimming-Learning Efficient Convolutional Networks through Network Slimming 剪枝项目参考 https://github.com/tanluren/yolov3-channel-and-layer-pruning 主要思路 1、利用batch normalization中的缩放因子γ 作为重要性因子,即γ越小,所对应的channel不太重要,就可以裁剪(pruning)。 2、约束γ的大小,在目标方程中增加一个关于γ的L1正则项,使其稀疏化,这样可以做到在训练中自动剪枝,这是以往模型压缩所不具备的。 剪枝过程 img 这里写图片描述 分为三部分,第一步,训练;第二步,剪枝;第三步,微调剪枝后的模型,循环执行 YOLOV3剪枝源码 1、正常剪枝 这部分分析来自该仓库 https://github.com/coldlarry/YOLOv3-complete-pruning ,但是更新的仓库也可以完成正常剪枝,prune.py。 使用了正常剪枝模式,不对short cut层(需要考虑add操作的维度一致问题)及上采样层(无BN)进行裁剪。 1、找到需要裁剪的BN层的对应的索引。 2、每次反向传播前,将L1正则产生的梯度添加到BN层的梯度中。 3、设置裁剪率进行裁剪。

Tensorflow2 常见的数据增强方法及其实现汇总

大城市里の小女人 提交于 2020-08-13 09:24:37
在CV方向得模型搭建中,我们常常需要对输入得图片进行数据增强,这将会减少模型对数据的过拟合从儿提升模型的性能。在实际工程中。如工业缺陷、医疗图像等场景,我们获得的数据毕竟有限,通过数据增强来提升模型的性能是非常有用的。此时只能够依靠图像增强的方法来建立训练所需要的数据集。 数据增强主要分为 监督的数据增强 和 无监督的数据增强 方法。其中有监督的数据增强又可以分为 单样本数据增强 和 多样本数据增强 方法,无监督的数据增强分为 生成新的数据 和 学习增强策略 两个方向。 这里我们介绍一种比较强大的数据增强工具,所有你能想到的增强方法都有—— imgaug 。 imgaug是用于机器学习实验中图像增强的库。它支持广泛的扩充技术,可以轻松地组合它们并以随机顺序或在多个CPU内核上执行它们,具有简单而强大的随机界面,不仅可以扩充图像,还可以扩充关键点/地标,边界框,热图和分段图。 imgaug安装命令: pip install imgaug 这里先介绍常用的数据增强方法,后续介绍如何在Tensorflow2中应用这些增强方法。 具体使用方法,如下: import cv2 import imgaug.augmenters as iaa seq = iaa.Sequential([ iaa.Fliplr(0.5), # horizontally flip 50% of the images

Tensorflow实现ResNet50残差神经网络,进行图像分类

给你一囗甜甜゛ 提交于 2020-08-13 04:59:48
在图像分类领域内,其中的大杀器莫过于Resnet50了,这个残差神经网络当时被发明出来之后,顿时毁天灭敌,其余任何模型都无法想与之比拟。我们下面用Tensorflow来调用这个模型,让我们的神经网络对Fashion-mnist数据集进行图像分类.由于在这个数据集当中图像的尺寸是28*28*1的,如果想要使用resnet那就需要把28*28*1的灰度图变为224*224*3的RGB图,我们使用OpenCV库可以很容易将图像进行resize。 首先我们进行导包: import os,sys import numpy as np import scipy from scipy import ndimage import tensorflow as tf import matplotlib.pyplot as plt from tensorflow.keras.applications.resnet50 import ResNet50 from tensorflow.keras.preprocessing import image from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions from PIL import Image import random 加载数据集:

使用脑电图慢皮层电位重建3D空间中的手,肘和肩的实际和想象的轨迹

陌路散爱 提交于 2020-08-12 11:27:22
点击上面"脑机接口社区"关注我们 更多技术干货第一时间送达 导读 从神经活动中解码想象运动的运动学的能力对于开发可以帮助行动不便的人的假肢设备至关重要。当前采用脑电图(EEG)等无创记录方法解码实际和想象的手运动轨迹来控制神经运动假体,通常通过应用多维线性回归(mLR)模型来调整神经信号和肢体运动学这两种时域信号。然而还存在很多问题:EEG信号和特定的慢皮质电位(SCP)是否具有运动神经相关性。是否可以重建近端臂关节即肩膀的轨迹尚未测试,以及解码性能是否取决于运动速度和/或位置变化。 研究人员使用mLR模型(通常用于运动轨迹预测(MTP))并使用源定位来检测和比较大脑之间的相互关系,从而预测了7个受试者在两种运动类型(实际和想象的)的时间序列中在3D空间中的手,肘和肩部轨迹在每个手臂关节实际和想象的动作中激活的区域。 对于所有的手臂关节和动作类型,SCP对轨迹重建的贡献最大,并且使用运动学之前的神经信号将解码精度达到峰值120-210 ms。研究结果证明了从头皮脑电图预测所有手臂关节的3D想象轨迹的可行性,而且还发现在慢速皮质电位中存在与运动相关的神经相关因素。 实验 研究人员共进行了四次实验。每一次运行都包含了一组实际的运动和一组想象的运动(图1(a))。每组由4个子组组成,每个子组由对其中一个目标(T1、T2、T3、T4)的20次连续试验(运动周期)组成

centos8使用yum安装nginx最新版

微笑、不失礼 提交于 2020-08-12 10:44:54
1、先安装 yum-utils [root@izgu3e8gvhx2vgz ~]# yum install yum-utils 2、添加nginx源。创建文件/etc/yum.repos.d/nginx.repo,文件内容如下: [root@izgu3e8gvhx2vgz ~]# vim /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl= http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey= https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl= http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey= https://nginx.org/keys/nginx_signing.key module_hotfixes=true 3,查看nginx源 [root

人人都要会编程—金融大佬问我利率预测

半城伤御伤魂 提交于 2020-08-12 10:00:43
事情是这样子的。 在一个夜深人静的晚上,我接到了某证券行业大佬的问题——关于编程。 波哥,睡了吗? 内心OS: 作为一个金融大佬,怎么会这么晚还找我问编程的问题? 后来知道,原来他们公司内部组织了一个比赛——利率预测。 原来是这,这还不简单嘛,不就是一个线性回归模型吗。和人工智能领域的 Hello world 级别的房价预测模型不是一样的嘛。我给他一顿解释,巴拉巴拉。。。 “what, 你说的我好想有点明白了?但是怎么做我还是不知道~” 金融大佬说。 --- 这里是分割线 --- 导入 paddlepaddle 和数据处理包 #加载[飞桨](https://www.oschina.net/action/visit/ad?id=1185 "飞桨")、Numpy和相关类库 import [paddle](https://www.oschina.net/action/visit/ad?id=1185 "paddle") import [paddle](https://www.oschina.net/action/visit/ad?id=1185 "paddle").fluid as fluid import [paddle](https://www.oschina.net/action/visit/ad?id=1185 "paddle").fluid.dygraph as dygraph

Dropout的Bagging思想以及使用要点

試著忘記壹切 提交于 2020-08-12 08:46:05
一:Dropout的原理及bagging思想 1:Dropout原理 Dropout是深度学习中应对过拟合问题简单且有效的一种正则化方法。原理很简单:在训练阶段,在每一个Epoch中都以一定比例随机的丢弃网络中的一些神经元,如图一所示,使得每次训练的模型包含的神经元都不同。这种方式使得网络权重在更新过程中不依赖隐藏节点之间的固定关系(隐藏层节点的固定关系可能会影响参数更新过程),同时使得网络不会对某一个特定的神经元过分敏感,从而提高了网络的泛化能力。 图一:Dropout原理图 2:Dropout的Bagging思想 从《百面深度学习》这本书中的相关内容介绍领悟到,Dropout这种以一定比例随机丢弃神经元的方式是一种Bagging的思想:神经网络通过Dropout层以一定比例随即的丢弃神经元,使得每次训练的网络模型都不相同,多个Epoch下来相当于训练了多个模型, 同时每一个模型都参与了对最终结果的投票, 从而提高了模型的泛化能力。在此注意,Dropout与Bagging有一点不同是:Bagging的各个模型之间是相互独立的,而Dropout各个模型之间是共享权重的。 bagging是利用相同数据训练多个模型,然后将各个模型的结果投票或者加权取平均等。 二:Dropout使用要点 1:Dropout参数设置介绍 首先说一下Dropout的参数:官方文档中是这样介绍的: p:

pytorch入门2.2构建回归模型初体验(开始训练)

牧云@^-^@ 提交于 2020-08-12 08:30:49
pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验(开始训练) 经过上面两个部分,我们完成了数据生成、网络结构定义,下面我们终于可以小试牛刀,训练模型了! 首先,我们先定义一些训练时要用到的参数: EPOCH = 1000 # 就是要把数据用几遍 LR = 0.1 # 优化器的学习率,类似爬山的时候应该迈多大的步子。 # BATCH_SIZE=50 其次,按照定义的模型类实例化一个网络: if torch.cuda.is_available(): # 检查机器是否支持GPU计算,如果支持GPU计算,那么就用GPU啦,快! model = LinearRegression().cuda() # 这里的这个.cuda操作就是把模型放到GPU上 else: model = LinearRegression() # 如果不支持,那么用cpu也可以哦 # 定义损失函数,要有个函数让模型的输出知道他做的对、还是错,对到什么程度或者错到什么程度,这就是损失函数。 loss_fun = nn.MSELoss() # loss function # 定义优化器,就是告诉模型,改如何优化内部的参数、还有该迈多大的步子(学习率LR)。 optimizer =