"""Softmax."""
scores = [3.0, 1.0, 0.2] import numpy as np def softmax(x):
"""Compute softmax values for x."""
#pass # TODO:Compute and return softmax(x)
return np.exp(x) / np.sum(np.exp(x), axis=0) #print(softmax(scores))
print (softmax(scores*10))
#print (softmax(scores / 10))

softmax模型可以用来给不同的对象分配概率。即使在之后,我们训练更加精细的模型时,最后一步也需要用softmax来分配概率。

cross-entropy  交叉熵是度量这两个向量距离的方法之一。我们将记它为D以表示距离。 labels标签向量经过了one-hot编码,所以会有很多的零,因而它不能作为对数的真数。

对于分布变量,它是由softmax方法计算得到的概率值。所以它总是会大于0, 也就是它可以被放在真数上。

对于一个给定的输入  通过一个线性模型,它将被转变为一个logit分数。这个运算很简单,即输入乘上一个矩阵w再加上一个偏置项b

接着  使用softmax方法,我们可以将logits分数转化成概率值,接着我们通过交叉熵的方法计算概率向量与经过one-hot编码的标签向量的距离

我们称这整个过程为Logistic 多项式回归法

好了,现在我们对问题的各个方面有了一个大致的了解,这门课的任务 是教我们该如何确定权重项w和偏置项b的值

以使我们的分类器能够完成我们所期望的工作。

也就是说 要使之对正确分类距离要足够小 对错误分类的距离足够大

可以选择通过这样的方式衡量,求出对所有训练集样本和所有类别的距离之和,也就是求出训练罚函数(That's called the training loss.)

这个函数 求出了对于所有训练集样本的交叉熵的均值,是一个非常庞大的函数。

训练集中的每个样本 都将被乘上这个巨大的W矩阵,并且他们都将被加起来,得到这个巨大的求和。

我们希望每一个距离值都很小,也就是说分类器能够 对训练集中的每个样本都能很好的分类,因而我们希望这个罚函数值很小。

罚函数是一个关于权重项w和偏差项b的函数,那么我们如何求罚函数的最小值

作为演示 考察某罚函数 只有两个自变量,我们记为w1和w2。该函数的值在某些区域很大,在另一些区域很小。

我们的目标 是去寻找使得罚函数值最小的权重值w,因而我们将一个机器学习问题 转化为了一个数值优化问题

而我们有许多的方法来解决这个数值优化的问题

最简单的方法之一 也许你可能遇到过 是梯度下降法(gradient descent)

对罚函数的每一个变量求偏导数,并将每个变量值加上该偏导数值,直到你达到全局最小值

梯度下降法相对而言比较简单,特别是你能够帮你高效求出偏导数的数值工具的时候,这个只是演示了一个二元函数的偏导数求算过程,但对于一个一般的问题

我们可能面对的是一个有成百上千参数的函数。

在接下来的课程中 我们将会讨论为你计算导数的工具,和梯度下降的一些优点和缺点,目前,我们将会假设我给你的优化程序是一个黑盒子,你可以简单的使用

最后有两个实用的东西阻挡在你训练模型的路上,第一个是你怎么把图像像素填充到分类器,第二个是在哪里初始化最优化过程

【深度学习笔记】第 2 课:Logistic 多项式回归法的更多相关文章

  1. Google TensorFlow深度学习笔记

    Google Deep Learning Notes Google 深度学习笔记 由于谷歌机器学习教程更新太慢,所以一边学习Deep Learning教程,经常总结是个好习惯,笔记目录奉上. Gith ...

  2. 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam) 深度学习笔记(一):logistic分类 深度学习笔记(二):简单神经网络,后向传播算法及实现 ...

  3. UFLDL深度学习笔记 (二)SoftMax 回归(矩阵化推导)

    UFLDL深度学习笔记 (二)Softmax 回归 本文为学习"UFLDL Softmax回归"的笔记与代码实现,文中略过了对代价函数求偏导的过程,本篇笔记主要补充求偏导步骤的详细 ...

  4. UFLDL深度学习笔记 (一)反向传播与稀疏自编码

    UFLDL深度学习笔记 (一)基本知识与稀疏自编码 前言 近来正在系统研究一下深度学习,作为新入门者,为了更好地理解.交流,准备把学习过程总结记录下来.最开始的规划是先学习理论推导:然后学习一两种开源 ...

  5. UFLDL深度学习笔记 (七)拓扑稀疏编码与矩阵化

    UFLDL深度学习笔记 (七)拓扑稀疏编码与矩阵化 主要思路 前面几篇所讲的都是围绕神经网络展开的,一个标志就是激活函数非线性:在前人的研究中,也存在线性激活函数的稀疏编码,该方法试图直接学习数据的特 ...

  6. UFLDL深度学习笔记 (六)卷积神经网络

    UFLDL深度学习笔记 (六)卷积神经网络 1. 主要思路 "UFLDL 卷积神经网络"主要讲解了对大尺寸图像应用前面所讨论神经网络学习的方法,其中的变化有两条,第一,对大尺寸图像 ...

  7. UFLDL深度学习笔记 (五)自编码线性解码器

    UFLDL深度学习笔记 (五)自编码线性解码器 1. 基本问题 在第一篇 UFLDL深度学习笔记 (一)基本知识与稀疏自编码中讨论了激活函数为\(sigmoid\)函数的系数自编码网络,本文要讨论&q ...

  8. UFLDL深度学习笔记 (四)用于分类的深度网络

    UFLDL深度学习笔记 (四)用于分类的深度网络 1. 主要思路 本文要讨论的"UFLDL 建立分类用深度网络"基本原理基于前2节的softmax回归和 无监督特征学习,区别在于使 ...

  9. UFLDL深度学习笔记 (三)无监督特征学习

    UFLDL深度学习笔记 (三)无监督特征学习 1. 主题思路 "UFLDL 无监督特征学习"本节全称为自我学习与无监督特征学习,和前一节softmax回归很类似,所以本篇笔记会比较 ...

随机推荐

  1. GoAccess安装及分析nginx实时日志

    GoAccess是一个基于终端的快速日志分析器.其核心思想是实时快速分析和查看Web服务器统计信息,而无需使用您的浏览器(如果您希望通过SSH快速分析访问日志,或者只是喜欢在终端中工作),终端输出是默 ...

  2. vue 里面异步加载高德地图

    前言 关于Vue 里面使用异步加载高德地图 项目中其实只有几处需要用到地图,不需要全局引入 在index文件中引入js会明显拖慢首屏加载速度,虽然可以使用异步加载script的方式解决,但是始终觉得不 ...

  3. 【C#-算法】根据生日自动计算年龄_DataTime 的 DateDiff 方法

    dateTimePicker1.Value出生日期控件的值 long BirthDay = DateAndTime.DateDiff(DateInterval.Year, dateTimePicker ...

  4. 窗体操作:ShowWindow(SW_HIDE)

    BOOL ShowWindow( int nCmdShow ); Return Value 作用: 如果窗口原来可见,则返回非零值:如果CWnd原来是隐藏的,则返回0   参数: Parameters ...

  5. Clojure的引用类型:var,ref,agent和atom

    作为其他值的容器,也都可以解引用. deref不会阻塞. add-watch (add-watch reference key fn) 可以定义引用值发生改变时的回调,fn是4个参数 :key (at ...

  6. props 父组件给子组件传递参数

    话不多说,直接上代码 父组件: <span><humidity-component ref="soilHumidityBot" :title='title2'&g ...

  7. HDU 5793 A Boring Question (找规律 : 快速幂+逆元)

    A Boring Question 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5793 Description Input The first l ...

  8. Java常考面试题整理(三)

    明天又要去面试,Good luck to me.,让我在这段时间换个新的工作吧. 41.在Java中,对象什么时候可以被垃圾回收? 参考答案: 当对象对当前使用这个对象的应用程序变得不可触及的时候,这 ...

  9. 堆里面的分区:Eden,Survivor(from+ to),老年代,各自的特点

    堆里面分为新生代和老生代(java8取消了永久代,采用了Metaspace),新生代包含Eden+Survivor区,survivor区里面分为from和to区,内存回收时,如果用的是复制算法,从fr ...

  10. C++入门经典-例3.6-判断某一年是否是闰年之复合表达式法

    1:代码如下: // 3.6.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...