Reputation:
I get the following error when I try to run my skin cancer detection model. I have a set of images stored under train folder which I have used to train my model.
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout,Activation,Flatten,Conv2D,MaxPooling2D
from tensorflow.keras.constraints import max_norm
from tensorflow.keras.callbacks import ReduceLROnPlateau
from tensorflow.keras.layers import LeakyReLU
from tensorflow.keras.optimizers import Adam
opt=Adam(learning_rate=0.0005)
epochs = 40
batch_size = 128
X=np.asarray(X)
y=np.asarray(y)
cvscores = []
for train, test in kfold.split(X, y):
print(train)
model = Sequential()
model.add(Conv2D(256, (3, 3), input_shape=(100,100,1)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(tf.keras.layers.Dropout(0.1))
model.add(Conv2D(256, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(tf.keras.layers.Dropout(0.1))
model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(128,kernel_initializer='normal'))
model.add(Activation('relu'))
model.add(tf.keras.layers.Dropout(0.1))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer=opt,
metrics=['accuracy'])
model.fit(X, y, validation_split=0.3,epochs= epochs, batch_size= batch_size, verbose=0)
scores = model.evaluate(X[test], y[test], verbose=0)
print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
cvscores.append(scores[1] * 100)
tf.keras.backend.clear_session()
del model
print("%.2f%% (+/- %.2f%%)" % (np.mean(cvscores), np.std(cvscores)))
Upvotes: 0
Views: 69
Reputation: 319
The image you have in your datasets have 3 channels (size 100x100x3) but your model takes as input 100x100x1 images. Modify the input shape to 100,100,3 in order to avoid the error:
model.add(Conv2D(256, (3, 3), input_shape=(100,100,3)))
instead of:
model.add(Conv2D(256, (3, 3), input_shape=(100,100,1)))
Upvotes: 0