编辑:无法使用cuda 8.0和使用titan X(Pascal)重现此问题
将tensorflow后端用于keras我遇到了与image_dim_ordering相关的问题。当我在keras配置文件中使用image_dim_ordering ='th'时,一切都很好,但是当我使用'tf'时,从0.5的准确度来看,训练并不能真正提高多少。
这样做的动机是,目前我的实时增强功能非常昂贵,并且我希望将不需要的重塑从theano dim order Convention移到tensorflow。
我尝试用简单的代码重新创建问题,以允许其他人复制,这可能有助于我了解我在这里做错了什么。我非常了解频道,高度,宽度的不同约定,至少我认为可以解决这个问题。
虽然我没有在紧凑的示例中完全重现我的问题(也许是因为这是一项微不足道的任务),但训练结果反复不同,对于“ tf”情况甚至更糟,即使我尝试使用不同的种子值也是如此。注意-在此复制代码中,网络所需要做的就是将-1.0的完整补丁与1.0的完整补丁区分开
这是我的〜/ .keras / keras.json
{
"floatx": "float32",
"epsilon": 1e-07,
"backend": "tensorflow",
"image_dim_ordering": "th"
}
Run Code Online (Sandbox Code Playgroud)
我的tensorflow版本是``0.11.0rc0''(也发生在0,10上)我的keras是今天的最新git pull。
使用'th'进行image_dim_ordering时,对于三个不同的种子,在第4阶段获得的精度> = 0.99。使用'tf'进行暗淡排序,我得到的准确度最新达到> = 0.9,正如您在下面的日志中看到的那样,仅在第24个时间点
以下是应该重现该问题的独立代码:
from keras import backend as K
import keras.optimizers
from keras.layers import Convolution2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense, Input
from keras.models import Model
import numpy as np
def make_model(input_dim_size):
if K.image_dim_ordering() == 'tf':
input_shape = (input_dim_size, input_dim_size,1)
else:
input_shape = (1, input_dim_size, input_dim_size)
img_input …
Run Code Online (Sandbox Code Playgroud) keras ×1