《一个图像复原实例入门深度学习》系列阅读笔记

作者:FeiWang_1995 
来源:CSDN 
原文:下面
版权声明:本文为博主原创文章,转载请附上博文链接!

《一个图像复原实例入门深度学习&TensorFlow—第二篇》搭建深度学习开发环境

搭建深度学习环境(Anaconda TensorFlow Jupyter Spyder Win7/Win10)

《一个图像复原实例入门深度学习&TensorFlow—第三篇》在TensorFlow中进行深度学习的流程

1. TensorFlow的基本使用

2. 在TensorFlow中进行深度学习的主要流程

《一个图像复原实例入门深度学习&TensorFlow—第四篇》获取数据

数据下载、解码、转置等

《一个图像复原实例入门深度学习&TensorFlow—第五篇》数据读取

从TFRrecord文件中多线程的读取数据

1. TFRecord文件介绍

2. 生成TFRecord文件

3.多线程读取TFRecord文件

   十图详解tensorflow数据读取机制:https://zhuanlan.zhihu.com/p/27238630 
   自制TFRecord数据集 读取、显示及代码详解:https://blog.csdn.net/qq_36330643/article/details/77366083
 

《一个图像复原实例入门深度学习&TensorFlow—第六篇》构建网络

1.网络介绍

2. 卷积神经网络

卷积神经网络概念与原理   TensorFlow卷积网络常用函数参数详细总结

(1)添加多个卷积核,比如32个卷积核,可以学习32种特征

(2)通道变化:由4个通道卷积得到2个通道的过程中,参数的数目为4×2×2×2个,其中4表示4个通道,第一个2表示生成2个通道,最后的2×2表示卷积核大小。

其中需要注意的是,四个通道上每个通道对应一个卷积核,先将w2忽略,只看w1,那么在w1的某位置(i,j)处的值,是由四个通道上(i,j)处的卷积结果相加然后再取激活函数值得到的。w1,w2为生成通道的两个卷积核

(3)在通过卷积获得了特征 (features) 之后,下一步我们希望利用这些特征去做分类。因为如果用所有特征的话,卷积特征向量会特变大,而一个图像区域有用的特征极有可能在另一个区域同样适用。因此,可以对不同位置的特征进行聚合统计,聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。

(*)经卷积层通道数变小,特征数目变多,利用池化层,又可以讲特征卷积核变小

3. 在TensorFlow中构建卷积神经网络(附代码)

(1)卷积层的卷积核 W=[Filter_H,Filter_W,Input_Channels,Output_Channels ],对于第一卷积层,我们定义了W_conv1 = weight_variable([5, 5, 1, 32]),也就是说卷积核的大小为5x5,上一层的图片数量为1,通过32个不同的卷积核(多核卷积)卷积得到32张不同的特征图。 input: 
指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height, in_width, in_channels]这样的shape

(2)经卷积层图像尺寸变化不大,经池化层后图像尺寸变小,需要经过上采样层还原

《一个图像复原实例入门深度学习&TensorFlow—第七篇》训练网络

1. 训练的目的:训练的目的就是要不断调整网络中神经元之间的连接权值W和偏置b,使得我们构建的卷积神经网络对于所有训练输入数据x的输出y_conv和理想输出y_label之间的差异逐渐变小。

2. 如何训练

(1)我们构建的卷积神经网络对于所有训练输入数据x的输出y_conv和理想输出y_label之间的差异程度,训练集中的x和y_label是不变的,在卷积神经网络构建好之后,y_conv就只与各个权值W和b有关,因此代价函数J是权值W和偏置b的函数。训练过程就是:改变W和b来最小化J 

(2)参数(W和b)是随机初始化的,因此梯度下降的起点可能是代价函数曲线中的任意一点,求该点的梯度(斜率)找到使得代价函数更小的移动方向,然后将参数向这个方向移动,移动的步长受学习率α和梯度共同影响,然后在新的起点继续求梯度找方向,移动得到新的权值,反复循环n次(n为训练次数,也就是参数向代价函数更小的方向移动了n次)。 
3. 在TensorFlow中训练网络

在计算图(graph)中定义训练过程只需要这两行:

loss = tf.reduce_mean(tf.square(y_conv - y_label))     # 定义代价函数为均方误差
train_op = tf.train.AdamOptimizer(1e-4).minimize(loss) # 使用梯度下降的高级算法对参数进行寻优   


然后在会话(Session)中反复运行下面这行代码:

# 将mini-batch feed给train_op 训练网络
sess.run(train_op,feed_dict={x:train_images_batch,y_label:train_labels_batch})

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值