Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is keras only doing 10 epochs when I set it to 300?

I'm using a combination of sklearn and Keras running with Theano as its back-end. I'm using the following code-

import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import keras
from keras.callbacks import EarlyStopping, ModelCheckpoint
from keras.constraints import maxnorm
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import SGD
from keras.wrappers.scikit_learn import KerasClassifier
from keras.constraints import maxnorm
from keras.utils.np_utils import to_categorical
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.model_selection import train_test_split
from datetime import datetime
import time
from datetime import timedelta
from __future__ import division

seed = 7
np.random.seed(seed)

Y = data['Genre']
del data['Genre']
X = data

encoder = LabelEncoder()
encoder.fit(Y)
encoded_Y = encoder.transform(Y)

X = X.as_matrix().astype("float")

calls=[EarlyStopping(monitor='acc', patience=10), ModelCheckpoint('C:/Users/1383921/Documents/NNs/model', monitor='acc', save_best_only=True, mode='auto', period=1)]

def create_baseline(): 
    # create model
    model = Sequential()
    model.add(Dense(18, input_dim=9, init='normal', activation='relu'))
    model.add(Dense(9, init='normal', activation='relu'))
    model.add(Dense(12, init='normal', activation='softmax'))
    # Compile model
    sgd = SGD(lr=0.01, momentum=0.8, decay=0.0, nesterov=False)
    model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
    return model

np.random.seed(seed)
estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('mlp', KerasClassifier(build_fn=create_baseline, nb_epoch=300, batch_size=16, verbose=2)))
pipeline = Pipeline(estimators)
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
results = cross_val_score(pipeline, X, encoded_Y, cv=kfold, fit_params={'mlp__callbacks':calls})
print("Baseline: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))

The result when I start running this last part is-

Epoch 1/10
...
Epoch 2/10

etc.

It's supposed to be Epoch 1/300 and it works just fine when I run it on a different notebook.

What do you guys think is happening? np_epoch=300...

like image 613
Ravaal Avatar asked Apr 03 '17 19:04

Ravaal


People also ask

How many epochs does it take to train convolutional neural network?

Therefore, the optimal number of epochs to train most dataset is 11.

How do I choose my epochs number?

The right number of epochs depends on the inherent perplexity (or complexity) of your dataset. A good rule of thumb is to start with a value that is 3 times the number of columns in your data. If you find that the model is still improving after all epochs complete, try again with a higher value.

What is an epoch in Keras?

Since deep learning often separates training data into smaller batches when training, it is important to know when all the training examples have been processed a single time. This is called an epoch.

What is verbose in Keras?

verbose is the choice that how you want to see the output of your Nural Network while it's training. If you set verbose = 0, It will show nothing.


1 Answers

What Keras version is this? If its greater than 2.0, then nb_epoch was changed to just epochs. Else it defaults to 10.

like image 158
Dr. Snoopy Avatar answered Nov 15 '22 10:11

Dr. Snoopy