首先声明:我是在学习keras框架的过程有感而发!希望能够帮助你
我们在model的搭建过程中,有很多时候因为channel_first or channel_last的问题绞尽脑汁,这里我提两点技巧。
First
我们要明白几点内容,当我们用theano作为backend时候,我们在进行卷积等一些操作时候,系统都会自动按照channel_first的来,比如卷积后的深度那一维放到了H,W的前面。而我们如果用tensorflow作为backend时候,系统会默认是channel_last。你可以通过修改backend来达到你想要的效果,并且通过下面这个函数测试,你目前是什么类型:
keras.backend.image_data_format()
如果你不想修改默认的或者当前backend,还可以通过添加下面这行代码来修改当前的data_format为channel_first
from keras import backend as K
K.set_image_dim_ordering('th')
#K.set_image_dim_ordering('tf')则会修改为channel_last
Second
我们在调用一些方法的时候,如果想在方法局部来改变方法读取数据的方式是channel_first还是channel_last,我们可以通过查询方法中的参数是否包含data_format这一项,如果有的话,我们就可以通过选择是"channels_first" 还是 “channels_last”决定方法内部用什么方式执行了。