• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Keras 如何修改图片通道的顺序

    1. Error

    在使用Keras.layers.convolutional.Convolution2D的时候

    Convolution2D(32, 5, 5, border_mode='valid', input_shape=(1, 28, 28), activation='relu')

    报如下错误:

    OverflowError: Range exceeds valid bounds

    这是因为Keras配置图片通道顺序错误导致的。上面代码使用图片通道顺序是[channels][height][width]

    2. 修改图片通道顺序

    检查 ~/.keras/keras.json文件

    if "image_dim_ordering": is "th" and "backend": "theano", your input_shape must be (channels, height, width)
    if "image_dim_ordering": is "tf" and "backend": "tensorflow", your input_shape must be (height, width, channels)

    所以,要保证你使用的通道顺序和配置的通道顺序一致

    或者通过这样修改

    from keras import backend
    backend.set_image_dim_ordering('th')

    补充:Keras设置后端数据维度顺序

    Keras是比较高级的深度学习框架,其对几个比较常见的主流深度学习框架的封装而来,也就是按照Keras的说法就是其后端是以Tensorflow、Theano和CNTK为基础封装而来。

    CNTK我没做过多了解,tensorflow的tensor的维度顺序和Theano的维度顺序是不一样的,所以在使用Keras的时候要格外注意这一点,如果后端不同的话,设置的数据维度顺序也是要不一样的。

    tensorflow的数据维度默认顺序是channels_last的好像,也就是说其一个tensor的数据维度是[samples,rows,cols,channels],而Theano不同,其数据顺序是channels_first,也就是[samples,rows,cols,channels],这个其实也就是这两个框架的不同而已,如果用keras来写深度学习模型的话,其实就只要设置好后端基本也没啥问题,也不必太考虑数据维度的问题。

    但是Keras的数据维度是可以改变的,即使是使用tensorflow为后端,Keras的数据格式也可以是channels_first的,并且这个是可以通过配置文件来改,也可以通过代码来改的。

    Keras的配置文件默认是在$HOME/.keras/keras.json,可以用txt编辑器打开直接修改后端配置的:

    {
        "floatx": "float32",
        "epsilon": 1e-07,
        "image_data_format": "channels_last",
        "backend": "tensorflow"
    }

    这是我的windows下的配置信息,默认是以tensorflow为后端,数据格式是channels_last,但是我有个小项目是一开始是以Theano为后端来写的,本来就只要稍微改一下就好,但是因为只是这个项目需要改为Theano,所以我并没有直接改配置文件,而是在代码里修改后端,这里需要用到Keras的后端backend来实现,修改的代码如下:

    from keras import backend as BK
    BK.set_image_data_format("channels_first")
    BK.set_image_dim_ordering("th")

    这样设置之后再这个程序跑起来的时候其后端并不会被改变,改变的只是数据的维度顺序而已,而且仅仅是针对当前的程序,对其它程序是不影响的。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • keras实现VGG16方式(预测一张图片)
    • 使用keras框架cnn+ctc_loss识别不定长字符图片操作
    • 使用keras内置的模型进行图片预测实例
    • keras实现基于孪生网络的图片相似度计算方式
    • 利用keras加载训练好的.H5文件,并实现预测图片
    上一篇:python爬虫之异常捕获及标签过滤详解
    下一篇:OpenCV实现相机校正
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Keras 如何修改图片通道的顺序 Keras,如何,修改,图片,通道,