I'm trying to set up a simple CNN fine tuning the ResNet50 model as follows:
import numpy as np
import cv2
from keras.models import Sequential, Model
from keras.layers import Dense, Activation, Conv2D, Flatten, GlobalAveragePooling2D, Dropout
from keras import optimizers
import os
from keras import applications
from keras.optimizers import SGD, Adam
from tensorflow.keras.applications.resnet50 import ResNet50
from keras.preprocessing.image import ImageDataGenerator
TRAIN_DIR = 'train/'
BATCH_SIZE = 32
NUM_EPOCHS = 5
width = 224
height = 224
base_model = ResNet50(weights='imagenet', include_top=True, input_shape=(224,224,3))
base_model.summary()
head_model = base_model.output
head_model = Dropout(0.5)(head_model)
head_model = Reshape(2049000, )(head_model)
head_model = Dense(1, activation="sigmoid")(head_model)
model = Model(inputs=base_model.input, outputs=head_model)
for layer in base_model.layers:
layer.trainable = False
adam = Adam(lr=0.0001)
model.compile(optimizer= adam, loss='binary_crossentropy', metrics=['accuracy'])
#model.fit(train, labels, batch_size = 32, epochs=10)
train_datagen = ImageDataGenerator()
train_generator = train_datagen.flow_from_directory(TRAIN_DIR,
target_size=(224, 224),
batch_size=50,
class_mode='binary')
model.fit_generator(train_generator, steps_per_epoch=100)
model.save("asd.h5")
When I run it, throws this error:
File "C:\Users\Junior\Anaconda\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "D:/octProject/train.py", line 46, in <module>
head_model = Flatten()(head_model)
File "C:\Users\Junior\Anaconda\lib\site-packages\keras\engine\base_layer.py", line 443, in __call__
previous_mask = _collect_previous_mask(inputs)
File "C:\Users\Junior\Anaconda\lib\site-packages\keras\engine\base_layer.py", line 1311, in _collect_previous_mask
mask = node.output_masks[tensor_index]
AttributeError: 'Node' object has no attribute 'output_masks'
- In the train folder I have 2 subfolders: Normal and Other each with 11000 images. What can I do to handle this?