码迷,mamicode.com
首页 > 其他好文 > 详细

使用逻辑回归分类手写数字MNIST

时间:2016-06-12 16:51:14      阅读:408      评论:0      收藏:0      [点我收藏+]

标签:

英文原文请参考http://www.deeplearning.net/tutorial/logreg.html

这里,我们将使用Theano实现最基本的分类器:逻辑回归,以及学习数学表达式如何映射成Theano图。

逻辑回归是一个基于概率的线性分类器,W和b为参数。通过投射输入向量到一组超平面,每个对应一个类,输入到一个平面的距离反应它属于对应类的概率。

那么输入向量x为i类的概率,数值表示如下:

 技术分享

预测类别为概率最大的类,及:

技术分享

用Theano实现的代码如下:

 # initialize with 0 the weights W as a matrix of shape (n_in, n_out)
        self.W = theano.shared(
            value=numpy.zeros(
                (n_in, n_out),
                dtype=theano.config.floatX
            ),
            name=W,
            borrow=True
        )
        self.b = theano.shared(
            value=numpy.zeros(
                (n_out),
                dtype=theano.config.floatX
            ),
            name=b,
            borrow=True
        )
        self.p_y_given_x = T.nnet.softmax(T.dot(input, self.W) + self.b)
        self.y_pred = T.argmax(self.p_y_given_x, axis=-1)

由于模型的参数在训练中维持一个持久的状态,因此我们将W,b设为共享变量,也是Theano符号变量。

目前定义的模型还没有做任何有用的事情,接下来将介绍如何学习最优参数。

定义损失函数(Loss Function)

对于多类回归,常见的是使用negative log-likelihood作为损失。

在参数θ下,最大化数据集D的似然函数,让我们先定义似然函数和损失:

技术分享

这里使用随机梯度下降的方法求最小值。

创建逻辑回归类

代码请参考源网址:http://www.deeplearning.net/tutorial/logreg.html

 

 

 

 

使用逻辑回归分类手写数字MNIST

标签:

原文地址:http://www.cnblogs.com/liwei33/p/5578056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!