eta

Keras使用总结,构建图像分类模型(针对小数据集)

江枫思渺然 提交于 2020-04-08 08:32:14
感谢作者分享- http://bjbsair.com/2020-04-07/tech-info/30654.html Keras基本的使用都已经清楚了,那么这篇主要学习如何使用Keras进行训练模型,训练训练,主要就是“练”,所以多做几个案例就知道怎么做了。   在本文中,我们将提供一些面向小数据集(几百张到几千张图片)构造高效,实用的图像分类器的方法。 1,热身练习——CIFAR10 小图片分类示例(Sequential式)   示例中CIFAR10采用的是Sequential式来编译网络结构。代码如下: 要训练模型,首先得知道数据长啥样 from future import print_function import keras from keras.datasets import cifar10 from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten from keras.layers import Conv2D, MaxPooling2D batch_size = 32 num_classes = 10 epochs =

机器学习第4章训练模型

拟墨画扇 提交于 2020-03-27 17:27:33
参考:作者的 Jupyter Notebook Chapter 2 – End-to-end Machine Learning project 生成图片并保存 from __future__ import division, print_function, unicode_literals import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import os np.random.seed(42) mpl.rc('axes', labelsize=14) mpl.rc('xtick', labelsize=12) mpl.rc('ytick', labelsize=12) # Where to save the figures PROJECT_ROOT_DIR = "images" CHAPTER_ID = "traininglinearmodels" def save_fig(fig_id, tight_layout=True): path = os.path.join(PROJECT_ROOT_DIR, CHAPTER_ID, fig_id + ".png") print("Saving figure", fig_id) if tight_layout: plt.tight

广义线性回归

十年热恋 提交于 2020-03-03 02:35:54
1.概述 广义线性模型[generalize linear model]线性模型的扩展,通过联结函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。其特点是不强行改变数据的自然度量,数据可以具有非线性和非恒定方差结构。是线性模型在研究响应值的非正态分布以及非线性模型简洁直接的线性转化时的一种发展。 2.原理 给定随机变量YYY,观测值为yyy,服从指数型分布 y|x,theta~ ExponentialFamily(η) 预测的值hθ(x)=E[T(y)∣x]通常T(y)=y 假设E(Y)=μ,且μ与η由如下关系:g(μ)=η,则μ=g-1(η),g(μ)称之为联系函数。 η = transpose(theta)*X 常见的指数族分布:伯努利分布、高斯分布、多项式分布、泊松分布、指数分布、伽马分布、贝塔分布、狄利克雷分布、维希特分布…… 以逻辑回归(逻辑回归就是广义线性回归的一种)为例说明: 其中g(z) = logit(p)即为联系函数。 来源: https://www.cnblogs.com/yangyang12138/p/12399489.html

逻辑回归输出的值是真实的概率吗?

我的梦境 提交于 2020-02-28 07:30:28
本文只在 博客 基础上,在 三、指数分布族 中有所改动。 逻辑回归作为被广泛使用的二分类模型,面试中自然是不可缺少的。但要深刻理解逻辑回归又不是那么容易的,比如说,逻辑回归输出的值是0到1之间的值,这个值是真实的概率吗?逻辑回归为什么要选择sigmoid函数的形式,而不是其他将数值映射到0到1之间的形式?本文试图给出一个尽可能简单明了的分析。 一、从一个例子开始 假设你在一家金融公司工作,老板交给你一个任务,建一个模型,用来预测一个借款人是否会违约,公司拥有一个借款人的特征数据,比如年龄。 将是否违约作为标签变量y,0表示没有违约,1表示违约。在给定特征x的情况下, 我们假设 y 是一个服从伯努利分布的二值随机变量。注意,这是我们做的第一个假设哦!从某种意义上讲,模型准不准,首先要看假设合不合理。 我们的任务用数学语言描述就是,寻找一个模型,输入x后,可以告诉我们y所服从的随机分布的参数,知道参数后,就可以计算y的期望作为预测。 具体到违约预测,上面所说的随机分布就是指伯努利分布,该分布的参数就是Φ=P(y=1),同时也是该分布的期望。 请认真体会一下我们的思路: 1、对每一个确定的x,y仍然是一个随机变量 2、该随机变量服从某个随机分布 3、努力求出这个随机分布的参数 4、求出该随机分布的期望 5、将期望作为预测值 二、从更高的层次看待伯努利分布 那么

D2L-pytorch版 Task07笔记

情到浓时终转凉″ 提交于 2020-02-27 10:45:59
优化算法进阶 1.Momentum 目标函数有关自变量的梯度代表了目标函数在自变量当前位置下降最快的方向。因此,梯度下降也叫作最陡下降(steepest descent)。在每次迭代中,梯度下降根据自变量当前位置,沿着当前位置的梯度更新自变量。然而,如果自变量的迭代方向仅仅取决于自变量当前位置,这可能会带来一些问题。对于noisy gradient,我们需要谨慎的选取学习率和batch size, 来控制梯度方差和收敛的结果。 g t = ∂ w 1 ∣ B t ∣ ∑ i ∈ B t f ( x i , w t − 1 ) = 1 ∣ B t ∣ ∑ i ∈ B t g i , t − 1 . \mathbf{g}_t = \partial_{\mathbf{w}} \frac{1}{|\mathcal{B}_t|} \sum_{i \in \mathcal{B}_t} f(\mathbf{x}_{i}, \mathbf{w}_{t-1}) = \frac{1}{|\mathcal{B}_t|} \sum_{i \in \mathcal{B}_t} \mathbf{g}_{i, t-1}. g t ​ = ∂ w ​ ∣ B t ​ ∣ 1 ​ i ∈ B t ​ ∑ ​ f ( x i ​ , w t − 1 ​ ) = ∣ B t ​ ∣ 1 ​ i ∈ B t ​ ∑ ​

《动手学深度学习》批量归一化和残差网络;凸优化;梯度下降

北慕城南 提交于 2020-02-22 06:54:34
批量归一化和残差网络;凸优化;梯度下降 批量归一化和残差网络 对全连接层做批量归一化 对卷积层做批量归一化 残差网络(ResNet) ResNet模型 稠密连接网络(DenseNet) 过渡层 DenseNet模型 凸优化 深度学习与凸优化 优化在深度学习中的挑战 凸性 Jensen不等式 凸函数性质 梯度下降 一维 多维 批量归一化和残差网络 对全连接层做批量归一化 归一化增加在全连接层激活函数之前,全连接层输入为 u u u ,批量归一化运算符 B N BN B N ,那么使用批量归一化的全连接层的输出为: ϕ ( BN ( x ) ) \phi(\text{BN}(\boldsymbol{x})) ϕ ( BN ( x ) ) 其中批量归一化输入 x x x 由仿射变换 x = W u + b x=Wu+b x = W u + b 得到 对于一个由 m m m 个样本组成的小批量,仿射变换的输出为一个新的小批量 B = x ( 1 ) , . . . , x ( m ) B=x^{(1)},...,x^{(m)} B = x ( 1 ) , . . . , x ( m ) ,他们是批量归一化曾的输入。批量归一化层的输出为: y ( i ) = B N ( x ( i ) ) y^{(i)}=BN(x^{(i)}) y ( i ) = B N ( x ( i ) ) 批量归一化

机器学习基石10-Logistic Regression

烈酒焚心 提交于 2020-02-09 05:50:04
注: 文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程。 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了Linear Regression线性回归,用均方误差来寻找最佳的权重向量 \(w\) ,获得最好的线性预测。本节课将介绍Logistic Regression逻辑回归问题。 一、Logistic Regression Problem 一个心脏病预测的问题:根据患者的年龄、血压、体重等信息,来预测患者是否会有心脏病。很明显这是一个二分类问题,其输出 \(y\) 只有 \({0,1}\) 两种情况。 二元分类,一般情况下,理想的目标函数 \(f(x)>0.5\) ,则判断为正类 \(1\) ;若 \(f(x)<0.5\) ,则判断为负类 \(-1\) 。 但是,如果我们想知道的不是患者有没有心脏病,而是到底患者有多大的几率是心脏病。这表示,我们更关心的是目标函数的值(分布在0,1之间),表示是正类的概率(正类表示是心脏病)。这跟我们原来讨论的二分类问题不太一样,我们把这个问题称为软性二分类问题('soft' binary classification)。这个值越接近 \(1\) ,表示正类的可能性越大;越接近 \(0\) ,表示负类的可能性越大。 对于软性二分类问题,理想的数据是分布在 \([0,1]\) 之间的具体值,但是实际中的数据只可能是 \(0\) 或者

预测送达时间的模型工程化思路(学习记录)

走远了吗. 提交于 2020-02-01 05:00:00
文章目录 笔记 业务流程迭代中的模型改进 1.损失函数的选择 2.业务规则融入模型 3.缺失值处理 长尾问题优化 工程开发实践 1.训练实践部分 整体训练流程 数据并行训练方式 TF模型集成预处理 2.TF模型线上预测 笔记 今天在美团技术博客上学习了一下送达时间的预测模型工程化,记录一下。 ETA(Estimated Time of Arrival,“预计送达时间”),即用户下单后,配送人员在多长时间内将外卖送达到用户手中。送达时间预测的结果,将会以”预计送达时间”的形式,展现在用户的客户端页面上,是配送系统中非常重要的参数,直接影响了用户的下单意愿、运力调度、骑手考核,进而影响配送系统整体成本和用户体验。 ETA作为系统的调节中枢,需要平衡用户-骑手-商家-配送效率。从用户的诉求出发,尽可能快和准时,从骑手的角度出发,太短会给骑手极大压力。从调度角度出发,太长或太短都会影响配送效率。而从商家角度出发,都希望订单被尽可能派发出去,因为这关系到商家的收入。 对于ETA建模,不光是简单一个时间的预估,更需要的是全链路的时间预估,同时更需要兼顾”单量-运力-用户转化率”转化率之间的平衡。配送ETA的演变包括了数据、特征层面的持续改进,也包括了模型层面一路从LR-XGB-FM-DeepFM-自定义结构的演变。 业务流程迭代中的模型改进 与大部分CTR模型的迭代路径相似

拉格朗日对偶性

倖福魔咒の 提交于 2020-01-16 20:08:43
拉格朗日对偶性 在约束最优化的问题中,常常需要利用拉格朗日对偶性(Language duality)将原始问题转为对偶问题,通过解决对偶问题来得到原始问题的解。 拉格朗日乘数法 拉格朗日乘数法是用来求条件极值的,极值问题可以分为两类: 求函数在给定区间上的极值,对自变量没有其他的要求,这种极值称为无条件极值。 对自变量有一些附加的约束条件限制下的极值,称为条件极值 比如给定椭球 x 2 a 2 + y 2 b 2 + z 2 c 2 = 1 \frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1 a 2 x 2 ​ + b 2 y 2 ​ + c 2 z 2 ​ = 1 ,求这个椭球内接长方体的最大体积,这个问题实际上就是条件极值问题,即在条件: x 2 a 2 + y 2 b 2 + z 2 c 2 = 1 \frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1 a 2 x 2 ​ + b 2 y 2 ​ + c 2 z 2 ​ = 1 下,求 f ( x , y , z ) = 8 x y z f(x,y,z)=8xyz f ( x , y , z ) = 8 x y z 的最大值 这个问题实际上可以先根据条件消去z,然后代入转化为无条件极值问题来处理

深度学习的Tips

☆樱花仙子☆ 提交于 2020-01-07 08:39:26
引言 本文主要讲解了在进行深度学习时一些实用的提示。是 李宏毅 深度学习-Tips for Trainning DNN 的笔记。 深度学习的方法 经过三步骤后得到一个神经网络,接下来判断在训练集上的表现如何?如果结果不好则回头看看三个步骤哪里出了问题;如果在训练集上的正确率很好,则拿训练集来试试,如果此时在测试集上的准确率不好,则说明是过拟合了;如果在训练集和测试集都得到很好的结果话,就说明这个网络是比较nice的。 不要错怪过拟合 在上图右56层的网络的错误率比20层的还要高,不能这样就说是过拟合导致的。从上图左可以看到在训练集上20层的结果本来就比56层的就好,说明这个网络没有训练好。 训练集上的结果不好与测试集上的结果不好是不一样的,有不同的途径可以解决这些问题。比如Dropout可以用于解决由于参数多而样本少导致的过拟合问题。 针对这些问题的解决方法可以有上面几种,比如如果在训练集上的结果不好,我们可以尝试换一个激活函数。 在手写数字识别中,激活函数就从 Sigmoid 换到了 relu 。 激活函数是 Sigmoid 的情况下,当隐藏层的数量到了9,10层的时候,整个准确率就不忍直视了。见 深度学习实例——Keras实现手写数字识别 造成上面这种情况有个原因是 梯度消失问题(Vanishing Gradient Problem) 当网络很深的时候