tensorflow怎么训练模型(怎样在GPU上进行int8 模型的训练)
本文目录
怎样在GPU上进行int8 模型的训练
我也不知道啊
不是特别清楚
真的很好点解点解记得记得姐姐就睡觉吧行吧行吧行吧行吧呷哺呷哺呗不声不响不行不行并行不悖想你你是男是女再见
tensorflow训练好的模型,怎么调用
调用时,代码如下:
y即为输出的结果。
github传送门:SymphonyPy/Valified_Code_Classify
一个识别非常简单的验证码的程序
保存训练好的模型的代码如下:
训练完一个模型后,为了以后重复使用,通常我们需要对模型的结果进行保存。如果用Tensorflow去实现神经网络,所要保存的就是神经网络中的各项权重值。建议可以使用Saver类保存和加载模型的结果。
1、使用tf.train.Saver.save()方法保存模型
tf.train.Saver.save(sess, save_path, global_step=None, latest_filename=None, meta_graph_suffix=’meta’, write_meta_graph=True, write_state=True)
sess: 用于保存变量操作的会话。
save_path: String类型,用于指定训练结果的保存路径。
global_step: 如果提供的话,这个数字会添加到save_path后面,用于构建checkpoint文件。这个参数有助于我们区分不同训练阶段的结果。
2、使用tf.train.Saver.restore方法价值模型
sess: 用于加载变量操作的会话。
save_path: 同保存模型是用到的的save_path参数。
tf.train.Saver.restore(sess, save_path)
计算loss、accuracy以及模型训练
模型搭建完后,计算loss值、准确度及优化器。 一、tf.control_dependencies 该函数保证其辖域中的操作必须要在该函数所传递的参数中的操作完成后再进行。如下例子: 输出为: Add: 3 Add_with_dependency: 12 从结果中可以看到,正常的计算图在计算add时是不会经过update_op操作的,因此在加法时a的值为1,但是采用tf.control_dependencies函数,可以控制在进行add前先完成update_op的操作,因此在加法时a的值为10,因此最后两种加法的结果不同。 二、tf.GraphKeys.UPDATE_OPS 这是一个tensorflow的计算图中内置的一个集合,其中会保存一些需要在训练操作之前完成的操作,并配合tf.control_dependencies函数使用。 关于在batch_norm中,即为更新mean和variance的操作。通过下面一个例子可以看到tf.layers.batch_normalization中是如何实现的。 输出结果: 输出的即为两个batch_normalization中更新mean和variance的操作,需要保证它们在train_op前完成。 这两个操作是在tensorflow的内部实现中自动被加入tf.GraphKeys.UPDATE_OPS这个集合的,在tf.contrib.layers.batch_norm的参数中可以看到有一项updates_collections的默认值即为tf.GraphKeys.UPDATE_OPS,而在tf.layers.batch_normalization中则是直接将两个更新操作放入了上述集合。
facenet训练后模型使用tensorflow量化
1、使用facenent/src/freeze_graph.py将ckpt模型文件转化为pb模型文件, 需要注意的是,需要在这里面添加模型名称及scope,如下图所示,转化ResNeXt模型是需要添加ResNeXt: 2、使用bazel搭建tensorflow的quzntization工具,如下面命令所示; $ cd ~/tensorflow/ (tensorflow的源码路径)$ bazel build tensorflow/tools/quantization:quantize_graph 3、量化前需要修改/tensorflow/tensorflow/python/framework/graph_util_impl.py,由于“Identity”的原因有些层无法量化,使量化后的模型无法使用,需做如下图的修改: 3.1、if node.name == "input": \n continue解决了由于“Identity”不将input层量化的错误; 3.2、re.match(r".*/cond.*", input_name)能够结果下面的错误: ValueError: graph_def is invalid at node ’InceptionResnetV1/Conv2d_1a_3x3/BatchNorm/cond/AssignMovingAvg/decay’: More inputs specified (’InceptionResnetV1/Conv2d_1a_3x3/BatchNorm/cond/Switch:1’) than the op expects. 4、量化指令: bazel-bin/tensorflow/tools/quantization/quantize_graph \ --input=/tmp/classify_image_graph_def.pb \ --output_node_names="embeddings" \ --output=/tmp/quantized_graph.pb \ --mode=eightbit***隐藏网址******隐藏网址***
更多文章:
linux镜像文件iso下载(如何制作Oracle Linux ISO文件)
2024年6月21日 00:25
delight名词(喜欢 用delight的词组怎么表示可以说be delighted with吗)
2024年7月23日 06:42
syntaxerror是什么错误(python2.7出现syntaxerror: invalid syntax错误)
2024年5月10日 22:16
basketball court(basketball court是什么意思)
2023年12月29日 06:20
ros系统和linux的区别(ucos和linux的区别和联系是什么)
2023年6月30日 15:20
微信小程序投票网为什么进不去?小程序4g网能进wifi进不去 原因及解决方法
2024年7月6日 16:33
checkedlistbox全选(C#中checkedlistbox的用法)
2024年7月10日 10:03