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实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
python编程实现随机生成多个椭圆实例代码
Jan 03 Python
TensorFlow实现RNN循环神经网络
Feb 28 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
三步实现Django Paginator分页的方法
Jun 11 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
Python爬虫之Selenium设置元素等待的方法
Dec 04 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
python装饰器代码解析
Mar 23 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 has encountered an Access Violation
2007/01/15 PHP
PHPLog php 程序调试追踪工具
2009/09/09 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
php json与xml序列化/反序列化
2013/10/28 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
JavaScript之appendChild、insertBefore和insertAfter使用说明
2010/12/30 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
uniapp实现横向滚动选择日期
2020/10/21 Javascript
js实现简单的倒计时
2021/01/28 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python 安装setuptools和pip工具操作方法(必看)
2017/05/22 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
实现ECharts双Y轴左右刻度线一致的例子
2020/05/16 Python
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
苹果音乐订阅:Apple Music
2018/08/02 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
2019年.net常见面试问题
2012/02/12 面试题
成教自我鉴定
2013/10/27 职场文书
铁路安全反思材料
2014/12/24 职场文书
个人创业事迹材料
2014/12/30 职场文书
2015年共青团工作总结
2015/05/15 职场文书
熟背这些句子,让您的英语口语突飞猛进(135句)
2019/09/06 职场文书
centos8安装MongoDB的详细过程
2021/10/24 MongoDB
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android