Learn practical skills, build real-world projects, and advance your career
Created 4 years ago
import numpy as np
import tensorflow as tf
import os
import zipfile
from os import path, getcwd, chdir
path = f"{getcwd()}/utf-8''happy-or-sad.zip"
zip_ref = zipfile.ZipFile(path,'r')
zip_ref.extractall("h-or-s")
zip_ref.close()
def train_happy_sad_model():
desired_acc = 0.999
class myCallback(tf.keras.callbacks.Callback):
def on_epoch_end(self,epoch,logs ={}):
if logs.get('acc') > desired_acc:
print("Reached a 99.9% accuracy, Stopping now!")
self.model.stop_training = True
callbacks = myCallback()
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(16,(3,3),activation = 'relu',input_shape=(150,150,3)),
tf.keras.layers.MaxPooling2D(2,2),
tf.keras.layers.Conv2D(32,(3,3),activation = 'relu'),
tf.keras.layers.MaxPooling2D(2,2),
tf.keras.layers.Conv2D(64,(3,3),activation = 'relu'),
tf.keras.layers.MaxPooling2D(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 = ['acc'])
#########################
from tensorflow.keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale= 1/255)
train_generator = train_datagen.flow_from_directory(
'h-or-s',
target_size = (150,150),
batch_size = 10,
class_mode = 'binary')
history = model.fit_generator(
train_generator,
steps_per_epoch = 8,
epochs = 15,
verbose = 1,
callbacks = [callbacks])
return history.history["acc"][-1]
train_happy_sad_model()
Found 80 images belonging to 2 classes.
WARNING:tensorflow:sample_weight modes were coerced from
...
to
['...']
Train for 8 steps
Epoch 1/15
8/8 [==============================] - 11s 1s/step - loss: 1.3807 - acc: 0.6000
Epoch 2/15
8/8 [==============================] - 0s 25ms/step - loss: 0.4768 - acc: 0.8375
Epoch 3/15
8/8 [==============================] - 0s 25ms/step - loss: 0.1797 - acc: 0.9375
Epoch 4/15
8/8 [==============================] - 0s 25ms/step - loss: 0.0903 - acc: 0.9625
Epoch 5/15
8/8 [==============================] - 0s 25ms/step - loss: 0.0396 - acc: 0.9875
Epoch 6/15
7/8 [=========================>....] - ETA: 0s - loss: 0.0212 - acc: 1.0000Reached a 99.9% accuracy, Stopping now!
8/8 [==============================] - 0s 26ms/step - loss: 0.0194 - acc: 1.0000
1.0