Keras图片的通道顺序修改方式怎么样子做
Admin 2022-07-22 群英技术资讯 1097 次浏览
在实际应用中,我们有时候会遇到“Keras图片的通道顺序修改方式怎么样子做”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“Keras图片的通道顺序修改方式怎么样子做”文章能帮助大家解决问题。在使用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]
检查 ~/.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")
这样设置之后再这个程序跑起来的时候其后端并不会被改变,改变的只是数据的维度顺序而已,而且仅仅是针对当前的程序,对其它程序是不影响的。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
这篇文章主要为大家介绍了caffe的python接口绘制loss和accuracy曲线示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
这篇文章主要介绍了Python使用wxpy模块实现微信两两群组消息同步,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
本文主要介绍了使用pyscript在网页中撰写Python程式的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
有时候我们需要用python调用matlab,但是不少朋友在python调用matlab事,会遇到一些问题,因此这篇文章就分享一下如何解决python调用matlab的几个常见问题。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008