【问题标题】:I Intiated a callback but it not work as defined我发起了一个回调,但它没有按定义工作
【发布时间】:2020-08-30 07:16:57
【问题描述】:

我正在编写一个代码来使用张量流预测快乐或悲伤的人脸,我将回调类定义为:

class myCallback(tf.keras.callbacks.Callback):
  def on_epoch_end(self, epoch, logs={}):
    if(logs.get('accuracy')>DESIRED_ACCURACY):
      print("\nReached 99.9% accuracy so cancelling training!")
      self.model.stop_training = True

callbacks = myCallback()

但它会返回这个:

Model Traning

如您所见 它返回应该打印的消息,但模型不会停止训练 正如我将课程的最后一行编码为self.model.stop_training = True

所以请提出是什么原因

编辑:这是我用来创建和运行模型的完整代码

import tensorflow as tf
import os
import zipfile


DESIRED_ACCURACY = 0.999

!wget --no-check-certificate \
    "https://storage.googleapis.com/laurencemoroney-blog.appspot.com/happy-or-sad.zip" \
    -O "/tmp/happy-or-sad.zip"

zip_ref = zipfile.ZipFile("/tmp/happy-or-sad.zip", 'r')
zip_ref.extractall("/tmp/h-or-s")
zip_ref.close()

class myCallback(tf.keras.callbacks.Callback):
  def on_epoch_end(self , epochs , logs={}):
    if(logs.get('accuracy')>DESIRED_ACCURACY):
      print('\nend')
      self.model.stop_traning = True
callbacks = myCallback()

# This Code Block should Define and Compile the Model
model = tf.keras.models.Sequential([
                                    tf.keras.layers.Conv2D(16 , (3,3) , activation = 'relu' , input_shape = (150, 150 , 3)),
                                    tf.keras.layers.MaxPool2D(2,2),
                                    tf.keras.layers.Conv2D(32 , (3,3) , activation = 'relu'),
                                    tf.keras.layers.MaxPool2D(2,2),
                                    tf.keras.layers.Conv2D(32 , (3,3) , activation = 'relu'),
                                    tf.keras.layers.MaxPool2D(2,2),
                                    tf.keras.layers.Flatten(),
                                    tf.keras.layers.Dense(512 , activation = 'relu'),
                                    tf.keras.layers.Dense(1 , activation = 'sigmoid')

])

from tensorflow.keras.optimizers import RMSprop

model.compile(loss = 'binary_crossentropy' , optimizer = RMSprop(lr = 0.001) , metrics = ['accuracy'])
model.summary()


# Data genrator

from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale = 1/255)


train_generator = train_datagen.flow_from_directory(
        '/tmp/h-or-s' , 
        target_size = (150,150),
        batch_size = 8,
        class_mode = 'binary' )

history = model.fit(
      train_generator , steps_per_epoch = 8 , epochs = 15 , callbacks = [callbacks], verbose = 1)


请查看并找到错误,我没有得到正确的东西 谢谢:)

【问题讨论】:

  • 你能添加一个可重现的代码吗?因为这对我有用。
  • 你能把这个添加到你的问题中吗?
  • DESIRED_ACCURACY的值是多少?
  • 检查上面的代码 btw DESIRED ACCURACY = 0.999 即包含模型停止值的变量

标签: python class tensorflow image-processing callback


【解决方案1】:

您拼错了变量。

class myCallback(tf.keras.callbacks.Callback):
  def on_epoch_end(self , epochs , logs={}):
    if(logs.get('accuracy')>DESIRED_ACCURACY):
      print('\nend')
      self.model.stop_traning = True  # Check Spelling
callbacks = myCallback()

【讨论】:

  • 你的意思是培训 - 培训
  • 是的,这是函数中唯一的问题。
  • @Aniket Bote 当然,谢谢,我明白了
猜你喜欢
  • 2020-02-25
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2016-08-11
  • 1970-01-01
相关资源
最近更新 更多