Keras怎么修改图片通道的顺序

  介绍

这篇文章主要介绍了Keras怎么修改图片通道的顺序,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

1。误差

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

Convolution2D(32岁,5日,5日,border_mode=& # 39;有效# 39;,,input_shape=(1), 28日,28),,激活=& # 39;relu& # 39;)

报如下错误:

OverflowError:范围超出有效范围

这是因为Keras配置图片通道顺序错误导致的。上面代码使用图片通道顺序是(频道)(高度)(宽度)

2。修改图片通道顺序

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

if “image_dim_ordering":, is “th",以及“backend":,“theano",, your  input_shape  must  be (通道,高度,宽度)   if “image_dim_ordering": is “tf",以及“backend":,“tensorflow",, your  input_shape  must  be (宽度、高度,还以为;渠道)

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

或者通过这样修改

得到keras  import 后端   backend.set_image_dim_ordering (& # 39; th # 39;)

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

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

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

Tensorflow的数据维度默认顺序是channels_last的好像,也就是说其一个张量的数据维度是(样品、行关口、通道),而Theano不同,其数据顺序是channels_first,也就是(样品、行关口、通道),这个其实也就是这两个框架的不同而已,如果用Keras来写深度学习模型的话,其实就只要设置好后端基本也没啥问题,也不必太考虑数据维度的问题。

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

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

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

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

得到keras  import  backend  as  BK   BK.set_image_data_format (“channels_first")   BK.set_image_dim_ordering (“th")

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

感谢你能够认真阅读完这篇文章,希望小编分享的“Keras怎么修改图片通道的顺序”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

Keras怎么修改图片通道的顺序