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

The below code works perfectly okay. If I try to change all the 64s to 128s then I get an error about shape. Do I need to change the input data shape if I change the number of layers in an artificial neural network when using Keras? I didn't think so because it asks for input_dim which is correct.

Works:

model = Sequential()

model.add(Dense(64, input_dim=14, init='uniform'))

model.add(Activation('tanh'))

model.add(Dropout(0.5))

model.add(Dense(64, init='uniform'))

model.add(Activation('tanh'))

model.add(Dropout(0.5))

model.add(Dense(64, init='uniform'))

model.add(Activation('softmax'))

sgd3 = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)

model.compile(loss='binary_crossentropy', optimizer=sgd3)

model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2)

Doesn't Work:

model = Sequential()

model.add(Dense(128, input_dim=14, init='uniform'))

model.add(Activation('tanh'))

model.add(Dropout(0.5))

model.add(Dense(128, init='uniform'))

model.add(Activation('tanh'))

model.add(Dropout(0.5))

model.add(Dense(128, init='uniform'))

model.add(Activation('softmax'))

sgd3 = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)

model.compile(loss='binary_crossentropy', optimizer=sgd3)

model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2)

1 Answer

0 votes
by (38.2k points)

A different number of units or neurons and different number of hidden layers for each of them on the same input can be used here..

Each Dense except the last one can be seen as a hidden layer.

 The last Dense should have a number of outputs equal to the desired output dimension and in this case the dimension of y  is  64.

 

model = Sequential()

model.add(Dense(128, input_dim=14, init='uniform'))

model.add(Activation('tanh'))

model.add(Dropout(0.5))

model.add(Dense(128, init='uniform'))

model.add(Activation('tanh'))

model.add(Dropout(0.5))

model.add(Dense(64, init='uniform'))

model.add(Activation('softmax'))

 

sgd3 = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)

model.compile(loss='binary_crossentropy', optimizer=sgd3)

model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2)

If you wish to learn more about how to use python for data science, then go through data science python programming course by Intellipaat for more insights.

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


Categories

...