深度学习TensorFlow笔记

1.TensorFlow中一般使用4维tensor表示一个mini-batch的图片,四个维度分别表示是批大小,像素行数,像素列数,通道数,即[batch,height,width,channels]。

2.声明占位符placeholder需要给定三个参数,分别是输入数据的元素类型dtype,维度形状shape和占位符名称标识name。一般将第一个维度作为mini-batch维度,而从第二个维度开始才是特征维度。

3.Session启动后就正式进入训练,首先要做的是使用tf.global_variables_initializer().run()方法初始化所有变量,再使用一个循环将数据反复代入计算图来执行迭代。在循环内,Session.run()是触发后端执行的入口。Session.run()有两个关键的参数,fetches和feed_dict。

4.fetches指定需要被计算的节点,可以用数组同时制定多个节点,执行会从输入节点开始,按照节点的依赖关系,依次计算目标节点算在的子图中的所有节点。

5.计算所需要的输入数据由feed_dict代入,feed_dict需要传入一个字典,字典的key是输入占位符placeholder,value为真实的输入数据。

 6.模型的存储与加载:使用tf.train.Saver和checkpoint机制。

7.变量的存储和读取是通过tf.train.Saver类完成的,Saver对象在初始化时,为计算图加入了用于存储和加载变量的算子,并可以通过参数指定是要存储哪些变量。Saver对象的save()和restore()方法是触发图中算子的入口。

8.Checkpoints是用于存储变量的二进制文件,在其内部使用字典结构存储变量,键为变量名字,即Variable.name成员的值,值为变量的tensor值。

9.预测数据结果:加载测试数据后执行一遍正向传播计算。

10.数据挖掘:从大量看似无序的数据中通过算法找到其中隐藏的信息和模式的过程。首先通过数据可视化,利用图形的方式更直观地感受数据,建立起足够的先验知识,然后利用特征工程方法筛选相关度最高的特征组合,最后将特征代入多种分类器进行试验,检验不同方法在同一问题上的表现。

11.tensorboard的使用问题:1.定义域:with tf.name_scope(layer_name):2.变量:tf.histogram_summary(layer_name+"/weights",Weights) #name命名,Weights赋值。3

常量:tf.scalar_summary('loss',loss) #命名和赋值.4展示:最后需要整合和存储SummaryWriter:merged = tf.merge_all_summaries()(#合并到Summary中)writer = tf.train.SummaryWriter("/目录",sess.graph)(#选定可视化存储目录)5merged也是需要run的,因此还需要:result = sess.run(merged) #merged也是需要run的 writer.add_summary(result,i)
 

12.在一个计算图中,可以通过集合(collection)来管理不同类别的资源。比如通过tf.add_to_collection函数可以将资源加入一个或多个集合中,然后通过tf.get_collection获取一个集合里面的所有资源。这里的资源可以是张量,变量或者运行tensorflow程度所需的队列资源。

12.2通过tf.all_variables函数可以拿到当前计算图上所有的变量。可以通过变量声明函数中的trainable参数来区分需要优化的参数(比如神经网络中的参数)和其他参数(比如迭代的轮数)。如果声明变量参数时参数trainable为true,那么这个变量将会被加入集合中。在tensorflow中通过tf.trainable_variable函数得到所有需要优化的参数。

12.3变量的类型type是不可改变的。维度在程序运行中是有可能改变的,但是需要通过设置参数validate_shape=False。eg:tf.assign(w1,w2,validate_shape=False)。

13. 张量中并没有真正保存数字,他保存的是如何得到这些数字的计算过程。一个张量中主要保存了三个属性:名字(name),维度(shape),和类型(dtype)。

14.通过ConfigProto可以配置类似并行的线程数,gpu分配策略,运算超时时间等参数。

15                                                                                                           .

 16.在tensorflow中实现反向传播算法的第一步是使用tensorflow表达一个batch数据。

17.常用的非线性激活函数图像

 18.神经网络模型的效果与优化目标主要是通过损失函数来定义的。

原文地址:https://www.cnblogs.com/Turing-dz/p/11504577.html