小白入门Tensorflow学习笔记1(神经网络入门设计,损失函数))

头秃起来,又是头秃的一天

此篇文章根据北京大学mooc教程进行Tensorflow进行学习并以此记录,并辅以其他教程进行神经网路的理论学习

下图是实现个花的分类,下图展现了个什么呢???,要想判断这花是个什么花,我们平常怎么判断??看花的颜色?看花的长宽高,花瓣的长宽高??,然后在大致感受一下这些长宽高和颜色,还有其他可能的花的特征总体来看是个什么关系?那么电脑该如何分辨呢??我们把认为可能是判别花的特征(参数)输入,然后然电脑不断生成公式,看看哪个公式最符合实际情况(即最能判断花的种类),请看下图

此图中,选取了四个参数(即输入层,图中那四个蓝圆圈,也是已知参数X(1,4)矩阵),要求判断是这三种花的哪一种(即输出层,那三个粉圆圈,也是要求出的结果Y(1,3)矩阵),然后让电脑输出个公式?电脑怎么生成呢?输入与输出中的连线即权重W(4,3)矩阵,为什么是4*3的矩阵呢??我们在看途中输入层与输出层之间的连线,每个,蓝圆圈连出3个线到3个粉圆圈,总共也即4*3的线,我们默认每个输入(蓝圆圈)与3种花的判断都有关联,这也是为甚么三个蓝圆圈连出3个线到3个粉圆圈。b这个矩阵不解释了,解释不了,哈哈哈。那么这就是图中公式的原型,应该也是神经网络的起点??这个是最简单的公式,我们叫做感知机(好像是,有错请大佬指出)

之后电脑要生成公式了,也即生成W(4*3)矩阵,怎么生成,老师讲的--随机生成,假设电脑随机生成了一个W(4*3),b(3,)---这个过程叫前向传播。但是,结果啊跟实际差距有些巨大,那么如何缩小这些差距呢?知错就改,即如何修改W(4*3),b(3,)矩阵。我们需要看究竟错了多少,哪错了,怎么改。这时候就有个函数去衡量我们公式得出的预测值与实际值之间的差距,叫损失函数,通过这个函数回头再修改W(4*3),b(3,)----这个过程叫反向传播,当损失函数最小时,W与B会出现最有值。

损失函数有多种定义方法(可能这个意思是说有多种的损失函数,实际种看哪种最适合了),在这里我们用均方误差,之后要涉及一些高等数学的知识,叫做梯度也是求损失函数的偏导,梯度下降方向就是函数减小的方向,通过求偏导找到损失函数的最小值,再得到最优参数就叫做梯度下降法

学习率就是上图中的Lr其实就是设置一个值控制它梯度下降的快慢。以上就是入门的一丢丢知识

之后学习一下Tensorflow的一丢丢基础知识

标量其实就是个数字,向量呢像是个数组,矩阵不解释,张量就是多维数组,表示方法便是通过“[”来表示一维与多维

数据类型

如何创建一个张量(Tensor)

那么这其中只有一个疑问就是shape=(2,) “2”说明这个张量里有两个元素,“,”隔开的几个数字,就说明是这个张量的阶(几维)

很多时候数据是由numpy给出(话说numpy我不是很了解,毕竟从头开始嘛),可以如此进行转化,见下图

创建张量的其他方法

上图说的很清楚了,不赘述

这个涉及到了概率论中的知识点。若不是很了解可看一下概率论正态分布的这一章,下面是运行结果

创建张量初始为随机数

 

下面是Tensorflow的常用函数

函数axis可以指定操作的方向,即控制操作维度的方向,下面是2维张量的举例,等于0对列操作,等于1对行操作

求和与求平均值,也许看到这儿你又忘了tf.constant是什么来着,通过观察(其实前面已经介绍但是我忘了)发现是创建一个张量

Variable()由于刚开始学,所以这个函数我目前也是一知半解

下面是张量的常用方法,注意只有维度相同的才能进行张量运算

tf.ones与tf.fill的函数,[1,3]为维度,这里的维度,应该是描述这个张量是什么样的,它的形状,比如[1,3]说明张量的样子为1行3列

涉及矩阵知识。。。。。。多多学习。。。

看到下图的函数我又迷糊了,这个函数作用是特征与标签配对?我生出了以下疑问,标签,特征究竟是什么?为什么要配对??

既然提到标签和特征,那么不妨把讨论的范围缩小到有监督学习中的分类问题。

以周志华老师在《机器学习》中判断好瓜的问题为例——给你一个西瓜,如何判断出一个它是不是正熟的好瓜?对于人类来说,根据以前的经验,我们首先会从西瓜这个具体的事物中抽取一些有用的信息,比如西瓜的颜色、瓜蒂的形状、敲击的声音等,然后根据一定的规则在这些信息的基础上进行判断————一般情况下我们认为颜色青绿、根蒂蜷缩、敲击浊响的西瓜是好瓜。

上述问题中,西瓜的颜色、瓜蒂的形状、敲击的声音就是特征,而“好瓜”和“坏瓜”这两个判断就是标签
更抽象一点,特征是做出某个判断的证据,标签是结论。

上面所说的标签和特征跟我理解的一样啊,所以这个函数的标签与特征配对究竟是什么意思呢???算了,接着看吧,以后理解了补上

with结构,这里还需要对python进行理解,with语句:可以代替try...except...finally语句,使代码更加简洁;例如

f = open(r'c:\mytest.txt', 'r') 
 try: 
     data = f.read() 
 finally: 
     f.close()

就可以写成

 with open(r'c:\test.txt', 'r') as f:
     data = f.read()

至于其深度的理解,我还是自己下去再了解一下,graient 求张量的梯度,其实就是求偏导

enumerate为枚举,下面循环语句中“i”接受索引号,element接受元素

独热码这玩意我不清楚,可能就是将所有情况列举,然后再各自标出概率??

这里几分类的意思应该是输出分成几个类别

输出了这些得分,我们得知道是它的概率是多少,所以需要用一个函数所以就用到了tf.nn.softmax(x)这个函数,输出每个的概率

不多介绍应该可看明白,但是为啥Variable的参数是4我是不明白的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值