文章目录
  1. 1. 前言
  2. 2.基础数学知识
    1. 2.1.凸函数
    2. 2.2.Jensen不等式
  3. 3.EM算法所解决问题的例子
  4. 4.EM算法
    1. 4.1.模型说明
    2. 4.2.EM算法推导
    3. 4.3.EM算法收敛性证明
    4. 4.4. EM算法E步说明
  5. 5.小结
  6. 6.主要参考文献

1. 前言

  这是本人写的第一篇博客(2013年4月5日发在cnblogs上,现在迁移过来),是学习李航老师的《统计学习方法》书以及斯坦福机器学习课Andrew Ng的EM算法课后,对EM算法学习的介绍性笔记,如有写得不恰当或错误的地方,请指出,并多多包涵,谢谢。另外本人数学功底不是很好,有些数学公式我会说明的仔细点的,如果数学基础好,可直接略过。

2.基础数学知识

  在正式介绍EM算法之前,先介绍推导EM算法用到的数学基础知识,包括凸函数,Jensen不等式。

2.1.凸函数

  对于凸函数,凹函数,如果大家学过高等数学,都应该知道,需要注意的是国内教材如同济大学的《高等数学》的这两个概念跟国外刚好相反,为了能更好的区别,本文章把凹凸函数称之为上凸函数,下凸函数,具体定义如下:

上凸函数:函数 $f(x)$ 满足对定义域上任意两个数 $a$ , $b$ 都有 $f[(a+b)/2] ≥ [f(a)+f(b)]/2$
下凸函数:函数 $f(x)$ 满足对定义域上任意两个数 $a$ , $b$ 都有 $f[(a+b)/2] ≤ [f(a)+f(b)]/2$

  更直观的可以看图2.1和2.2:

%E4%B8%8A%E5%87%B8%E5%87%BD%E6%95%B0.png
%E4%B8%8B%E5%87%B8%E5%87%BD%E6%95%B0.png
图2.1. 上凸函数图2.2. 下凸函数

  可以清楚地看到图2.1上凸函数中,$f[(a+b)/2] ≥ [f(a)+f(b)]/2$,而且不难发现,如果f(x)是上凸函数,那么 $-f(x)$ 是下凸函数。
  当 $a≠b$ 时,$f[(a+b)/2] > [f(a)+f(b)]/2$ 成立,那么称 $f(x)$ 为严格的上凸函数,等号成立的条件当且仅当 $a=b$,下凸函数与其类似。

2.2.Jensen不等式

  有了上述凸函数的定义后,我们就能很清楚的Jensen不等式的含义,它的定义如下:

如果f是上凸函数,$X$ 是随机变量,那么 $f(E[X]) ≥ E[f(X)]$
特别地,如果f是严格上凸函数,那么 $E[f(X)] = f(E[X])$ 当且仅当 $p(X=E[X])=1$,也就是说 $X$ 是常量。

  那么很明显 $\log x$ 函数是上凸函数,可以利用这个性质。
  有了上述的数学基础知识后,我们就可以看具体的EM算法了。

3.EM算法所解决问题的例子

  在推导EM算法之前,先引用《统计学习方法》中EM算法的例子:

例1. (三硬币模型)假设有3枚硬币,分别记作 $A,B,C$ 。这些硬币正面出现的概率分别为 $π$,$p$ 和 $q$。投币实验如下,先投 $A$,如果 $A$ 是正面,即 $A=1$,那么选择投 $B$;$A=0$,投 $C$。最后,如果 $B$ 或者 $C$ 是正面,那么 $y=1$;是反面,那么 $y=0$;独立重复 $n$ 次试验 $(n=10)$,观测结果如下: $1,1,0,1,0,0,1,0,1,1$ 假设只能观测到投掷硬币的结果,不能观测投掷硬币的过程。问如何估计三硬币正面出现的概率,即 $\pi$,$p$ 和 $q$ 的值。

:设随机变量 $y$ 是观测变量,则投掷一次的概率模型为:$$P(y|\theta)=\pi p^y(1-p)^{1-y}+(1-\pi)q^y(1-q)^{1-y}$$有 $n$ 次观测数据 $Y$,那么观测数据 $Y$ 的似然函数为:$$P(Y|\theta) = \prod_n^{j=1}[\pi p^{y_j}(1-p)^{1-y_j}+(1-\pi)q^{y_j}(1-q)^{1-y_j}]$$那么利用最大似然估计求解模型解,即
\begin{align}
\widehat{\theta}& = \arg \max_{\theta} \log P(Y|\theta)\label{ex:loglikelihood1} \\
& = \arg \max_{\theta} \sum_{j=1}^{10} \log P(y^j|\theta)\label{ex:loglikelihood2} \\
& = \arg \max_{\theta} \sum_{j=1}^{10} \log [\pi p^{y_j}(1-p)^{1-y_j}+(1-\pi)q^{y_j}(1-q)^{1-y_j}]\label{ex:loglikelihood3}
\end{align} 这里将概率模型公式和似然函数代入 $\eqref{ex:loglikelihood1}$ 式中,可以很轻松地推出 $\eqref{ex:loglikelihood1} \Rightarrow \eqref{ex:loglikelihood2} \Rightarrow \eqref{ex:loglikelihood3}$,然后选取 $\theta(\pi,p,q)$,使得 $\eqref{ex:loglikelihood3}$ 式值最大,即最大似然。然后,我们会发现因为 $\eqref{ex:loglikelihood3}$ 中右边多项式 $+$ 符号的存在,使得 $\eqref{ex:loglikelihood3}$ 直接求偏导等于 $\theta$ 或者用梯度下降法都很难求得 $\theta$ 值。
这部分的难点是因为 $\eqref{ex:loglikelihood3}$ 多项式中 $+$ 符号的存在,而这是因为这个三硬币模型中,我们无法得知最后得结果是硬币 $B$ 还是硬币 $C$ 抛出的这个隐藏参数。那么我们把这个latent 随机变量加入到 log-likelihood 函数中,得
\begin{align}
l(\theta)& = \sum_{j=1}^{10}log\: \sum_{i=1}^{2}P(y_{j},z_{i}\mid \theta )\label{ex:latentlog1} \\
& = \sum_{j=1}^{10}log\: \sum_{i=1}^{2}Q_j(z_{i})\frac{P(y_{j},z_{i}\mid \theta )}{Q_j(z_{i})}\label{ex:latentlog2} \\
& \geq \sum_{j=1}^{10} \sum_{i=1}^{2}Q_j(z_{i})log\:\frac{P(y_{j},z_{i}\mid \theta )}{Q_j(z_{i})}\label{ex:latentlog3}
\end{align}
略看一下,好像很复杂,其实很简单,首先是公式 $\eqref{ex:latentlog1}$,这里将 $z_i$ 做为隐藏变量,当 $z_1$ 为结果由硬币 $B$ 抛出,$z_2$ 为结果由硬币C抛出,不难发现:$$\sum_{i=1}^{2}P(y_{j},z_{i}\mid \theta )=P(y_{j}\mid \theta )
=\pi p^{y_{j}}(1-p)^{1-y_{j}}+\pi q^{y_{j}}(1-q)^{1-y_{j}}$$   接下来公式说明 $\eqref{ex:latentlog1} \Rightarrow \eqref{ex:latentlog2}$ (其中 $\eqref{ex:latentlog2}$ 中 $Q(z)$ 表示的是关于 $z$ 的某种分布,$\sum_iQ_j(z_i)=1$,很直接,在 $P$ 的分子分母同乘以 $Q_(z_i)$。最后是 $\eqref{ex:latentlog2} \Rightarrow \eqref{ex:latentlog3}$,到了这里终于用到了第二节介绍的Jensen不等式,数学好的人可以很快发现,$\sum_{i=1}^2Q_j(z_i)\frac{P(y_j,z_i|\theta)}{Q_j(z_i)}$ 就是 $[\frac{P(y_j,z_i|\theta)}{Q_j(z_i)}]$ 的期望值(如果不懂,可google期望公式并理解),且log是上凸函数,所以就可以利用Jensen不等式得出这个结论。因为我们要让log似然函数 $l(\theta)$最大,那么这里就要使等号成立。根据Jensen不等式可得,要使等号成立,则要使 $\frac{P(y_j,z_i|\theta)}{Q_j(z_i)} =c$ 成立。
  再因为$\sum_iQ_j(z_i)=1$,所以得$\sum_iP(y_j,z_i|\theta)=c$,$c$ 为常数,那么(这里感谢网友@无影随想指出错误)$$Q(z_{i})=P(y_{j},z_{i}\mid \theta )/\sum_{i}P(y_{j},z_{i}\mid \theta )
=P(y_{j},z_{i})/P(y_{j}\mid \theta ) =P(z_{i}\mid y_{j},\theta)$$这里可以发现$$Q_j(z_{1}) =\frac{\pi p^{y_{j}}(1-p)^{1-y_{j}}}{\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}}\\
Q_j(z_{2} ) =\frac{(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}}{\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}}$$   OK,到这里,可以发现公式 $\eqref{ex:latentlog3}$ 中右边多项式已经不含有“+”符号了,如果知道 $Q(z)$ 的所有值,那么可以容易地进行最大似然估计计算,但是 $Q$ 的计算需要知道 $\theta$ 的值。这样的话,我们是不是可以先对θ进行人为的初始化 $\theta_0$,然后计算出 $Q$ 的所有值 $Q_1$ (在 $\theta_0$ 固定的情况下,可在 $Q_1$ 取到公式 $\eqref{ex:latentlog3}$ 的极大值),然后在对公式 $\eqref{ex:latentlog3}$ 最大似然估计,得出新的 $\theta_1$ 值(在固定Q1的情况下,取到公式 $\eqref{ex:latentlog3}$ 的极大值),这样又可以计算新的 $Q$ 值 $Q_1$,然后依次迭代下去。答案当然是可以。因为 $Q_1$ 是在 $\theta_0$ 的情况下产生的,可以调节公式 $\eqref{ex:latentlog3}$ 中 $\theta$ 值,使公式 $\eqref{ex:latentlog3}$ 的值再次变大,而 $\theta$ 值变了之后有需要调节 $Q$ 使 $\eqref{ex:latentlog3}$ 等号成立,结果又变大,直到收敛(单调有界必收敛),如果到现在还不是很清楚,具体清晰更广义的证明可以见下部分EM算法说明。
  另外对公式 $\eqref{ex:latentlog3}$ 进行求偏导等于 $\theta$,求最大值,大家可以自己练习试试,应该很简单的,这里不做过多陈述。
  在《统计学习方法》书中,进行两组具体值的计算

  • $\pi_0=0.5,\ p_0=0.5,\ q_0=0.5$,迭代结果为 $\pi=0.5,\ p=0.6,\ q=0.5$
  • $\pi_0=0.4,\ p_0=0.6,\ q_0=0.7$,迭代结果为 $\pi=0.4064,\ p=0.5368,\ q=0.6432$

两组值的最后结果不相同,这说明EM算法对初始值敏感,选择不同的初值可能会有不同的结果,只能保证参数估计收敛到稳定点。因此实际应用中常用的办法就是选取多组初始值进行迭代计算,然后取结果最好的值。

  在进行下部分内容之前,还需说明下一个东西。在上面的举例说明后,其实可以发现上述的解决方法跟一个简单的聚类方法很像,没错,它就是K-means聚类。K-means算法先假定k个中心,然后进行最短距离聚类,之后根据聚类结果重新计算各个聚类的中心点,一次迭代,是不是很像,而且K-means也是初始值敏感,因此其实K-means算法也包含了EM算法思想,只是这边EM算法中用P概率计算,而K-means直接用最短距离计算。所以EM算法可以用于无监督学习。在下一篇文章,我准备写下典型的用EM算法的例子,高斯混合模型(GMM,Gaussian Mixture Model)

4.EM算法

4.1.模型说明

  考虑一个参数估计问题,现有 ${y_1,y_2,…,y_n}$ 共 $n$ 个训练样本,需有多个参数 $\pi$ 去拟合数据,那么这个 $\log$ 似然函数是:$$l(\theta) = \sum_{j=1}^{n} \log P(y_j|\theta)$$  可能因为 $\theta$ 中多个参数的某种关系(如上述例子中以及高斯混合模型中的3类参数),导致上面的 $\log$ 似然函数无法直接或者用梯度下降法求出最大值时的 $\theta$ 值,那么这时我们需要加入一个隐藏变量 $z$,以达到简化 $l(\theta)$,迭代求解 $l(\theta)$ 极大似然估计的目的。

4.2.EM算法推导

  这小节会对EM算法进行具体推导,许多跟上面例子的解法推导是相同的,如果已经懂了,可以加速阅读。首先跟“三硬币模型”一样,加入隐变量 $z$ 后,假设 $Q(z)$ 是关于隐变量 $z$ 的某种分布,那么有如下公式:
\begin{align}
l(\theta)& = \sum_{j=1}^{n}log\: \sum_{i=1}P(y_{j},z_{i}\mid \theta )\label{infer1}\\
& = \sum_{j=1}^{n}log\: \sum_{i=1}Q(z_{i})\frac{P(y_{j},z_{i}\mid \theta )}{Q(z_{i})}\label{infer2}\\
& \geq \sum_{j=1}^{n} \sum_{i=1}Q(z_{i})log\:\frac{P(y_{j},z_{i}\mid \theta )}{Q(z_{i})}\label{infer3}
\end{align}  公式 $\eqref{infer1}$ 是加入隐变量,$\eqref{infer1} \Rightarrow \eqref{infer2}$ 是在基础上分子分母同乘以,$\eqref{infer2} \Rightarrow \eqref{infer3}$ 用到Jensen不等式(跟“三硬币模型”一样),等号成立的条件是,$c$ 是常数。再因为,则有如下 $Q$ 的推导:
\begin{equation*}\sum_{i}P(y_{j},z_{i}\mid \theta )/c=1\\
\Rightarrow \sum_{i}P(y_{j},z_{i}\mid \theta )=c\\
\qquad \qquad \qquad \qquad \Rightarrow Q_{j}(z_{i})=P(y_{j},z_{i}\mid \theta )/\sum_{i}P(y_{j},z_{i}\mid \theta )\\
\qquad \qquad \qquad \qquad \qquad =P(y_{j},z_{i}\mid \theta )/P(y_{j}\mid \theta )\\
\qquad \qquad \qquad =P(z_{i}\mid y_{j},\theta )
\end{equation*}  再一次重复说明,要使 $\eqref{infer3}$ 等式成立,则 $Q_j(z_i)$ 为 $y_j,\ z$的后验概率。算出 $Q_j(z_i)$ 后对 $\eqref{infer3}$ 就可以进行求偏导,以剃度下降法求得 $\theta$ 值,那么又可以计算新 $Q_j(z_i)$ 的值,依次迭代,EM算法就实现了。

EM 算法(1)
选取初始值 $\theta_0$ 初始化 $\theta$,$t=0$
Repeat {
  E步:
\begin{equation*}
\begin{split}
Q_{j}^{t}(z_{i})& =P(y_{j},z_{i}\mid \theta^{t} )/\sum_{i}P(y_{j},z_{i}\mid \theta^{t} )\\
& =P(y_{j},z_{i}\mid \theta^{t} )/P(y_{j}\mid \theta^{t} )\\
& =P(z_{i}\mid y_{j},\theta^{t} )
\end{split}
\end{equation*}  M步:
\begin{equation*}
\begin{split}
\theta^{t+1}& =arg\: max_{\theta }\: \sum_{j=1}^{n} \sum_{i}Q_{j}^{t}(z_{i})log\:\frac{P(y_{j},z_{i}\mid \theta )}{Q_{j}^{t}(z_{i})}\\
t& =t+1
\end{split}
\end{equation*}}直到收敛

4.3.EM算法收敛性证明

  当 $\theta$ 取到 $\theta_t$ 值时,求得$$\theta^{t+1} =arg\: max_{\theta }\: \sum_{j=1}^{n} \sum_{i}Q_{j}^{t}(z_{i})log\:\frac{P(y_{j},z_{i}\mid \theta )}{Q_{j}^{t}(z_{i})}$$那么可得如下不等式:\begin{align}
l(\theta^{t+1} )& = \sum_{j=1}^{n}log\: \sum_{i}Q_{j}^{t}(z_{i})\frac{P(y_{j},z_{i}\mid \theta^{t+1} )}{Q_{j}^{t}(z_{i})}\label{orderProof1}\\
& \geq \sum_{j=1}^{n}\sum_{i}Q_{j}^{t}(z_{i})log\: \frac{P(y_{j},z_{i}\mid \theta^{t+1} )}{Q_{j}^{t}(z_{i})}\label{orderProof2}
\\
& \geq \sum_{j=1}^{n}\sum_{i}Q_{j}^{t}(z_{i})log\: \frac{P(y_{j},z_{i}\mid \theta^{t} )}{Q_{j}^{t}(z_{i})}\label{orderProof3}
\end{align}  $\eqref{orderProof1} \Rightarrow \eqref{orderProof2}$是因为Jensen不等式,因为等号成立的条件是 $\theta$ 为 $\theta_t$ 的时候得到的,而现在中的 $\theta$ 值为 $\theta_{t+1}$,所以等号不一定成立,除非 $\theta_{t+1} = \theta_t$,
  $\eqref{orderProof2} \Rightarrow \eqref{orderProof3}$ 是因为 $\theta_{t+1}$ 已经使得 $\sum_{j=1}^{n}\sum_{i}Q_{j}^{t}(z_{i})log\: \frac{P(y_{j},z_{i}\mid \theta^{t} )}{Q_{j}^{t}(z_{i})}$ 取得最大值,那必然不会小于 $\eqref{orderProof3}$ 式。
  所以 $l(\theta)$ 在迭代下是单调递增的,且很容易看出 $l(\theta)$ 是有上界的 (单调有界收敛) ,则EM算法收敛性得证。

4.4. EM算法E步说明

  上述EM算法描述,主要是参考Andrew NG教授的讲义,如果看过李航老师的《统计方法学》,会发现里面的证明以及描述表明上有些许不同,Andrew NG教授的讲义的说明(如上述)将隐藏变量的作用更好的体现出来,更直观,证明也更简单,而《统计方法学》中则将迭代之间θ的变化罗列的更为明确,也更加准确的描述了EM算法字面上的意思:每次迭代包含两步:E步,求期望;M步,求极大化。下面列出《统计方法学》书中的EM算法,与上述略有不同:

EM算法 (1):
选取初始值θ0初始化θ,t=0
Repeat {
  E步:
\begin{equation}
\begin{split}
\label{Estep}
H(\theta ,\theta ^{t})& =E_{z}[logP(Y,Z\mid \theta )\mid Y,\theta^{t}]\\
& =\sum_{z}P(Z\mid Y,\theta ^{t})logP(Y,Z\mid \theta )
\end{split}
\end{equation}  M步:$$\theta^{t+1} = arg\: max_{\theta } \: H(\theta ,\theta^{t})$$}直到收敛

  $\eqref{Estep}$ 式中,$Y={y_1,y_2,…,y_m},\ Z={z_1,z_2,…,z_m}$,不难看出将 $\eqref{infer3}$ 式中两个 $\sum$ 对换,就可以得出 $\eqref{Estep}$ 式,而 $\eqref{Estep}$ 式即是关于分布 $z$ 的一个期望值,而需要求这个期望公式,那么要求出所有的EM算法 (1) 中E步的值,所以两个表明看起来不同的EM算法描述其实是一样的。

5.小结

  EM算法的基本思路就已经理清,它计算是含有隐含变量的概率模型参数估计,能使用在一些无监督的聚类方法上。在EM算法总结提出以前就有该算法思想的方法提出,例如HMM中用的Baum-Welch算法就是。
  在EM算法的推导过程中,最精妙的一点就是 $\eqref{orderProof1}$ 式中的分子分母同乘以隐变量的一个分布,而套上了Jensen不等式,是EM算法顺利的形成。

6.主要参考文献

[1]:Rabiner L, Juang B. An introduction to hidden markov Models. IEEE ASSP Magazine, January 1986,EM算法原文

[2]:http://v.163.com/special/opencourse/machinelearning.html,Andrew NG教授的公开课中的EM视频

[3]:http://cs229.stanford.edu/materials.html, Andrew NG教授的讲义,非常强大,每一篇都写的非常精炼,易懂

[4]:http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html, 一个将Andrew NG教授的公开课以及讲义理解非常好的博客,并且我许多都是参考他的

[5]:http://blog.csdn.net/abcjennifer/article/details/8170378, 一个浙大研一的女生写的,里面的博客内容非常强大,csdn排名前300,ps:本科就开博客,唉,我的大学四年本科就给了游戏,玩,惭愧哈,导致现在啥都不懂。

转载于:https://www.cnblogs.com/mindpuzzle/p/3659444.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/247181.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/247181.shtml
英文地址,请注明出处:http://en.pswp.cn/news/247181.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Julia语言:让高性能科学计算人人可用

摘要:一群科学家对现有计算工具感到不满:他们想要一套开源系统,有C的快速,Ruby的动态,Python的通用,R般在统计分析上得心应手,Perl的处理字符串处理,Matlab的线性代数运算能力……易…

View Animation

转载一篇关于view animation的文章 http://blog.csdn.net/nerohoop/article/details/7245909 补充:当启用animation来改变值的时候,值是立刻就改变了的,然后才开始动画。 转载于:https://www.cnblogs.com/mystory/archive/2012/12/18/2824029…

编程能力的四种境界

人类心理学研究中的一个基础支撑科目就是分析人的潜意识和意识。 弗洛伊德是最早的一位能够清楚的认定和描述我们的心理活动“领域”的人。 在他这著名的一生的早期,他就指出我们的意识里分“潜意识”,“前意识”,“意识”。 如 果我们想能清…

ファイルアップロード関連のjQueryプラグイン10攻略

ファイルアップロード関連のjQueryプラグイン10ファイルアップロードといってもSWFを使ったりAJAXを使ったりと方法が色々あって、いろんなやり方ができるjQueryプラグインです。望みの挙動に近いものを選んでカスタマイズすれば作りたいものが最速で作れ…

HTTP报文(转)

HTTP报文http://www.cnblogs.com/kissdodog/archive/2013/04/01/2993228.html之前写过一篇HTML报文,但是感觉写完之后还是不懂,最近终于有时间开始看《HTTP权威指南》,看完之后觉得还是比之前的理解更加深入了,提取HTTP报文出来做…

C#基础-应用程序域

文章导读同一台计算上的应用程序是通过进程来隔离的,每个应用程序都是加载到不同的进程中,从而达到应用程序的互不影响。操作系统【OS】通过进程控制块【PCB】感知进程的存在,分析【PCB】的数据结构可以发现,【PCB】维护进程运行的…

Java生鲜电商平台-微服务入门与服务的拆分架构实战

Java生鲜电商平台-微服务入门与服务的拆分架构实战 刚开始进入软件行业时还是单体应用的时代,前后端分离的概念都还没普及,开发的时候需要花大量的时间在“强大”的JSP上面,那时候SOA已经算是新技术了。现在,微服务已经大行其道&a…

详解MTK系统中字符转换问题

详解MTK系统中字符转换问题 2011-09-05 19:02 佚名 互联网 字号:T | TMTK系统中字符转换问题是本文要介绍的内容,主要是来了解并学习MTK中一些小案例的应用,具体内容来看本文详解。 AD:2014WOT全球软件技术峰会北京站 课程视频发布…

Java生鲜电商平台-微服务架构概述

Java生鲜电商平台-微服务架构概述 单体架构存在的问题 在传统的软件技术架构系统中,基本上将业务功能集中在单一应用内,或者是单一进程中。尽管现代化的软件架构理论以及设计原则已推广多年,但实际技术衍化的速度迟缓并且变革动力不足。 其中…

Jensen不等式及其证明

• 詹森不等式以丹麦数学家约翰詹森(JohanJensen)命名。它给出积分的凸函数值和凸函数的积分值间的关系。 关于凸函数: if (-f)是凸函数(convex),则f是凹的(concave…

ios自带NSURLConnection下载文件

//同步下载,同步请求的主要代码如下 - (IBAction)downLoad:(id)sender { NSString *urlAsString"http://7jpnsh.com1.z0.glb.clouddn.com/TravelDemo.plist";//文件地址 NSURL *url[NSURL URLWithString:urlAsString]; NSURLRequest *request[NSURLRequest requestWi…

国外程序员整理的机器学习资源大全

本列表选编了一些机器学习领域牛B的框架、库以及软件(按编程语言排序)。 C 计算机视觉 CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库 OpenCV—它提供C, C, Python, Java 以及 MATLAB接口,并支持Windo…

五款帮助创业者迅速熟悉互联网创业的在线学习工具

相信很多有志青年都想借助互联网开拓自己的事业,可是经常面临一个很现实的问题——缺乏一定的专业知识和技能。没关系,互联网中的丰富教育资源就可以让你迅速地跨越这一障碍,熟悉与创业相关的运营、管理、融资等操作技巧。下面介绍的五个在线…

C++ 中复杂的声明

1、方法也是有类型的,方法的类型由返回类型和形参表决定。比如int F (int)的类型就是去掉方法名,int (int)。 2、对于方法类型,在返回类型和形参表之间,加上一个名称F,就表示一个特定的方法F。 3、思考,如果…

caffe 下测试 MNIST数据

详细说明可参考网页:http://blog.csdn.net/wangchuansnnu/article/details/44341753http://blog.sina.com.cn/s/blog_49ea41a20102w4uu.htmlhttp://www.cnblogs.com/yymn/p/4553671.html caffe 下 mnist 进行实验: MNIST,一个经典的手写数字库…

Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战

Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战 Java生鲜电商平台- 什么是秒杀 通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动 比如说京东秒杀,就是一种定时定量秒杀,在规定的时间内,无论商品是否秒杀完毕&#xff0c…

LInux 下安装 python notebook 及指向路径,运行计时,炫酷的深蓝午夜主题,本地登陆远程服务器

1. 安装 pip工具 sudo apt-get install pyton-pip 2. 安装ipython及其依赖包 sudo apt-get install ipython ipython-notebook 3. 安装可选的附加工具(需要时间较长) sudo apt-get install python-matplotlib python-scipy python-pandas python-sympy python-nose 4. 测试i…

对TypeScript进行研究

1.npm install -g typescript 在编辑器,将下面的代码输入到greeter.ts文件里: function greeter(person) {return "Hello, " person; } let user "Jane User"; document.body.innerHTML greeter(user); 我们使用了.ts扩展名&…

caffe 提取特征并可视化(已测试可执行)及在线可视化

网络结构在线可视化工具 http://ethereon.github.io/netscope/#/editor 参考主页: caffe 可视化的资料可在百度云盘下载 链接: http://pan.baidu.com/s/1jIRJ6mU 提取密码:xehi http://cs.stanford.edu/people/karpathy/cnnembed/ http://lijianch…

ncnn:提取所有层特征值

官方代码托管地址&#xff1a;https://github.com/Tencent/ncnn 在Extractor类中添加以下方法&#xff1a; int Extractor::extract_all_blobs() {for (int blob_index 0; blob_index < blob_mats.size(); blob_index){Mat outMat;extract(blob_index, outMat);// write to…