keras基于theano和tensorflow训练的模型相互转换
2016-10-25 09:55
621 查看
</pre><pre code_snippet_id="1947416" snippet_file_name="blog_20161025_1_3331239" name="code" class="python">
# coding:utf-8 """ If you want to load pre-trained weights that include convolutions (layers Convolution2D or Convolution1D), be mindful of this: Theano and TensorFlow implement convolution in different ways (TensorFlow actually implements correlation, much like Caffe), and thus, convolution kernels trained with Theano (resp. TensorFlow) need to be converted before being with TensorFlow (resp. Theano). """ from keras import backend as K from keras.utils.np_utils import convert_kernel from text_classifier import keras_text_classifier import sys def th2tf( model): import tensorflow as tf ops = [] for layer in model.layers: if layer.__class__.__name__ in ['Convolution1D', 'Convolution2D']: original_w = K.get_value(layer.W) converted_w = convert_kernel(original_w) ops.append(tf.assign(layer.W, converted_w).op) K.get_session().run(ops) return model def tf2th(model): for layer in model.layers: if layer.__class__.__name__ in ['Convolution1D', 'Convolution2D']: original_w = K.get_value(layer.W) converted_w = convert_kernel(original_w) K.set_value(layer.W, converted_w) return model def conv_layer_converted(tf_weights, th_weights, m = 0): """ :param tf_weights: :param th_weights: :param m: 0-tf2th, 1-th2tf :return: """ if m == 0: # tf2th tc = keras_text_classifier(weights_path=tf_weights) model = tc.loadmodel() model = tf2th(model) model.save_weights(th_weights) elif m == 1: # th2tf tc = keras_text_classifier(weights_path=th_weights) model = tc.loadmodel() model = th2tf(model) model.save_weights(tf_weights) else: print("0-tf2th, 1-th2tf") return if __name__ == '__main__': if len(sys.argv) < 4: print("python tf_weights th_weights <0|1>\n0-tensorflow to theano\n1-theano to tensorflow") sys.exit(0) tf_weights = sys.argv[1] th_weights = sys.argv[2] m = int(sys.argv[3]) conv_layer_converted(tf_weights, th_weights, m)
相关文章推荐
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-05-模型
- 如何用Tensorflow训练模型成pb文件(一)——基于原始图片的读取
- Keras: 基于Theano和TensorFlow的快速深度学习库
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-05-模型
- 基于Theano的深度学习框架keras及配合SVM训练模型 (非常好的思路:DL+DM)
- 基于TensorFlow和Keras的垃圾分类模型
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-05-模型
- Keras:基于Theano和TensorFlow的深度学习库之中文文档
- 基于Theano的深度学习框架keras及配合SVM训练模型
- 【Tensorflow keras】Keras:基于Theano和TensorFlow的深度学习库
- 阿里 NIPS 2017 Workshop 论文:基于 TensorFlow 的深度模型训练 GPU 显存优化
- Tensorflow之基于slim训练自己的模型
- Keras上基于TensorFlow实现简单线性回归模型
- 如何用Tensorflow训练模型成pb文件(二)——基于tfrecord的读取
- Keras: 基于Theano和TensorFlow的快速深度学习库
- 基于Theano的深度学习框架keras及配合SVM训练模型
- 基于Tensorflow训练物体、人像识别的模型
- Deep learning基于theano的keras学习笔记(1)-Sequential模型
- 应用 Rational 工具简化基于 J2EE 的项目第 3 部分 :转换到系统模型
- 重新想象 Windows 8 Store Apps (44) - 多线程之异步编程: 经典和最新的异步编程模型, IAsyncInfo 与 Task 相互转换