tensorflow学习报告
tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。
而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在tensorboard显示。
tf.summary有诸多函数:
1,tf.summary.scalar
tf.summary.scalar(tags, values, collections=None, name=None)
例如:tf.summary.scalar('mean', mean)
一般在画loss,accuary时会用到这个函数。
2,tf.summary.histogram
用于显示直方图信息,其格式为:
tf.summary.histogram(tags, values, collections=None, name=None)
例如: tf.summary.histogram('histogram', var)
可以将文本类型的数据转换为tensor写入summary中:
例如:
text = """/a/b/c\\_d/f\\_g\\_h\\_2017""" summary_op0 = tf.summary.text('text', tf.convert_to_tensor(text))
5、tf.summary.image
输出带图像的probuf,汇总数据的图像的的形式如下: ' tag /image/0', ' tag /image/1'...,如:input/image/0等。
格式:tf.summary.image(tag, tensor, max_images=3, collections=None, name=Non
6、tf.summary.audio
展示训练过程中记录的音频
7、tf.summary.merge_all
merge_all 可以将所有summary全部保存到磁盘,以便tensorboard显示。如果没有特殊要求,一般用这一句就可一显示训练时的各种信息了。
格式:tf.summaries.merge_all(key='summaries')
8、tf.summary.FileWriter
指定一个文件用来保存图。
格式:tf.summary.FileWritter(path,sess.graph)
可以调用其add_summary()方法将训练过程数据保存在filewriter指定的文件中
Tensorflow Summary 用法示例:
tf.summary.scalar('accuracy',acc) #生成准确率标量图 merge_summary = tf.summary.merge_all() train_writer = tf.summary.FileWriter(dir,sess.graph)#定义一个写入summary的目标文件,dir为写入文件地址 ......(交叉熵、优化器等定义) for step in xrange(training_step): #训练循环 train_summary = sess.run(merge_summary,feed_dict = {...})#调用sess.run运行图,生成一步的训练过程数据 train_writer.add_summary(train_summary,step)#调用train_writer的add_summary方法将训练过程以及训练步数保存
4.7
2、简答题:
(1)1、可以充分逼近任意复杂的非线性关系;
2、所有定量或定性的信息都等势分布贮存于网络内的各神经元,故有很强的鲁棒性和容错性;
3、采用并行分布处理方法,使得快速进行大量运算成为可能;
4、可学习和自适应不知道或不确定的系统;
5、能够同时处理定量、定性知识。
(2)BP神经网络具有任意复杂的模式分类能力和优良的多维函数映射能力,解决了简单感知器不能解决的异或(Exclusive OR,XOR)和一些其他问题。
3、论述题:
1、1、前馈神经网络只接受上一层传来的数据,处理然后接着再传入到下一层, 数据是正向流动的,而反馈神经网络神经元之间是由连接的,数据可以反馈到前层。
2、前馈神经网络不考虑输出和输入时间上的延迟,只能表示出输出和输入之间的一个映射关系,而反馈神经网络不同,他会考虑输出和输入之间的延迟,会考虑到输出对输入是否有用。
3、相比较前馈神经网络,反馈神经网络更适合记忆等功能。
2、BP神经网络无论在网络理论还是在性能方面已比较成熟。其突出优点就是具有很强的非线性映射能力和柔性的网络结构。网络的中间层数、各层的神经元个数可根据具体情况任意设定, 并且随 着结构的差异其性能也有所不同。但是BP神经网络也存在以下的一些主要缺陷。
①学习速度慢,即使是一个简单的问题,一般也需要几百次甚至上千次的学习才能收敛。
②容易陷入局部极小值。
③网络层数、神经元个数的选择没有相应的理论指导。
④网络推广能力有限。
3、网络的各个输入数据常常具有不同的物理意义和不同的量纲,如某输入分量在范围内变化,而另一输入分量则在 0~1 10-5范围内变化。尺度变换使所有分量都在 0~1或 -1~1之间变化,从而使网络训练一开始就给各输入分量以同等重要的地位:
BP 网的神经 元均采用Sigmoid 转移函数,变换后可防止因净输入的绝对值过大而使神经元输出饱和, 继 而使权值调整进入误差曲面的平坦区; Sigmoid 转移函数的输出在 0~1或-1 ~1之间,作 为教师信号的期望输出数据如不进行变换处理势必使数值大的分量绝对误差大, 数值小的分量的绝对误差小,网络训练时只针对输出的总误差调整权值,其结果是在总误差中占份额 小的输出分量相对误差较大,对输出分量进行尺度变换后这个问题可迎刃而解。
课后习题6.5
1):
卷积中的局部连接:层间神经只有局部范围内的连接,在这个范围内采用全连接的方式,超过这个范围的神经元则没有连接;连接与连接之间独立参数,相比于去全连接减少了感受域外的连接,有效减少参数规模。
全连接:层间神经元完全连接,每个输出神经元可以获取到所有神经元的信息,有利于信息汇总,常置于网络末尾;连接与连接之间独立参数,大量的连接大大增加模型的参数规模。
(2):
利用快速傅里叶变换把图片和卷积核变换到频域,频域把两者相乘,把结果利用傅里叶逆变换得到特征图。
(3):
池化操作的作用:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。
激活函数的作用:用来加入非线性因素的,解决线性模型所不能解决的问题。
(4):
消除数据之间的量纲差异,便于数据利用与快速计算。
(5):
寻找损失函数的最低点,就像我们在山谷里行走,希望找到山谷里最低的地方。那么如何寻找损失函数的最低点呢?在这里,我们使用了微积分里导数,通过求出函数导数的值,从而找到函数下降的方向或者是最低点(极值点)。损失函数里一般有两种参数,一种是控制输入信号量的权重(Weight, 简称 ),另一种是调整函数与真实值距离的偏差(Bias,简称 )。我们所要做的工作,就是通过梯度下降方法,不断地调整权重 和偏差b,使得损失函数的值变得越来越小。而随机梯度下降算法只随机抽取一个样本进行梯度计算。