title: Python: Neural Network - TypeError: 'History' object is not subscriptable
body: <p>I have been practicing building and comparing neural networks using Keras and Tensorflow in python, but when I look to plot the models for comparisons I am receiving an error:</p>
  
  <pre><code>TypeError: 'History' object is not subscriptable
  </code></pre>
  
  <p>Here is my code for the three models:</p>
  
  <pre><code>############################## Initiate model 1 ###############################
  # Model 1 has no hidden layers
  from keras.models import Sequential
  model1 = Sequential()
  
  # Get layers
  from keras.layers import Dense
  # Add first layer
  n_cols = len(X.columns)
  model1.add(Dense(units=n_cols, activation='relu', input_shape=(n_cols,)))
  # Add output layer
  model1.add(Dense(units=2, activation='softmax'))
  
  # Compile the model
  model1.compile(loss='categorical_crossentropy', optimizer='adam', metrics= 
  ['accuracy']) 
  
  # Define early_stopping_monitor
  from keras.callbacks import EarlyStopping
  early_stopping_monitor = EarlyStopping(patience=2)
  
  # Fit model
  model1.fit(X, y, validation_split=0.33, epochs=30, callbacks= 
  [early_stopping_monitor], verbose=False)
  
  
  ############################## Initiate model 2 ###############################
  # Model 2 has 1 hidden layer that has the mean number of nodes of input and output layer
  model2 = Sequential()
  
  # Add first layer
  model2.add(Dense(units=n_cols, activation='relu', input_shape=(n_cols,)))
  # Add hidden layer
  import math
  model2.add(Dense(units=math.ceil((n_cols+2)/2), activation='relu'))
  # Add output layer
  model2.add(Dense(units=2, activation='softmax'))
  
  # Compile the model
  model2.compile(loss='categorical_crossentropy', optimizer='adam', metrics= 
  ['accuracy']) 
  
  # Fit model
  model2.fit(X, y, validation_split=0.33, epochs=30, callbacks= 
  [early_stopping_monitor], verbose=False)
  
  ############################## Initiate model 3 ###############################
  # Model 3 has 1 hidden layer that is 2/3 the size of the input layer plus the size of the output layer
  model3 = Sequential()
  
  # Add first layer
  model3.add(Dense(units=n_cols, activation='relu', input_shape=(n_cols,)))
  # Add hidden layer
  model3.add(Dense(units=math.ceil((n_cols*(2/3))+2), activation='relu'))
  # Add output layer
  model3.add(Dense(units=2, activation='softmax'))
  
  # Compile the model
  model3.compile(loss='categorical_crossentropy', optimizer='adam', metrics= 
  ['accuracy']) 
  
  # Fit model
  model3.fit(X, y, validation_split=0.33, epochs=30, callbacks= 
  [early_stopping_monitor], verbose=False)
  
  
  # Plot the models
  plt.plot(model1.history['val_loss'], 'r', model2.history['val_loss'], 'b', 
  model3.history['val_loss'], 'g')
  plt.xlabel('Epochs')
  plt.ylabel('Validation score')
  plt.show()
  </code></pre>
  
  <p>I have no problems with running any of my models, getting predicted probabilities, plotting ROC curves, or plotting PR curves. However, when I attempt to plot the three curves together I am getting an error from this area of my code:</p>
  
  <pre><code>model1.history['val_loss']
  
  TypeError: 'History' object is not subscriptable
  </code></pre>
  
  <p>Does anyone have experience with this type of error and can lead me to what I am doing wrong?</p>
  
  <p>Thank you in advance.</p>