Closed warrenbocphet closed 5 years ago
On the book:
acc = history.history['acc'] val_acc = history.history['val_acc']
But if I typed so, it would result in an error where keys of history are incorrect. But when I did history.history.keys(), it showed "accuracy" and "val_accuracy" instead. Is this a mistake on my part?
Here's the full code:
from keras.datasets import reuters from tensorflow.keras import models from tensorflow.keras import layers import numpy as np import matplotlib.pyplot as plt def vectorize_sequences(sequences, dimension = 10000): results = np.zeros((len(sequences),dimension)) for i, sequence in enumerate(sequences): results[i, sequence] = 1 return results def to_one_hot(labels, dimension=46): results = np.zeros((len(labels), dimension)) for i, label in enumerate(labels): results[i, label] = 1 return results (train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000) x_train = vectorize_sequences(train_data) x_test = vectorize_sequences(test_data) one_hot_train_label = to_one_hot(train_labels) one_hot_test_label = to_one_hot(test_labels) # one_hot_train_label = to_categorical(train_labels) # one_hot_test_label = to_categorical(test_labels) model = models.Sequential() model.add(layers.Dense(64, activation='relu', input_shape=(10000,))) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(46, activation='softmax')) model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) x_val = x_train[:1000] partial_x_train = x_train[1000:] y_val = one_hot_train_label[:1000] partial_y_train = one_hot_train_label[1000:] history = model.fit(partial_x_train, partial_y_train, epochs=20, batch_size=512, validation_data=(x_val, y_val)) print("History key: ", history.history.keys()) loss = history.history['loss'] val_loss = history.history['val_loss'] epochs = range(1, len(loss) + 1) plt.plot(epochs, loss, 'bo', label='Training loss') plt.plot(epochs, val_loss, 'b', label='Validation loss') plt.title('Training and validation loss') plt.xlabel('Epochs') plt.ylabel('Loss') plt.legend() plt.show() plt.clf() # clear figure acc = history.history['accuracy'] val_acc = history.history['val_accuracy'] plt.plot(epochs, acc, 'bo', label='Training acc') plt.plot(epochs, val_acc, 'b', label='Validation acc') plt.title('Training and validation accuracy') plt.xlabel('Epochs') plt.ylabel('Loss') plt.legend() plt.show()
Nevermind, I figured it out. It turns out if I set metrics=['accuracy'] then history attribution will use 'accuracy' instead of 'acc'.
On the book:
But if I typed so, it would result in an error where keys of history are incorrect. But when I did history.history.keys(), it showed "accuracy" and "val_accuracy" instead. Is this a mistake on my part?
Here's the full code: