Skip to content

Instantly share code, notes, and snippets.

@michelkana
Created May 31, 2021 07:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michelkana/58147829b35d3d4254da5c97d336f6e3 to your computer and use it in GitHub Desktop.
Save michelkana/58147829b35d3d4254da5c97d336f6e3 to your computer and use it in GitHub Desktop.
from keras.datasets import cifar10
from keras.utils import np_utils
from keras.models import Sequential, Model
from keras.layers import Dense, Dropout, Flatten
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras import regularizers
from keras.layers import BatchNormalization
from keras.optimizers import RMSprop
from keras.preprocessing.image import ImageDataGenerator
# load and prepate cifar images
(xtrain, ytrain), (xtest, ytest) = cifar10.load_data()
x_train = xtrain.astype('float32')
x_test = xtest.astype('float32')
x_train /= 255
x_test /= 255
nb_classes = 10
y_train = np_utils.to_categorical(ytrain, nb_classes)
y_test = np_utils.to_categorical(ytest, nb_classes)
# augment images with a generator
cifar_gen = ImageDataGenerator(
rotation_range=15,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True,
)
cifar_gen.fit(x_train)
# create convolutional neural network (CNN)
def create_cnn(input_shape=x_train.shape[1:], nb_classes=nb_classes,
nb_blocks=3, nb_filters=32, filter_size=(3,3),
pool_size=(2,2), weight_decay=1e-4, padding='same',
dropout=.2, output_activation='softmax'):
model = Sequential()
for i in range(nb_blocks):
if i==0:
model.add(Conv2D(nb_filters, filter_size, activation='relu',
padding=padding, kernel_regularizer=regularizers.l2(weight_decay),
input_shape=input_shape))
else:
model.add(Conv2D(nb_filters, filter_size, activation='relu',
padding=padding, kernel_regularizer=regularizers.l2(weight_decay)))
model.add(BatchNormalization())
model.add(Conv2D(nb_filters, filter_size, activation='relu',
padding=padding, kernel_regularizer=regularizers.l2(weight_decay)))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=pool_size))
model.add(Dropout(dropout))
model.add(Flatten())
model.add(Dense(nb_classes, activation=output_activation))
return model
cnn = create_cnn(nb_filters=32)
# compile CNN
opt_rms = RMSprop(lr=0.001, decay=1e-6)
cnn.compile(loss='categorical_crossentropy', optimizer=opt_rms, metrics=['accuracy'])
# train CNN
batch_size = 64
epochs = 100
steps = x_train.shape[0]
cnn_history = cnn.fit_generator(cifar_gen.flow(x_train, y_train, batch_size=batch_size),
steps_per_epoch=steps,
epochs=epochs,
verbose=1,
validation_data=(x_test,y_test))
@summerfang
Copy link

When I try to run the code, it shows the below error:

ImportError: cannot import name 'RMSprop' from 'keras.optimizers' (/Users/jianbfan/opt/anaconda3/lib/python3.8/site-packages/keras/optimizers.py)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment