- 博客(83)
- 资源 (17)
- 收藏
- 关注
原创 TensorFlow学习(5)——线性回归
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt# =======================第一步、样本======================================# 从-0.5到0.5之间生成200个随机点(现在只是一个一维的数据)# 但是我们需要用到的是二维的数据因...
2018-10-30 11:53:17
222
原创 TensorFlow学习(4)——TensorFlow的简单使用
import tensorflow as tfimport numpy as np# 在这个例子中,我们的目标就是要找到合适的b和k,使得该线性模型能够把上面的样本给表示出来# 第一、使用Numpy生成一百个随机点,这就是样本x_data = np.random.rand(100)y_data = x_data*0.1 + 0.2# 第二、构造一个线性模型b = tf.Va...
2018-10-30 11:51:21
194
原创 TensorFlow学习(3)——Fetch和Feed的使用
import tensorflow as tf# ===========Fetch============input1 = tf.constant(3.0)input2 = tf.constant(2.0)input3 = tf.constant(5.0)add = tf.add(input2, input3)mul = tf.multiply(input1, add)sub =...
2018-10-30 11:49:45
279
原创 TensorFlow学习(2)——变量的使用
import tensorflow as tf# 定义一个变量x = tf.Variable([1,2])# 定义一个常量a = tf.constant([3,3])# 定义一个减法的opsub = tf.subtract(x,a)# 定义一个加法opadd = tf.add(x,sub)# 初始化所有变量,这一步很重要init = tf.global_variables_...
2018-10-30 11:48:00
220
原创 TensorFlow学习(1)——创建图和启动图
import tensorflow as tf# 创建一个一行两列的常量op(向量)m1 = tf.constant([[3, 3]])# 创建两行一列的矩阵opm2 = tf.constant([[2], [3]])# 创建一个矩阵乘法的opproduct = tf.matmul(m1, m2)# 输出print(product)# 定义一个绘画启动一个默认的Session...
2018-10-30 11:47:13
355
原创 TensorFlow常用优化器性能对比,以及各自优缺点
首先说明,本文不深入研究优化器的内部数学原理,只给出最终的结论。性能对比TensorFlow中提供了如下的对的优化器:tf.train.Optimizertf.train.GradientDescentOptimizertf.train.AdadeltaOptimizertf.train.AdagtadOptimizertf.train.AdagradDAOptimizertf.t...
2018-10-26 16:29:51
3776
原创 防止过拟合的方法
防止过拟合的方法:增加数据集出现过拟合的情况大部分是因为数据量过少,然而神经网络太过于复杂,所以增加数据集是十分有利于防止过拟合的。正则化方法C=C0+λ2n∑ww2C=C_0 +\frac{ \lambda }{2n} \sum_{w}w^2C=C0+2nλ∑ww2:C0C_0C0就是原来的代价函数,现在我们在代价函数上增加一个正则化项λ2n∑ww2\frac{ \lambda...
2018-10-25 16:22:54
296
原创 二次代价函数、交叉熵代价函数、对数似然代价函数的应用场景
二次代价函数的局限性首先来说一下二次代价函数的局限性,看下面这张图:假设现在使用的激活函数是sigmoid,并且代价函数是二次代价函数,我们收敛得目标是1,那么A点的梯度比较大,B点由于离目标比较近梯度小,所以是合理的;但是如果我们的收敛目标是0,那么A点离目标比较近,所以梯度应该要小于B点,但是图中明明是A点的梯度大于B点,这是不合理的。交叉熵正式由于二次大家函数的这个局限性,我们需要...
2018-10-25 11:43:40
2366
原创 机器学习中权值W和偏导b与激活函数的关系
在机器学习中,我们经常会用到线性回归:y = Wx+b我们也会用到损失函数,损失函数的公式如下图:通过观察上面的式子我们发现,激活函数 σ\sigmaσ 包含着线性函数 Wx+b,这个时候损失函数就和权值W和偏置值b联系起来了。接着我们队损失函数的W和b分别进行求导:就像图中所说的,W和b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,则w和b的大小调整得越快,训练收敛得越快。所以...
2018-10-25 10:58:24
3215
1
原创 TensorFlow定义隐藏层的方法
最近在学习TensorFlow,跟着教程敲了很多代码,但是也只是仅仅跟着敲,虽然也写过简单的隐藏层,但是真正要自己敲一个隐藏层还是感觉一脸懵逼,于是就有了这篇简短的博客。初学者在写隐藏层的时候通常会遇到以下两个疑问:不知道如何设置张量的维度不知道该选什么激活函数设置隐藏层维度观察下面这段关于mnist手写识别数字的代码:# 第二步、定义神经网络模型# 输入层x = tf.pla...
2018-10-24 17:05:32
4127
原创 TensorFlow中random_normal和truncated_normal的区别
区别如下:tf.random_normal() 正太分布随机数,均值mean,标准差stddevtf.truncated_normal() 截断正态分布随机数,均值mean,标准差stddev,不过只保留[mean-2stddev,mean+2stddev]范围内的随机数那么什么是正太分布呢?看下面这张图,就是正太分布的直观图:好了看完上面这张图,我们就可以理解什么是rando...
2018-10-24 14:52:54
2335
原创 Anaconda无法找到.jupyter文件的解决办法
安装Anaconda后我们打开主目录一般会看到全部文件,如下:在这里不小心你可能会删掉一些文件,那非常不安全,所以我们要更改一下打开目录。配置路目录一般在C:/用户/用户名/.jupyter/下,但是我怎么都找不到,所以这里还有一些坑。那么要如何解决呢?其实很简单,但是网上有很多错误的教程,以下是我的解决办法:打开Anaconda Prompt输jupyter notebook–g...
2018-10-21 14:01:51
10395
原创 Python3学习(3)——循环与迭代
在Python中循环的方式比较奇异,和Java有点不同,比如for循环:languages = ["C", "C++", "Perl", "Python"] for x in languages: print (x) #输出结果如下:CC++PerlPython还有另一个循环 range(),该函数可以对数字进行循环:
2018-09-26 17:03:34
743
原创 TensorFlow学习(4)——Pandas的基本用法
TensorFlow框架概览以下是TensorFlow的架构体系:我们一般用到的是 TensorFlow Estimators层,该层相对比较容易,易于入手,本学习大部分内容也都是介绍Estimator层的使用。随着应用的熟练,我们可以逐步往下学习,自定义编程更加灵活轻便。现在先给一个例子,让你看看TensorFlow是如何使用线性回归分析得:import tensorflow as t...
2018-09-20 11:40:59
3009
原创 TensorFlow学习(5)——TensorFlow的基本使用
在上一节我们学了损失的概念,这一节我们就来学习如何减少损失。通过迭代方法降低损失下面是迭代流程图:假设我们的模型是y′=b+w1x1y'=b+w_1x_1y′=b+w1x1,现在我们的目标就是找到合适的www,最开始我们假设 w1=0,b=0w_1=0,b=0w1=0,b=0 ,然后执行预测,并计算损失。接着我们更新w=0.5,b=0w=0.5,b=0w=0.5,...
2018-09-18 17:31:08
431
原创 Python3学习(2)——脚本编译、注解、运算符
脚本编译我们刚安装完Python的时候运行代码都是通过命令行运行的,这样子非常麻烦,所以我们要把代码写在文件中,这样运行起来就非常方便了(方法适用Windows平台):首先把代码print ("Hello, Python!");写在文件hello.py中然后在命令行输入python3 hello.py就可以运行了注解单行注解 :# 这是一个注释print("Hello,...
2018-09-18 14:44:31
242
原创 TensorFlow学习(2)——线性回归、训练和损失
线性回归很多数学不是太好的同学一听到线性回归这么高级的名词往往望而却步,很多东西只要深入学习并没有看起来那么可怕。那么何为线性回归呢?其实就是我们初中学到的直线方程,还记得不?记不起来也不要紧,瞄一眼下图你必能唤回当年那痛苦的记忆!哈哈没想到吧,当年最讨厌数学的我,以为买菜用不到那么多数学知识,现在居然用到了。那么这么一条直线方程跟我们机器学习有什么关系呢?假设我们要分析蟋蟀的鸣叫声与温...
2018-09-18 14:18:23
951
原创 TensorFlow学习(1)—— 在Windows上安装 TensorFlow
之前我一直不知道TensorFlow也支持Windows环境,今天亲自登录官网才得知,害得我还自己去Linux下搭建环境。本人不怎么熟悉Linux,所以还是乖乖用Windows吧。下面开始进入正式内容:TensorFlow官方中文安装教程:https://www.tensorflow.org/install/install_windows?hl=zh-cn,你也可以直接去看官方教程,可能需要翻...
2018-09-14 15:43:18
377
原创 手把手教你在Linux环境下安装Python3
在上一篇文章《手把手教你启用Win10的Linux子系统(超详细)》我们已经学了如何在Win10环境下装Linux子系统了,那么这一篇文章我们将学习如何在该Linux系统下安装Python3。首先是按Win+R键调出cmd命令窗口,然后输入输入bash指令进入Ubuntu系统,接着就可以进入正式的安装过程了。第一步、下载Python3 输入下载命令:wget https://w...
2018-09-13 15:11:27
140997
34
原创 手把手教你启用Win10的Linux子系统(超详细)
今天为大家介绍如何才能启用Windows10下的Linux子系统,废话不多说,直接看步骤:启用开发者模式打开设置 点击更新和安全 点击开发者选项 启用开发人员模式 更改系统功能使用win+X快捷键调出系统管理菜单后点击应用和功能,然后拉到底下,选择程序和功能 选中应用或关闭Windows功能 勾选适用于Linux的Windows子系统,然后确认并重启...
2018-09-12 16:40:40
395328
75
原创 Python3学习(1)——基本数据类型
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的”类型”是变量所指的内存中对象的类型。示例如下:#!/usr/bin/python3counter = 100 # 整型变量miles = 1000.0 # 浮点型变量name = "runoo...
2018-09-12 11:23:52
469
原创 林轩田机器学习基石笔记(第27节)——VC Dimension of Perceptrons
一、复习2D PLA算法如下图所示,左边红色部分表示如果数据集DDD是线性可分的情况下,PLA算法最终会停下来,我们会得到一条能够把所有数据都二分为两类的线段,该线段能够保证在已知的数据上犯错的概率为0,即Ein(g)=0Ein(g)=0E_{in}(g)=0。 图中右边部分,则通过霍夫丁不等式从侧面证明了如果我们数据量够大,并且dVCdVCd_{VC}已知的情况下,我们可以保证Ein(g)...
2018-09-09 12:12:19
526
原创 林轩田机器学习基石笔记(第8节)——PLA循环停止条件的探讨
引言第7节我们讨论了如何找到一条线把所有的圈圈叉叉都分在不同的两边,但是其实有一个隐含的大前提,那就是圈圈叉叉的分布必须是线性可分的,如下第1张图。如果是线性不可分那么,如下第2、3张图是无法用PLA算法把圈圈叉叉分开的。 本节课我们就讨论在线性可分的前提之下,PLA循环什么时候才能终止。初步论证我们知道,如果yn(t)≠sign(WTtXn(t))yn(t)≠sign(WtTX...
2018-09-05 17:22:23
427
原创 林轩田机器学习基石笔记(第7节)——PLA算法
机器学习的流程如下图,我们的目标是找到 fff ,但是我们不知道 fff 长啥样,但是我们有一堆数据 DDD ,现在我们要用数据 DDD 进行训练,然后会得到一个假设集Hypothesis,接着我们再设计一条演算法,该演算法的任务就是从假设集Hypothesis中找到一个 ggg ,使得 g≈fg≈fg \approx f . 现在回到上一节提到的信用卡发卡问题,我们计算客户是否符合发卡要求...
2018-09-05 15:37:21
535
原创 林轩田机器学习基石笔记(第6节)
第5节主要介绍了机器学习与统计学之间的关系,不用做太多了解,所以也可以跳过,直接进入本节。今天主要学习的问题就是如何让机器解决是非题,仍然以银行发信用卡为例,就是根据客户提交的资料去判断要不要给该客户发放信用卡。本节目标第4节我们提到过,机器学习的过程是我们需要一个ff f ,但我们不知道ff f 长什么样,这时候我们就需要从数据{xn,yn}{xn,yn}\{x_n, y_n\}中学...
2018-09-05 11:26:02
326
原创 林轩田机器学习基石笔记(第15节)——霍夫丁不等式解决机器学习不可行的难题
在第14节中我们知道,要实现机器学习是很难的,如下图: 我们可以保证我们的算法在训练集 DDD 中表现得很好,能够预测出所有的情形。但是我们却没有办法保证在测试集或者未知数据 TTT 中依然保持正确。那要如何解决一难题呢?答案就再概率论里面!看下面这张图,我们现在有一个罐子,里面装有橘色弹珠和绿色弹珠,其中橘色弹珠的真实比例是 μ ,则绿色弹珠的真实比例是1- μ。 现在我们要通过抽...
2018-09-05 10:18:07
562
原创 林轩田机器学习基石笔记(第4节)
前面几节主要讲得是机器学习的概念,这里就不再赘述了,直接从第4节开始讲。看下面这张表,假设它就是银行发信用卡的参考因素,我们的目标就是让机器能够从这些参考因素中评定某一个客户是否符合信用卡发卡标准。 根据上表我们假设有以下输入输出: 其中XXX表示输入,输入的是客户的基本信息(即表格中的数据),YYY表示输出,决定发卡或者不发卡。有了以上输入输出以后,我们现在的目标是找出一个函...
2018-09-05 09:55:25
227
原创 林轩田机器学习基石笔记(第26节)——VC Dimension
复习上限函数在第23-24节中,我们获得了成长函数的上限函数,并且上限函数又被被多项式Nk−1Nk−1N^{k-1}所包含住,即∑k−1i=0∑i=0k−1 \sum_{i=0}^{k-1}会被Nk−1Nk−1N^{k-1}所包含住,如下图: ∑k−1i=0∑i=0k−1 \sum_{i=0}^{k-1}与Nk−1Nk−1N^{k-1}的关系如下面两个表所示: 基于以上关系,所有...
2018-09-04 23:32:46
454
原创 林轩田机器学习基石笔记(第25节)——VC Bound
在第23-24节我们已经找到了上限函数mH(N)mH(N)m_H(N),那么是否把它代入到霍夫丁不等式就OK了呢?答案是否定的,我们最终会经过一系列证明把霍夫丁不等式变成如下的样子: 以下是证明步骤:第一步,把无限的Eout(N)Eout(N)E_{out}(N)变成有限个在霍夫丁不等式中,我们知道Ein(N)Ein(N)E_{in}(N)是有限的,但是Eout(N)Eout(...
2018-09-04 20:20:25
1185
原创 Python3学习笔记之基础语法—第1节
为了学习机器学习相关知识,从今天开始学习Python3了,首先从语法开始学习。注释Python可以用#进行单行注释,用”’和”“”进行多行注释,具体如下:#!/usr/bin/python3# 第一个注释# 第二个注释'''第三注释第四注释'''"""第五注释第六注释"""行与缩进Python与Java的一大区别就是用缩进来表示同一个代码块,而在..
2018-09-04 18:00:23
214
原创 林轩田机器学习基石笔记(第23-24节)——上限函数Bounding Function
本节我们讨论上限函数,所谓的上限函数就是,成长函数露出Break Point的点。只要我们知道了该点的值,就可以知道Hypothesis Set最多可以画多少条Dichotomy。第20节的时候我们学到成长函数,当时我们分别对几种不同的分布进行了讨论,分别推导出了不一样的成长函数。但是学完本节后我们就不需要关心具体是什么成长函数,直接可以根据上限函数推算出Dichotomy的数量了。归...
2018-08-26 14:55:10
1605
原创 林轩田机器学习基石笔记(第21-22节)——Break Point
Break Point在第19节的时候,我们对hypothesis进行归类的时候,发现所有的分类数量都≤2N≤2N \leq 2^N。如下图,当N<4的时候,effective(N)=2Neffective(N)=2Neffective(N)=2^N;当N≤4N≤4N \leq 4的时候,effective(N)<2Neffective(N)<2Neffective(N)N+...
2018-08-24 15:43:02
1344
原创 林轩田机器学习基石笔记(第20节)——成长函数growth function
Dichotomy这节课引入一个新的概念Dichotomy,所谓的Dichotomy其实就是我们前一节学到的effective(N)。成长函数(growth function)其实growth function也是我们前面学得effective(N)。引入成长函数的目的是要消除对X的依赖。Positive Rays 现在假设我们有一堆的X,然后我们要做得就是找到一条线 h(...
2018-08-23 12:07:28
5548
2
原创 林轩田机器学习基石笔记(第18-19节)——把无限hypothesis变为有限
有限多和无限多Hypothesis优劣势对比当hypothesis数量有限的时候(如下图small M),我们可以较为轻易的实现Ein(g)≈Eout(g)Ein(g)≈Eout(g)E_{in}(g) \approx E_{out}(g),但是却有一个弊端,那就是我们的选择太有限,不能保证能够找到足够好的g。 当hypothesis数量无限的时候(如下图large M),我们会有更大的选择...
2018-08-19 00:03:33
744
原创 林轩田机器学习基石笔记(第17节)——有限多个hypothesis如何选到合适的g
上一节我们讨论的问题对应的是单个hypothesis的情况,那么现在如果有多个hypothesis的情况下我们该如何选到最合适的 g 呢?如果有一个 h(x) 在所有的训练数据中没有犯任何错误,那是否就意味着它就是我们所需要的 g 呢?答案是否定的!接下来我们就讨论这些问题。霍夫丁不等式告诉我们,从罐子中取样大部分情况是能够反映真实的弹珠分布情况,即Eout(h)≈Eout(h)Eout(...
2018-08-14 22:51:57
466
原创 林轩田机器学习基石笔记(第16节)——概率论与机器学习建立连接
抽样与机器学习的对应关系我们不知道罐子中橘色弹珠的数量比例,对应在机器学习中就是我们不知道在hypothesis中哪个h(x) 是我们要找的弹珠表示x橘色的弹珠代表 h(x)≠f(x)h(x)≠f(x)h(x) \neq f(x)绿色的弹珠代表 h(x)=f(x)h(x)=f(x)h(x) = f(x)抽样得到的橘色弹珠的比例对应机器学习中对应 h(x)≠f(x)h(x)≠f(...
2018-08-14 10:17:43
529
原创 林轩田机器学习基石笔记(第10-13节)——机器学习的分类
第10节主要讲到了多元分类(Multiclass Classification)的概念。第11节主要简单介绍了监督学习(Supervised)、非监督学习(Unsupervised)、半监督学习(Sei-Supervised)、强化学习(Reinforcement Learning)。第12节主要介绍Bath Learning(批量学习)、Online Learning(逐个学习)、Act...
2018-08-11 22:52:25
395
原创 林轩田机器学习基石笔记(第9节)——Pocket AIgorithm(口袋算法)
虽然我们证明了PLA最终会停下来,但是PLA存在以下几个问题:1、PLA假设的前提是数据线性可分,但是很多情况下都是线性不可的;2、即使PLA最终停下来,但是我们并不知道它什么时候会停下来。由于现实情况的复杂性,我们一般情况下我们几乎找不到完美的线性可分的数据,所以这时候计算机科学家们想到了一个办法,那就是找到一条线,这条线所犯的错误最少,用它来替代精准的线。数学表达式如下:上...
2018-08-11 21:34:54
1369
原创 林轩田机器学习基石笔记(第1节)
我的经历在进行机器学习之前先说一下写这一系列笔记的想法吧。谈到机器学习很多人都觉得很难,看到一堆数学公式就望而却步,实话说我也觉得很难,但我还是想试试,毕竟很想自己做出一个产品来。回过头来说,本人非计算机科班出身,而且还是个高中数学从来没及格过的文科生,哈哈,说来搞笑!我学习编程可以追溯到高中时代,那时候很崇拜黑客,所以就开始了解编程方面的知识,但是没有机会接触,直到大一才开始学习Ja...
2018-08-04 09:49:49
386
原创 draw9patch.bat打不开的解决办法(绝对能解决)
draw9patch.bat打不开的解决办法(绝对能解决),网上有很多乱七八糟的办法,试了很多也没有成功,于是在墙外找到了答案,具体如下:1、把draw9patch.bat的后缀改为.txt;2、以txt文档的方式打开;3、把set java_exe=call lib\find_java.batif not defined java_exe goto :EOF改为:set java_exe=C:\Program File
2015-10-26 14:14:00
7323
Android上部署pytorch实现拍照性别识别
2020-04-24
webservice标准示例,实现号码归属地的查询
2013-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅