0 votes
1 view
in Data Science by (17.6k points)

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


Y = data['Genre']

del data['Genre']

X = data

encoder = LabelEncoder()


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


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


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...

1 Answer

0 votes
by (38.2k points)

In Keras 2.0 the nb_epoch parameter is  renamed to epochs so when we set epochs=300 ,it will  run 300 epochs. But when we  use nb_epoch=300, it defaults to 10.

If you want to learn data science in-depth then enroll for best data science training.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !