- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是将 keras 用于深度学习应用程序的新手。我正在尝试使用预先训练的模型执行二元分类。我在 google colab 中运行代码,其中 tensorflow 版本是 2.2.0-rc2 .以下是我正在使用的模型。
vgg19_basemodel = tf.keras.applications.VGG19(include_top = False, weights='imagenet', input_shape=(IMSIZE,IMSIZE,3))
#vgg19_basemodel.summary()
x = vgg19_basemodel.output
x = tf.keras.layers.Conv2D(16, (3,3), activation='relu')(x)
x = tf.keras.layers.MaxPooling2D(2,2)(x)
x = tf.keras.layers.Flatten()(x)
x = tf.keras.layers.Dense(32, activation="relu")(x)
x = tf.keras.layers.Dropout(0.2)(x)
x = tf.keras.layers.Dense(1, activation="sigmoid")(x)
for layer in vgg19_basemodel.layers:
layer.trainable = False
vgg19_model = tf.keras.Model(vgg19_basemodel.input, x)
vgg19_model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=LR), loss='binary_crossentropy', metrics=['accuracy'])
#vgg19_model.summary()
class myCallBack(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}):
if(logs.get('loss') <= EXLOSS and logs.get('accuracy') >= EXACC and logs.get('val_accuracy') >= VALACC):
print("\nCALLBAKC: TRAINING LOSS {} reached.".format(EXLOSS))
self.model.stop_training = True
ccall = myCallBack()
es = tf.keras.callbacks.EarlyStopping(monitor='loss', mode='min', min_delta=0.01, baseline = 0.01, patience=10, restore_best_weights=True)
d3_vgg19_history = vgg19_model.fit(d3_train_generator,
epochs=EPOCHS,
validation_data=d3_test_generator,
steps_per_epoch=d3_stepsize_train,
validation_steps=d3_stepsize_test,
callbacks=[ccall, es]
)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-38-f6a9ab9579ae> in <module>()
6 steps_per_epoch=d3_stepsize_train,
7 validation_steps=d3_stepsize_test,
----> 8 callbacks=[ccall, esd3]
9 )
4 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in _method_wrapper(self, *args, **kwargs)
64 def _method_wrapper(self, *args, **kwargs):
65 if not self._in_multi_worker_mode(): # pylint: disable=protected-access
---> 66 return method(self, *args, **kwargs)
67
68 # Running inside `run_distribute_coordinator` already.
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
811 epoch_logs.update(val_logs)
812
--> 813 callbacks.on_epoch_end(epoch, epoch_logs)
814 if self.stop_training:
815 break
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py in on_epoch_end(self, epoch, logs)
363 logs = self._process_logs(logs)
364 for callback in self.callbacks:
--> 365 callback.on_epoch_end(epoch, logs)
366
367 def on_train_batch_begin(self, batch, logs=None):
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py in on_epoch_end(self, epoch, logs)
1483 if self.verbose > 0:
1484 print('Restoring model weights from the end of the best epoch.')
-> 1485 self.model.set_weights(self.best_weights)
1486
1487 def on_train_end(self, logs=None):
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py in set_weights(self, weights)
1517 expected_num_weights += 1
1518
-> 1519 if expected_num_weights != len(weights):
1520 raise ValueError(
1521 'You called `set_weights(weights)` on layer "%s" '
TypeError: object of type 'NoneType' has no len()
最佳答案
发现了“问题”。
它是 None 是有道理的,因为在我的情况下,它没有找到比基线更好的模型。
我摆脱了“基线 = 1.0”,现在它对我有用。
关于python - 类型错误:在 EarlyStopping keras 中使用 restore_best_weights=True 时,类型 'NoneType' 的对象没有 len(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61176084/
当我使用EarlyStopping时回调 Keras 是否保存了最佳模型 val_loss或者将模型保存在 save_epoch = [最佳时期 val_loss ] + YEARLY_STOPPIN
我正在使用 Keras 训练神经网络。我将 num_epochs 设置为一个较高的数字,并让 EarlyStopping 终止训练。 model = Sequential() model.add(De
我正在尝试进行一些二元分类,并使用 Keras 的 EarlyStopping 回调。但是,我对patience参数有疑问。 在 documentation据说 patience: number of
我的模型在第 4 个时期后停止训练,尽管我希望它在之后继续训练。我已将监视器设置为验证损失和耐心为 2,我认为这意味着在验证损失连续增加 2 个时期后训练停止。然而,训练似乎在此之前就停止了。 我定义
当使用类似的东西时: callbacks = [ EarlyStopping(patience=15, monitor='val_loss', min_delta=0, mode='min')
我正在 Python Keras 中拟合神经网络。 为了避免过度拟合,我想监控训练/验证损失并创建一个适当的回调,当训练损失远小于验证损失时停止计算。 一个回调的例子是: callback = [Ea
我在我的 U-net 模型中使用了 Early Stopping,但它引发了错误 File "main.py", line 18, in earlystopper = EarlyStoppi
我正在训练我的第一个迁移学习模型(耶!),当验证损失在超过 3 个时期内变化不超过 0.1 时,我无法让模型停止训练。 这是相关的代码块 early_stopping = tf.keras.callb
我想在我的模型训练时保存最好的检查点,但回调没有按我预期的那样工作。根据 Saving best model in Keras这段代码应该可以工作。 model = Sequential() mode
我想知道是否有一种简单的方法可以创建一种基于用户输入而不是监视任何特定指标来触发 Keras 提前停止的方法。 即,我想向执行训练的进程发送键盘信号,以便它脱离 fit_generator 函数并执行
我正在尝试使用 Keras 模型对信用卡欺诈进行分类。由于数据集不平衡,我需要使用f1_score来提高召回率。 显然,它不接受 f1 函数定义。如何监控每个时期的新指标?如果使用 val_loss
我正在使用基于 val_acc 和 patience=0 的 EarlyStopping 使用 Keras 训练神经网络。 EarlyStopping 在 val_acc 减少时立即停止训练。 但是我
在使用 EarlyStopping callback 时,有什么方法可以返回 Keras 中停止训练的时期数吗? ? 我可以使用 patience 参数获取训练和验证损失的日志并自行计算轮数,但有没有
我编写了一个LSTM回归模型。它是最后一个LSTM层的BATCH_SIZE=1和RETURN_Sequence=True的模型。我还设置了VERIFICATION_DATA和耐心进行培训。但似乎存在一
我正在使用有状态 LSTM 回归模型,并且我想应用 EarlyStopping 函数。在我阅读的有状态 LSTM 中,状态应该在每个时期重置。但是,我注意到当我重置状态时,EarlyStopping
我有一个问题,我将EarlyStping回调应用到我的模型中以限制纪元。到目前为止,我知道当我设置的指标没有持续改进时,这个回调会自动停止学习,但学习会在我不想要的点上停止。如果你能告诉我原因是什么,
我有一个问题,我将EarlyStping回调应用到我的模型中以限制纪元。到目前为止,我知道当我设置的指标没有持续改进时,这个回调会自动停止学习,但学习会在我不想要的点上停止。如果你能告诉我原因是什么,
这是我的代码: from keras.callbacks import EarlyStopping model = Sequential() model.add(Dense(50, input_dim
我是将 keras 用于深度学习应用程序的新手。我正在尝试使用预先训练的模型执行二元分类。我在 google colab 中运行代码,其中 tensorflow 版本是 2.2.0-rc2 .以下是我
我是一名优秀的程序员,十分优秀!