ResNet50 nan损失(含Keras 2)

ResNet50 nan损失(含Keras 2),keras,Keras,自从升级到Keras 2后,我在尝试微调ResNet50时看到了nan的损失。如果我使用单个卷积层(下面注释掉)而不是resnet,那么损失和精度看起来还可以。我是否错过了与Keras 2一起改变的东西 从keras.applications.resnet50导入resnet50 从keras.layers导入展平、密集、输入、Conv2D、激活、展平 从keras.layers.pooling导入MaxPoolig2D 从keras.models导入模型 从keras.optimizers导入

自从升级到Keras 2后,我在尝试微调ResNet50时看到了nan的损失。如果我使用单个卷积层(下面注释掉)而不是resnet,那么损失和精度看起来还可以。我是否错过了与Keras 2一起改变的东西

从keras.applications.resnet50导入resnet50
从keras.layers导入展平、密集、输入、Conv2D、激活、展平
从keras.layers.pooling导入MaxPoolig2D
从keras.models导入模型
从keras.optimizers导入新加坡元
将numpy作为np导入
inp=Input(批处理形状=(322242243),name='Input\u图像')
###resnet
modelres=ResNet50(weights=“imagenet”,包括\u top=False,输入\u tensor=inp)
x=moderes.output
x=展平()(x)
###单卷积层
#x=Conv2D(32,(3,3))(inp)
#x=激活('relu')(x)
#x=MaxPoolig2D(池大小=(3,3))(x)
#x=展平()(x)
#x=密度(单位=32)(x)
预测=密集(单位=2,内核初始化器=“he\u normal”,激活=“softmax”)(x)
模型=模型(输入=输入,输出=预测)
编译(SGD(lr=0.001,动量=0.9),“分类交叉熵”,度量=[“准确度”])
#生成具有相同标签的所有图像
def gen():
尽管如此:
x_data=np.ones((322224,3)).astype('float32')
y_data=np.zeros((32,2)).astype('float32'))
y_数据[:,1]=1.0
产生x_数据,y_数据
模型拟合生成器(gen(),10,验证数据=gen(),验证步骤=1)
model.summary()
的开头和结尾如下所示:

____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to
====================================================================================================
input_image (InputLayer)         (32, 224, 224, 3)     0
____________________________________________________________________________________________________
zero_padding2d_1 (ZeroPadding2D) (32, 230, 230, 3)     0
____________________________________________________________________________________________________
conv1 (Conv2D)                   (32, 112, 112, 64)    9472

...

avg_pool (AveragePooling2D)      (32, 1, 1, 2048)      0
____________________________________________________________________________________________________
flatten_1 (Flatten)              (32, 2048)            0
____________________________________________________________________________________________________
dense_1 (Dense)                  (32, 2)               4098
====================================================================================================
培训产出为:

Epoch 1/1
10/10 [==============================] - 30s - loss: nan - acc: 0.0000e+00 - val_loss: nan - val_acc: 0.0000e+00

当我将后端切换到tensorflow而不是theano时,一切都正常。看起来好像是keras 2中的theano实现出现了一些问题。

这是从一开始还是在一些批次/时代之后出现的
nan
s?从一开始输入的大小是多少?训练批次的形状是(322224,3)。尝试将
np.zero
也作为
x