tensorflow初体验,记录一下

首先主要记录一些关键词,主要说明这些关键词的个人理解,如有误解,希望提出改正

我们就介绍一下mnist的手写数字识别算法吧
1.张量

这里所说的张量,其实可以类比为Python里面的一些列表,或者列表的嵌套。

2.占位符

x = tensorflow.placeholder(“类型”, shape=[None, 784])
这个就像字面意思了

3.变量

W = tf.Variable(tf.zeros([784, 10]))
定义一个二维张量,类似784 * 10 的平面模型

4.星乘

对应元素相乘,向量化后的图片和权重相乘得到一个张量结果tf.constant([None, 784]) * tf.constant([784, 10])
[None, 784], 之所以这样构造是因为输入未知,但是每张图的像素点为28*28=784,;[784, 10] ,设置这个的原因是因为有784个特征值(像素点),每个特征值代表的数字是【0~9】是个数字即10种输出结果
Int[38]: sess.run(tf.constant([[1,2,3],[4,5,6]]) * tf.constant([[7],[8]]))
Out[38]:
array([[ 7, 14, 21],
[32, 40, 48]])
Int[36]: sess.run(tf.constant([[1,2,3],[4,5,6]]) * tf.constant([[7,8, 9]]))
Out[36]:
array([[ 7, 16, 27],
[28, 40, 54]])

5.交叉熵 cross_entry

在特征工程中,用来衡量两个值的近似度,推导过程如下:
两个概率分布,预测的概率分布为p,真实概率分布为q,每次的概率肯定是小于等于1的
在计算机中想要表示一个概率大小所需要的编码长度需要多少位呢?1byte = 8bit = 2^3bit
每个事件发生需要的存储字节长度为:2^N = 1/P N(需要的位数);P(概率大小)
所以:N = log2(1/p),结果乘以实际概率;
所以每个时间需要的长度为:p(i) * log2(1/p(i))
然后需要的总长度为,单个的求和,在这里插入图片描述

6.卷积 conv

简单一句话,卷积在这里的作用就是提取特征值,即边缘检测,区分开不同的值域
这里再提一个偏置值的问题吧,偏置值作用其实是为了平移整个张量,使边缘域穿过原点
i1x1 + b1 = i2x2
i1 = x2/x1*i2 - b1
对于一个二元输入方程,斜率也就是边缘域, b1就是一个平移值

7.池化 pool

池化作用是啥呢?池化利用一个卷积核在一幅图的张量中进行游走,检测出这个卷积核区域内的最大值,最小值或者均值等,其实就是在压缩你的图片的尺寸

7.通道 channel

首先从最开始的输入开始,对于我们的mnist手写数字而言,是黑白单通道输入,如果是彩图的话,就是三通道输入(rgb)。对于多层卷积网络而言,通道是怎么变化的呢?
1.channel = 1
2.希望第一层输出的特征值个数:mnist这个实例中是32个特征值,即第一层的输出变成了32个channel
3.第二层的输入通道数 = 第一层的特征输出数 = 32
4.第二层的输出特征个数 = 32 + 32 = 64
…以此类推

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值