`

Keras切换backend : theano --> tensorflow

 
阅读更多
1、切换backend
修改~/.keras/keras.json 文件中的 theano 字段为tensorflow即可
官方文档:https://keras.io/backend/


2、theano和tensorflow卷积核互相转换
切换backend后,模型运算会出错,原因在于tensorflow中的卷积实际上时相关,二theano中的卷积是真正的卷积!!!!所以,切换backend时,需要对卷积核进行翻转

参见:https://github.com/fchollet/keras/wiki/Converting-convolution-kernels-from-Theano-to-TensorFlow-and-vice-versa

通用转换代码如下(theano和tensorflow互转):
from keras import backend as K
from keras.utils.np_utils import convert_kernel

model = model_from_json(open(os.path.join('.', 'model.json')).read())
model.load_weights(os.path.join('.',  'model_weights.h5'))



for layer in model.layers:
   if layer.__class__.__name__ in ['Convolution1D', 'Convolution2D','Convolution3D', 'AtrousConvolution2D']:
      original_w = K.get_value(layer.W)
      converted_w = convert_kernel(original_w)
      K.set_value(layer.W, converted_w)


print('running')   
K.get_session().run(ops)
print('saving')    
model.save_weights('model_weights_anotherBackend.h5')


tensoflow专用转换代码如下:
from keras import backend as K
from keras.utils.np_utils import convert_kernel
import tensorflow as tf

model = model_from_json(open(os.path.join('.', 'model.json')).read())
model.load_weights(os.path.join('.',  'model_weights.h5'))
ops = []
for layer in model.layers:
    if layer.__class__.__name__ in ['Convolution1D', 'Convolution2D', 'Convolution3D', 'AtrousConvolution2D']:
        original_w = K.get_value(layer.W)
        print(layer.W.name)
        print('\t',end='')
        print(layer.W.get_shape().to_list())
        converted_w = convert_kernel(original_w)
        ops.append(tf.assign(layer.W, converted_w).op)

print('running')   
K.get_session().run(ops)
print('saving')    
model.save_weights('model_weights_tensorflow.h5')
分享到:
评论

相关推荐

    VGG16迁移学习 keras框架 backend:theano

    VGG16迁移学习 keras框架 backend:theano 更改文件中的图片路径 和输出权重路径 需要另外下载imagenet1000权重

    Tutorials-on-Keras-with-Tensorflow-Backend:Tensorflow基础

    Keras是一个高级神经网络API,最初设计为与Theano和TensorFlow兼容,但现在主要与TensorFlow集成。Keras的目标是提供一个用户友好的、模块化的界面,使研究人员能够快速原型化想法并实现深度学习模型。Keras的特点...

    Keras 切换后端方式(Theano和TensorFlow)

    ### Keras 切换后端方式(Theano和TensorFlow) #### 概述 Keras 是一个高级神经网络 API,能够运行在 TensorFlow 或 Theano 之上。它能够在 CPU 和 GPU 上无缝运行,并且易于使用,适合快速原型设计。本文将详细...

    浅谈keras 的抽象后端(from keras import backend as K)

    例如,通过 `from keras import backend as K` 导入后端模块,然后可以使用 `K.placeholder()` 创建输入占位符,类似于 TensorFlow 的 `tf.placeholder()` 或 Theano 的 `th.tensor.matrix()`。同样,`K.variable()`...

    theano依赖,keras安装

    Keras支持多种后端,包括TensorFlow、Theano等。若需切换到Theano作为后端,可以在`.theanorc`文件中配置或通过Keras的API进行设置。 1. **修改`.theanorc`文件**: - 在文件中添加或修改`backend`项,设置为`...

    windows下安装theano+keras+anaconda

    ### Windows 下安装 Theano + Keras + Anaconda 在 Windows 环境下配置深度学习开发环境时,经常需要安装 Anaconda、Theano 和 Keras。以下内容详细介绍了如何在 Windows 10 系统上完成这些软件的安装与配置。 ###...

    Keras——Keras简介、安装及backend

    3. 在Python脚本中设置:在导入Keras之前,通过`os.environ['KERAS_BACKEND']='tensorflow'`或`os.environ['KERAS_BACKEND']='theano'`来指定后端。这种方法只影响当前脚本,不会改变全局设置。 了解并掌握Keras的...

    浅析关于Keras的安装(pycharm)和初步理解

    Keras 是一个强大的神经网络库,它以 Python 语言编写,并且可以与多个深度学习框架如 TensorFlow、CNTK 和 Theano 配合使用。它的设计初衷是为了加速科研过程,允许研究人员快速将想法转化为实验结果。Keras 的易用...

    查看keras的默认backend实现方式

    这个示例结果显示Keras的默认backend是TensorFlow,并且图像维度顺序为“tf”,即通道在后(channel-last)。 #### 补充知识:Keras与TensorFlow的Channel之争 在使用Keras时,需要注意的一个关键问题是关于通道...

    Python-TensorFlow与其他开源框架的集成

    Keras是一个高级神经网络API,可以运行在TensorFlow、Theano和CNTK之上。它提供了一种用户友好的接口,方便快速构建和实验神经网络模型。集成Keras与TensorFlow,可以利用Keras的易用性与TensorFlow的性能,只需简单...

    Keras WaveNet实施-Python开发

    ~~生成您自己的样本:$ KERAS_BACKEND = theano python2 wavenet.py使用models / run_20160920_120916 / config.json Forecast_seconds = 1进行预测~~编辑:必须将预训练的模型从存储库中删除,因为它与最近的更改不...

    Keras中文版2.0

    - **Keras后端(Backend)**:Keras支持多种后端,如TensorFlow、Theano等,用户可以根据需要选择合适的后端。 - **scikit-learn接口**:Keras提供了一个与scikit-learn兼容的接口,方便利用scikit-learn的各种工具...

    【医学影像分析】2D超声图像的分割检测(Ultrasound Nerve Segmentation - Kaggle数据集)

    os.environ['KERAS_BACKEND'] = 'theano' import keras.backend as K K.set_image_dim_ordering('th') numpy数据准备 //train文件中,用于train与validation的图片数量之比为4:1,test文件中由于没有对应的掩模...

    ubuntu系统theano和keras的安装方法

    不过要注意,Keras默认的后端是TensorFlow,但我们希望使用Theano作为后端。因此,我们需要手动修改Keras的配置文件。打开配置文件(如果没有,需要先创建): ```bash vim ~/.keras/keras.json ``` 然后,将配置...

    基于Keras 循环训练模型跑数据时内存泄漏的解决方式

    在深度学习领域,Keras是一个常用的高级神经网络API,它构建在TensorFlow、Theano和CNTK等后端之上。然而,在使用Keras进行模型训练和测试时,开发者可能会遇到内存泄漏的问题,尤其是在循环训练模型或者加载多个...

    Keras——Keras简介、安装、backend

    然后编辑该文件,修改"backend"字段的值,将其设为"tensorflow"以切换到Tensorflow后端,或设为"theano"以切换到Theano后端。保存更改后,Keras在下次导入时会使用新设置的后端。 Keras的这种灵活性使得用户可以...

Global site tag (gtag.js) - Google Analytics