keras实现theano和tensorflow训练的模型相互转换


Posted in Python onJune 19, 2020

我就废话不多说了,大家还是直接看代码吧~

</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)

补充知识:keras学习之修改底层为TensorFlow还是theano

我们知道,keras的底层是TensorFlow或者theano

要知道我们是用的哪个为底层,只需要import keras即可显示

修改方法:

打开

keras实现theano和tensorflow训练的模型相互转换

修改

keras实现theano和tensorflow训练的模型相互转换

以上这篇keras实现theano和tensorflow训练的模型相互转换就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
Python搭建HTTP服务器和FTP服务器
Mar 09 Python
windows 10下安装搭建django1.10.3和Apache2.4的方法
Apr 05 Python
Python数据结构之单链表详解
Sep 12 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
Python实现的序列化和反序列化二叉树算法示例
Mar 02 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
Python线程协作threading.Condition实现过程解析
Mar 12 Python
python数据类型强制转换实例详解
Jun 22 Python
Django框架中视图的用法
Jun 10 Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 #Python
python中怎么表示空值
Jun 19 #Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 #Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 #Python
为什么python比较流行
Jun 19 #Python
查看keras的默认backend实现方式
Jun 19 #Python
Python图像阈值化处理及算法比对实例解析
Jun 19 #Python
You might like
php 批量替换html标签的实例代码
2013/11/26 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
php语法检查的方法总结
2019/01/21 PHP
Javascript学习笔记2 函数
2010/01/11 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
使用Vue.observable()进行状态管理的实例代码详解
2019/05/26 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
Python实现端口复用实例代码
2014/07/03 Python
python自带的http模块详解
2016/11/06 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
幼儿园保教管理制度
2014/02/03 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技