python - 如何防止 TypeError : unsupported operand type(s) for -: 'NoneType' and 'int' when using keras EarlyStopping?

标签 python keras

这是我的代码:

from keras.callbacks import EarlyStopping

model = Sequential()
model.add(Dense(50, input_dim=33, init='uniform', activation='relu'))
for u in range(3): #how to efficiently add more layers
    model.add(Dense(33, init='uniform', activation='relu'))
model.add(Dense(122, init='uniform', activation='sigmoid'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

model.fit(X_train, Y_train, nb_epoch=20, batch_size=20, callbacks=[EarlyStopping(monitor='val_loss', patience=4)])

我收到以下错误:

TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'

当我不使用 EarlyStopping 时,它不会产生该错误。

有人解决了吗?

最佳答案

如果您考虑一下:您要求在训练期间不使用验证来监控验证损失。

使用

model.fit(X_train, Y_train, nb_epoch=20, batch_size=20, validation_split=0.2, callbacks=[EarlyStopping(monitor='val_loss', patience=4)])

例如,如果您想要进行验证。它将使用 20% 的数据作为验证集。您不会在这些样本上进行训练,只是在每个时期结束时验证您的模型。

正如您在关于此代码的其他问题中提到的那样:将最后一个激活更改为 softmax 以与 categorical_crossentropy 一起使用。或者根据您的需要将目标切换为 binary_crossentropy

关于python - 如何防止 TypeError : unsupported operand type(s) for -: 'NoneType' and 'int' when using keras EarlyStopping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42472416/

相关文章:

python - 在 Keras 中实现自定义卷积层 - 加载模型时出错

tensorflow - 如何不在 Tensorflow Keras 中保存模型优化器?

Python从段落中提取信息

python - 使用 python 解压缩 zip 文件夹而不更改目录

python - Docker群服务到服务调用

python - 如何在keras conv层中进行零填充?

python - 尝试复制 Python 结果时 Keras 错误

python - python 中的循环和字符串

python - 在同一页面中利用 Sage 和 IPython notebook?或者,更确切地说,将它们结合起来?

keras - TypeError : Tensor is unhashable. 相反,使用 tensor.ref() 作为键。在 Keras 外科医生