## 判断CUDA是否可用tf.test.is_built_with_cuda()##判断GPU是否可用tf.test.is_gpu_available(cuda_only=False, min_cuda_compute_capability=None)## Tensorboard可视化训练import tensorflow as tfsumm_scalar_list = []summ_scalar_list.append(tf.summary.scalar('F1_loss', loss[1]))summ_scalar_list.append(tf.summary.scalar('F2_loss', loss[2]))summ_scalar = tf.summary.merge(summ_scalar_list)writer = tf.summary.FileWriter(logpath, sess.graph)writer = tf.summary.FileWriter(logpath)writer.add_summary(sess.run(summ_scalar, feed_dict=feed_dict), iters)# 禁止输入特殊字符tensorboard --logdir=/home/yifei.wang/log ### tensorflow模型## CheckPoint(*.ckpt):仅包含权重数据init = tf.global_variables_initializer()sess = tf.Session()sess.run(init)global_vars = tf.global_variables()saver = tf.train.Saver(var_list=global_vars)# 保存saver.save(sess, 'model.ckpt', epoch)saver.save(sess=sess, save_path=model_save_path, global_step=step) # step作为后缀加到模型名字中"""## 保存后文件:调用后创建3个数据文件1个检查点文件1. checkpoint # 检查点文件2.model.ckpt.data-00000-of-00001 # weights等参数以dict形式保存至该文件3.model.ckpt.index # 内部需要的某种索引来正确映射1、2文件4.model.ckpt.meta # MetaGraph数据保存至该文件,可使用tf.train.import_meta_graph加载"""# 加载model_file=tf.train.latest_checkpoint('ckpt/') # 自动获取最后一次保存的模型saver.restore(sess, 'model.ckpt')## GraphDef(*.pd): 表示MetaGraph的protocol buffer格式文件;MetaGraph包含计算图节点及相关张量import tensorflow as tfx = tf.placeholder(tf.float32, name="input")a = tf.Variable(tf.constant(5., shape=[1]), name="a")b = tf.Variable(tf.constant(6., shape=[1]), name="b")c = tf.Variable(tf.constant(10., shape=[1]), name="c")d = tf.Variable(tf.constant(2., shape=[1]), name="d")tensor1 = tf.multiply(a, b,"mul")tensor2 = tf.subtract(tensor1, c,"sub")tensor3 = tf.div(tensor2, d,"div")result = tf.add(tensor3, x, "add")inial = tf.global_variables_initializer()sess = tf.Session()sess.run(init)result = sess.run(result, feed_dict={x: 1.0})# 保存# 将计算图中变量转换为常量,并指定输出节点为'add'constant_graph = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['add']) with tf.gfile.FastGFile('model.pb', mode='wb') as fd: # 将计算图写入该pb文件 fd.write(constant_graph.SerializeToString()) # 加载with tf.gfile.FastGFile('model.pb', 'rb') as fd: graph_def = tf.GraphDef() graph_def.ParseFromString(fd.read()) result, x = tf.import_graph_def(graph_def, return_elements=['add:0', 'input:0']) result = sess.run(result, feed_dict={x: 5.0})""" ## checkpoint(*.ckpt) 由tf.train.Saver()对象调用saver.save()生成,只包含若干Variables对象序列化后的数据,不包含图结构. 仅有checkponit模型不提供代码无法重新构建计算图 加载checkpoint时,调用saver.restore(session, checkpoint_path)"""""" ## GraphDef(*.pd) 包含protobuf(Protocol Buffers,Google的序列化框架)对象序列化后的数据 包含计算图,可得到所有运算符(Operators)细节 包含张量(tensors)和Variables定义,但不包括Variable值,因此只能从中恢复图,但一些训练的权值仍需要从checkpoint恢复"""# 利用*.pd文件构建计算图def load_graph(model_file): graph = tf.Graph() graph_def = tf.GraphDef() with open(model_file, 'rb') as f: graph_def.ParseFromString(f.read()) with graph.as_default(): tf.import_graph_def(graph_def) return graph## 查看tf的版本及cpu or gputf.__version__()sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))