Tensorflow学习流水

tf.Graph()

tf.Graph() 表示实例化了一个类,一个用于 tensorflow 计算和表示用的数据流图,通俗来讲就是:在代码中添加的操作(画中的结点)和数据(画中的线条)都是画在纸上的“画”,而图就是呈现这些画的纸,你可以利用很多线程生成很多张图,但是默认图就只有一张。

tf.Graph().as_default()

tf.Graph().as_default() 表示将这个类实例,也就是新生成的图作为整个 tensorflow 运行环境的默认图,如果只有一个主线程不写也没有关系,tensorflow 里面已经存好了一张默认图,可以使用tf.get_default_graph() 来调用(显示这张默认纸),当你有多个线程就可以创造多个tf.Graph(),就是你可以有一个画图本,有很多张图纸,这时候就会有一个默认图的概念了。

import tensorflow as tf
c=tf.constant(4.0)
assert c.graph is tf.get_default_graph() #看看主程序中新建的一个变量是不是在默认图里
g=tf.Graph()
with g.as_default():
    c=tf.constant(30.0)
    assert c.graph is g

不报错就是对的

tf.ConfigProto()

tf.ConfigProto配置tf.session()的运行环境,比如cpu or gpu,多线程的线程数;

os.putenv( 'CUDA_VISIBLE_DEVICES', FLAGS.gpuid )

tfconfig = tf.ConfigProto()
tfconfig.gpu_options.allow_growth = True   # 运行环境设置为gpu


sess = tf.Session(config=tfconfig)

tf.tile()

tf.tile(a,b), a是输入,b是a维度的张量,比如a是3维,则a为1*3的一维张量,其作用是在每个维度扩展对应b中的倍数;

a = tf.constant([[1, 2], [3, 4], [5, 6]], dtype=tf.float32)
a1 = tf.tile(a, [2, 3])
with tf.Session() as sess:
    print(sess.run(a))
    print(sess.run(a1))

array([[1., 2.],
       [3., 4.],
       [5., 6.]], dtype=float32)
 
 array([[1., 2., 1., 2., 1., 2.],
       [3., 4., 3., 4., 3., 4.],
       [5., 6., 5., 6., 5., 6.],
       [1., 2., 1., 2., 1., 2.],
       [3., 4., 3., 4., 3., 4.],
       [5., 6., 5., 6., 5., 6.]], dtype=float32)

checkpoint

saver = tf.train.Saver()
saver.save(sess, '/Path/to/Save/ckpt')
# 这会保存几个文件, checkpoint 、.ckpt.meta、.ckpt-data-00000-of-00001 【字典的形式】、mnist_fakequantize.ckpt.index

tf.train.write_graph(sess.graph_def, '/path/to/Mnist/Mnist_train/', 'mnist_fakequantize.pbtxt', True)
# 这会保存 .pbtxt文件
  • .ckpt:旧版本输出,相当于 .ckpt.data;
  • checkpoint:用于告知某些TF函数,这里最新的检查点文件
  • .ckpt.meta:包含元图,即计算图的结构,没有变量的值
  • .ckpt.data:包含所有变量的值,没有结构,通常会用于得到元数据和数据文件(也可以通过.pb得到)
  • .pbtxt:存储网络图
  • .pb:可保存整个图标(元 + 数据)
# 使用meta和data加载图的样例,可用于继续训练或测试数据;
saver = tr.train.import_meta_graph('/path/to/ckpt.meta')
saver.restore(sess, /path/to/.ckpt_data)

如果没有 .ckpt .ckpt.data 文件,可以使用tf.train.latest_checkpoint()来获取最后一次保存的模型;

model_file=tf.train.last_checkpoint(save_path)
saver.restore(sess,model_file)

你可能感兴趣的:(深度学习)