keras实现theano和tensorflow训练的模型相互转换
作者:零落_World 发布时间:2023-04-18 05:49:26
标签:keras,theano,tensorflow
我就废话不多说了,大家还是直接看代码吧~
</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即可显示
修改方法:
打开
修改
来源:https://blog.csdn.net/cdj0311/article/details/52918687
0
投稿
猜你喜欢
- wxml文件中: <!--倒计时 --> <view class="countDownTimeVie
- 在web开发中经常遇到多关键词对对单个字段查询,我一般是通过动态数组来实现的。当然多个关键词的一般是用空格或,隔开,我这几假设多个关键词用空
- 如图所示,我们要计算任意两个向量之间的夹角。(图中的坐标数字是估计值,随手给定)python代码如下import math AB = [1,
- 一,直接保存pb1, 首先我们当然可以直接在tensorflow训练中直接保存为pb为格式,保存pb的好处就是使用场景是实现创建模型与使用模
- 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。回忆一下Animal类层次的设计,假设我们要实现以下4种动物:&
- 运行环境: CentOS6.5_x64Python版本 : 2.6使用pyinstaller打包pyinstaller可以将python程序
- 前言matplotlib画图例默认的位置是在图中的各个角落,但有时图例位置会遮挡住图像而不符合我们的需求,需要对图例位置进行调整。代码如下:
- MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能
- 微软开源了一个非常强大的自动化项目叫 playwright-python它支持主流的浏览器,包含:Chrome、Firefox、Safari
- logging日志模块:是用来记录日志的模块,一般记录用户在软件中的操作使用方法:模板直接拿来用,手动修改# logging的配置信息(模板
- 在使用jQuery类库实现tab功能时,是获取鼠标在mousenter或click时的index值,然后切换到当前的标题和内容,把其他的标题
- 前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控
- Create PROC P_viewPage
- 前面的话发布一个版本时,我们通常先在版本库中打一个标签(tag)。这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就
- 前言值类型:所有像int、float、bool和string这些类型都属于值类型,使用这些类型的变量直接指向存在内存中的值,值类型的变量的值
- 今天给大家分享一个用原生JS实现的好看计数器,效果如下:以下是代码实现,欢迎大家复制粘贴和收藏。<!DOCTYPE html>&
- 在上一篇《服务器XMLHTTP(Server XMLHTTP in ASP)基础》中我介绍了一下ServerX
- 这个python的小案例是五子棋游戏的实现,在这个案例中,我们可以实现五子棋游戏的两个玩家在指定的位置落子,画出落子后的棋盘,并且根据函数判
- 前言在Python中可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)这几个概念是经常用到的,初学时对这几
- 第一次打包vue的项目部署到服务器下时,发现初次加载特别的缓慢,将近20s页面才加载出来,完全没有开发环境上的那么流畅。主要原因是页面在打包