import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense, Activation
# X has shape (num_rows, num_cols), where the training data are stored
# as row vectors
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=np.float32)
# y must have an output vector for each input vector
y = np.array([[0], [0], [0], [1]], dtype=np.float32)
# Create the Sequential model
model = Sequential()
# 1st Layer - Add an input layer of 32 nodes with the same input shape as
# the training samples in X
model.add(Dense(32, input_dim=X.shape[1]))
# Add a softmax activation layer
model.add(Activation('softmax'))
# 2nd Layer - Add a fully connected output layer
model.add(Dense(1))
# Add a sigmoid activation layer
model.add(Activation('sigmoid'))
I am new to Keras and am trying to understand it.
model.add(Dense(32, input_dim=X.shape[1]))
The 32
means for each training instance, there are 32 input variable, whose dimension is given by input_dim
. But in the input X vector,
array([[0., 0.],
[0., 1.],
[1., 0.],
[1., 1.]], dtype=float32)
There are 4 training instances. It looks like for each example, there are only two input variables. So how does this correspond to the '32' in the Dense layer definition? How does this network look like?