标签:cti sof learn tab 平均值 窗口 ota rest 导致
原文链接:https://www.dazhuanlan.com/2019/08/17/5d577456ecc9a/
假期的时候跟着专知的一个深度学习课程学习了一些深度学习的内容,也是愈发觉得神经网络十分神奇,最近看了一份简单的图片分类的CNN网络,记录学习一下,从简单学起~
大部分神经网络的基础就不再写了,网上也有很多介绍,这里就照着代码,顺一遍基本的使用方法~
训练样本50张,分为3类:
1
|
|
1
|
# 数据文档夹
|
这一部分代码主要就是实现将文档夹中的训练样本读取出来,保存在numpy数组中。
1
|
# 定义Placeholder,存放输入和标签
|
可以将placeholder理解为一种形参吧,然后不会被直接运行,只有在调用tf.run方法的时候才会被调用,这个时候需要向placeholder传递参数。
函数形式:
1
|
tf.placeholder(
|
dropout主要是为了解决过拟合的情况,过拟合就是将训练集中的一些不是通用特征的特征当作了通用特征,这样可能会在训练集上的损失函数很小,不过在测试的时候,就会导致损失函数很大。举个例子吧,就像用一个网络来判断这是不是一只猫,而训练集中的猫都是白色的,这样就可能会导致整个网络将白色当作判断猫的一个重要特征,而测试集中的猫可能什么颜色都有,这样就会导致损失函数很大。
1
|
# 定义卷积层, 20个卷积核, 卷积核大小为5,用Relu激活
|
池化层有mean-pooling、max-pooling啥的。
pooling层主要是保留特征,减少下一层的参数量和计算量,同时也能防止过拟合。
例如:max-pooling层的大小为2x2,那么就会对一个2x2的像素快进行取样,得到这个小区域的最大值,并将这个值来代表这个区域块传递到下一层中。
通过这样的方式就可以来减少参数量和计算量,并且还保持某种不变性,包括translation(平移),rotation(旋转),scale(尺度)
1
|
# 将3维特征转换为1维向量
|
全连接层,加上dropout,然后最后定义输出层。
1
|
arg_max(a, axis=None, out=None)
|
返回沿轴axis最大值的索引值,也就是最可能的标签值。
1
|
# 利用交叉熵定义损失
|
代码中的one_hot()函数的作用是将一个值化为一个概率分布的向量,一般用于分类问题。然后再用reduce_mean()得到平均值。
1
|
# 用于保存和载入模型
|
这一部分代码感觉没啥特别好写的,大部分都写在注释里了,而且一些写法应该也是比较固定的,,,,
可以看一下运行结果
感觉效果还是挺好的,真的挺神奇的。在这个过程中也是学习到了很多知识,这个整理总结归纳的过程也是收获颇多,以后继续加油~
标签:cti sof learn tab 平均值 窗口 ota rest 导致
原文地址:https://www.cnblogs.com/petewell/p/11406462.html