NT1_keras下搭建一个3层模型并且修改。

时间:2021-02-08 06:44:31
In [1]:
import keraskeras.__version__
C:\ProgramData\Anaconda3\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.  from ._conv import register_converters as _register_convertersUsing TensorFlow backend.
Out[1]:
'2.1.5'

Classifying movie reviews: a binary classification example

This notebook contains the code samples found in Chapter 3, Section 5 of Deep Learning with Python. Note that the original text features far more content, in particular further explanations and figures: in this notebook, you will only find source code and related comments.


Two-class classification, or binary classification, may be the most widely applied kind of machine learning problem. In this example, we will learn to classify movie reviews into "positive" reviews and "negative" reviews, just based on the text content of the reviews.

The IMDB dataset

We'll be working with "IMDB dataset", a set of 50,000 highly-polarized reviews from the Internet Movie Database. They are split into 25,000 reviews for training and 25,000 reviews for testing, each set consisting in 50% negative and 50% positive reviews.

Why do we have these two separate training and test sets? You should never test a machine learning model on the same data that you used to train it! Just because a model performs well on its training data doesn't mean that it will perform well on data it has never seen, and what you actually care about is your model's performance on new data (since you already know the labels of your training data -- obviously you don't need your model to predict those). For instance, it is possible that your model could end up merely memorizing a mapping between your training samples and their targets -- which would be completely useless for the task of predicting targets for data never seen before. We will go over this point in much more detail in the next chapter.

Just like the MNIST dataset, the IMDB dataset comes packaged with Keras. It has already been preprocessed: the reviews (sequences of words) have been turned into sequences of integers, where each integer stands for a specific word in a dictionary.

The following code will load the dataset (when you run it for the first time, about 80MB of data will be downloaded to your machine):

In [2]:
from keras.datasets import imdb(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)
A local file was found, but it seems to be incomplete or outdated because the auto file hash does not match the original value of 599dadb1135973df5b59232a0e9a887c so we will re-download the data.Downloading data from https://s3.amazonaws.com/text-datasets/imdb.npz17465344/17464789 [==============================] - 12s 1us/step

The argument num_words=10000 means that we will only keep the top 10,000 most frequently occurring words in the training data. Rare words will be discarded. This allows us to work with vector data of manageable size.

The variables train_data and test_data are lists of reviews, each review being a list of word indices (encoding a sequence of words). train_labels and test_labels are lists of 0s and 1s, where 0 stands for "negative" and 1 stands for "positive":

In [3]:
train_data[0]
Out[3]:
[1, 14, 22, 16, 43, 530, 973, 1622, 1385, 65, 458, 4468, 66, 3941, 4, 173, 36, 256, 5, 25, 100, 43, 838, 112, 50, 670, 2, 9, 35, 480, 284, 5, 150, 4, 172, 112, 167, 2, 336, 385, 39, 4, 172, 4536, 1111, 17, 546, 38, 13, 447, 4, 192, 50, 16, 6, 147, 2025, 19, 14, 22, 4, 1920, 4613, 469, 4, 22, 71, 87, 12, 16, 43, 530, 38, 76, 15, 13, 1247, 4, 22, 17, 515, 17, 12, 16, 626, 18, 2, 5, 62, 386, 12, 8, 316, 8, 106, 5, 4, 2223, 5244, 16, 480, 66, 3785, 33, 4, 130, 12, 16, 38, 619, 5, 25, 124, 51, 36, 135, 48, 25, 1415, 33, 6, 22, 12, 215, 28, 77, 52, 5, 14, 407, 16, 82, 2, 8, 4, 107, 117, 5952, 15, 256, 4, 2, 7, 3766, 5, 723, 36, 71, 43, 530, 476, 26, 400, 317, 46, 7, 4, 2, 1029, 13, 104, 88, 4, 381, 15, 297, 98, 32, 2071, 56, 26, 141, 6, 194, 7486, 18, 4, 226, 22, 21, 134, 476, 26, 480, 5, 144, 30, 5535, 18, 51, 36, 28, 224, 92, 25, 104, 4, 226, 65, 16, 38, 1334, 88, 12, 16, 283, 5, 16, 4472, 113, 103, 32, 15, 16, 5345, 19, 178, 32]
In [4]:
train_labels[0]
Out[4]:
1

Since we restricted ourselves to the top 10,000 most frequent words, no word index will exceed 10,000:

In [5]:
max([max(sequence) for sequence in train_data])
Out[5]:
9999

For kicks, here's how you can quickly decode one of these reviews back to English words:

In [6]:
# word_index is a dictionary mapping words to an integer indexword_index = imdb.get_word_index()# We reverse it, mapping integer indices to wordsreverse_word_index = dict([(value, key) for (key, value) in word_index.items()])# We decode the review; note that our indices were offset by 3# because 0, 1 and 2 are reserved indices for "padding", "start of sequence", and "unknown".decoded_review = ' '.join([reverse_word_index.get(i - 3, '?') for i in train_data[0]])
Downloading data from https://s3.amazonaws.com/text-datasets/imdb_word_index.json1646592/1641221 [==============================] - 6s 3us/step
In [7]:
decoded_review
Out[7]:
"? this film was just brilliant casting location scenery story direction everyone's really suited the part they played and you could just imagine being there robert ? is an amazing actor and now the same being director ? father came from the same scottish island as myself so i loved the fact there was a real connection with this film the witty remarks throughout the film were great it was just brilliant so much that i bought the film as soon as it was released for ? and would recommend it to everyone to watch and the fly fishing was amazing really cried at the end it was so sad and you know what they say if you cry at a film it must have been good and this definitely was also ? to the two little boy's that played the ? of norman and paul they were just brilliant children are often left out of the ? list i think because the stars that play them all grown up are such a big profile for the whole film but these children are amazing and should be praised for what they have done don't you think the whole story was so lovely because it was true and was someone's life after all that was shared with us all"

Preparing the data

We cannot feed lists of integers into a neural network. We have to turn our lists into tensors. There are two ways we could do that:

  • We could pad our lists so that they all have the same length, and turn them into an integer tensor of shape (samples, word_indices), then use as first layer in our network a layer capable of handling such integer tensors (the Embedding layer, which we will cover in detail later in the book).
  • We could one-hot-encode our lists to turn them into vectors of 0s and 1s. Concretely, this would mean for instance turning the sequence [3, 5] into a 10,000-dimensional vector that would be all-zeros except for indices 3 and 5, which would be ones. Then we could use as first layer in our network a Dense layer, capable of handling floating point vector data.

We will go with the latter solution. Let's vectorize our data, which we will do manually for maximum clarity:

In [8]:
import numpy as npdef vectorize_sequences(sequences, dimension=10000):    # Create an all-zero matrix of shape (len(sequences), dimension)    results = np.zeros((len(sequences), dimension))    for i, sequence in enumerate(sequences):        results[i, sequence] = 1.  # set specific indices of results[i] to 1s    return results# Our vectorized training datax_train = vectorize_sequences(train_data)# Our vectorized test datax_test = vectorize_sequences(test_data)

Here's what our samples look like now:

In [9]:
x_train[0]
Out[9]:
array([0., 1., 1., ..., 0., 0., 0.])

We should also vectorize our labels, which is straightforward:

In [10]:
# Our vectorized labelsy_train = np.asarray(train_labels).astype('float32')y_test = np.asarray(test_labels).astype('float32')

Now our data is ready to be fed into a neural network.

Building our network

Our input data is simply vectors, and our labels are scalars (1s and 0s): this is the easiest setup you will ever encounter. A type of network that performs well on such a problem would be a simple stack of fully-connected (Dense) layers with relu activations: Dense(16, activation='relu')

The argument being passed to each Dense layer (16) is the number of "hidden units" of the layer. What's a hidden unit? It's a dimension in the representation space of the layer. You may remember from the previous chapter that each such Dense layer with a relu activation implements the following chain of tensor operations:

output = relu(dot(W, input) + b)

Having 16 hidden units means that the weight matrix W will have shape (input_dimension, 16), i.e. the dot product with W will project the input data onto a 16-dimensional representation space (and then we would add the bias vector b and apply the relu operation). You can intuitively understand the dimensionality of your representation space as "how much freedom you are allowing the network to have when learning internal representations". Having more hidden units (a higher-dimensional representation space) allows your network to learn more complex representations, but it makes your network more computationally expensive and may lead to learning unwanted patterns (patterns that will improve performance on the training data but not on the test data).

There are two key architecture decisions to be made about such stack of dense layers:

  • How many layers to use.
  • How many "hidden units" to chose for each layer.

In the next chapter, you will learn formal principles to guide you in making these choices. For the time being, you will have to trust us with the following architecture choice: two intermediate layers with 16 hidden units each, and a third layer which will output the scalar prediction regarding the sentiment of the current review. The intermediate layers will use relu as their "activation function", and the final layer will use a sigmoid activation so as to output a probability (a score between 0 and 1, indicating how likely the sample is to have the target "1", i.e. how likely the review is to be positive). A relu (rectified linear unit) is a function meant to zero-out negative values, while a sigmoid "squashes" arbitrary values into the [0, 1] interval, thus outputting something that can be interpreted as a probability.

Here's what our network looks like:

NT1_keras下搭建一个3层模型并且修改。

And here's the Keras implementation, very similar to the MNIST example you saw previously:

In [11]:
from keras import modelsfrom keras import layersmodel = models.Sequential()model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))model.add(layers.Dense(16, activation='relu'))model.add(layers.Dense(1, activation='sigmoid'))

Lastly, we need to pick a loss function and an optimizer. Since we are facing a binary classification problem and the output of our network is a probability (we end our network with a single-unit layer with a sigmoid activation), is it best to use the binary_crossentropy loss. It isn't the only viable choice: you could use, for instance, mean_squared_error. But crossentropy is usually the best choice when you are dealing with models that output probabilities. Crossentropy is a quantity from the field of Information Theory, that measures the "distance" between probability distributions, or in our case, between the ground-truth distribution and our predictions.

Here's the step where we configure our model with the rmsprop optimizer and the binary_crossentropy loss function. Note that we will also monitor accuracy during training.

In [12]:
model.compile(optimizer='rmsprop',              loss='binary_crossentropy',              metrics=['accuracy'])

We are passing our optimizer, loss function and metrics as strings, which is possible because rmsprop, binary_crossentropy and accuracy are packaged as part of Keras. Sometimes you may want to configure the parameters of your optimizer, or pass a custom loss function or metric function. This former can be done by passing an optimizer class instance as the optimizer argument:

In [13]:
from keras import optimizersmodel.compile(optimizer=optimizers.RMSprop(lr=0.001),              loss='binary_crossentropy',              metrics=['accuracy'])

The latter can be done by passing function objects as the loss or metrics arguments:

In [14]:
from keras import lossesfrom keras import metricsmodel.compile(optimizer=optimizers.RMSprop(lr=0.001),              loss=losses.binary_crossentropy,              metrics=[metrics.binary_accuracy])

Validating our approach

In order to monitor during training the accuracy of the model on data that it has never seen before, we will create a "validation set" by setting apart 10,000 samples from the original training data:

In [15]:
x_val = x_train[:10000]partial_x_train = x_train[10000:]y_val = y_train[:10000]partial_y_train = y_train[10000:]

We will now train our model for 20 epochs (20 iterations over all samples in the x_train and y_train tensors), in mini-batches of 512 samples. At this same time we will monitor loss and accuracy on the 10,000 samples that we set apart. This is done by passing the validation data as the validation_data argument:

In [16]:
history = model.fit(partial_x_train,                    partial_y_train,                    epochs=20,                    batch_size=512,                    validation_data=(x_val, y_val))
Train on 15000 samples, validate on 10000 samplesEpoch 1/2015000/15000 [==============================] - 2s 153us/step - loss: 0.5084 - binary_accuracy: 0.7813 - val_loss: 0.3797 - val_binary_accuracy: 0.8684Epoch 2/2015000/15000 [==============================] - 2s 150us/step - loss: 0.3004 - binary_accuracy: 0.9047 - val_loss: 0.3004 - val_binary_accuracy: 0.8897Epoch 3/2015000/15000 [==============================] - 2s 156us/step - loss: 0.2179 - binary_accuracy: 0.9285 - val_loss: 0.3085 - val_binary_accuracy: 0.8711Epoch 4/2015000/15000 [==============================] - 2s 138us/step - loss: 0.1750 - binary_accuracy: 0.9437 - val_loss: 0.2840 - val_binary_accuracy: 0.8832Epoch 5/2015000/15000 [==============================] - 2s 144us/step - loss: 0.1427 - binary_accuracy: 0.9543 - val_loss: 0.2841 - val_binary_accuracy: 0.8872Epoch 6/2015000/15000 [==============================] - 2s 138us/step - loss: 0.1150 - binary_accuracy: 0.9650 - val_loss: 0.3166 - val_binary_accuracy: 0.8772Epoch 7/2015000/15000 [==============================] - 2s 139us/step - loss: 0.0980 - binary_accuracy: 0.9705 - val_loss: 0.3127 - val_binary_accuracy: 0.8846Epoch 8/2015000/15000 [==============================] - 2s 132us/step - loss: 0.0807 - binary_accuracy: 0.9763 - val_loss: 0.3859 - val_binary_accuracy: 0.8649Epoch 9/2015000/15000 [==============================] - 2s 141us/step - loss: 0.0661 - binary_accuracy: 0.9821 - val_loss: 0.3635 - val_binary_accuracy: 0.8782Epoch 10/2015000/15000 [==============================] - 2s 136us/step - loss: 0.0561 - binary_accuracy: 0.9853 - val_loss: 0.3843 - val_binary_accuracy: 0.8792Epoch 11/2015000/15000 [==============================] - 2s 138us/step - loss: 0.0439 - binary_accuracy: 0.9893 - val_loss: 0.4153 - val_binary_accuracy: 0.8779Epoch 12/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0381 - binary_accuracy: 0.9921 - val_loss: 0.4525 - val_binary_accuracy: 0.8689Epoch 13/2015000/15000 [==============================] - 2s 130us/step - loss: 0.0300 - binary_accuracy: 0.9928 - val_loss: 0.4698 - val_binary_accuracy: 0.8729Epoch 14/2015000/15000 [==============================] - 2s 130us/step - loss: 0.0247 - binary_accuracy: 0.9945 - val_loss: 0.5023 - val_binary_accuracy: 0.8725Epoch 15/2015000/15000 [==============================] - 2s 135us/step - loss: 0.0175 - binary_accuracy: 0.9980 - val_loss: 0.5339 - val_binary_accuracy: 0.8694Epoch 16/2015000/15000 [==============================] - 2s 144us/step - loss: 0.0150 - binary_accuracy: 0.9984 - val_loss: 0.5721 - val_binary_accuracy: 0.8697Epoch 17/2015000/15000 [==============================] - 2s 153us/step - loss: 0.0147 - binary_accuracy: 0.9971 - val_loss: 0.6024 - val_binary_accuracy: 0.8702Epoch 18/2015000/15000 [==============================] - 2s 150us/step - loss: 0.0083 - binary_accuracy: 0.9993 - val_loss: 0.6801 - val_binary_accuracy: 0.8633Epoch 19/2015000/15000 [==============================] - 2s 145us/step - loss: 0.0064 - binary_accuracy: 0.9997 - val_loss: 0.7548 - val_binary_accuracy: 0.8536Epoch 20/2015000/15000 [==============================] - 2s 139us/step - loss: 0.0076 - binary_accuracy: 0.9986 - val_loss: 0.6997 - val_binary_accuracy: 0.8652

On CPU, this will take less than two seconds per epoch -- training is over in 20 seconds. At the end of every epoch, there is a slight pause as the model computes its loss and accuracy on the 10,000 samples of the validation data.

Note that the call to model.fit() returns a History object. This object has a member history, which is a dictionary containing data about everything that happened during training. Let's take a look at it:

In [17]:
history_dict = history.historyhistory_dict.keys()
Out[17]:
dict_keys(['val_loss', 'val_binary_accuracy', 'loss', 'binary_accuracy'])

It contains 4 entries: one per metric that was being monitored, during training and during validation. Let's use Matplotlib to plot the training and validation loss side by side, as well as the training and validation accuracy:

In [22]:
import matplotlib.pyplot as pltacc = history.history['binary_accuracy']val_acc = history.history['val_binary_accuracy']loss = history.history['loss']val_loss = history.history['val_loss']epochs = range(1, len(acc) + 1)# "bo" is for "blue dot"plt.plot(epochs, loss, 'bo', label='Training loss')# b is for "solid blue line"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()
aaarticlea/png;base64,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wbRp0KsXDB0apt9Ot3Qmhb2Az2MeF0bbtmFmbYH2wNRynh9mZgVmVlBUVJTyQJPVu3fvbS5EGzt2LBdddFGFr2vUqBEAS5cu5ZRTTil332WH4JY1duzYrS4iO+6441i5MvmWuOuuu47bbrst6f2I1CQlJaG5aMkSePrp9M2GsMWWq58vuig0JaVbOpNCvMpUeRdFDASecve4cya4+/3unu/u+a1iJxHJEYMGDWLChAlbbZswYQKDBg1K6PV77rknTz311Ha/f9mkMHnyZJo1a7bd+xOR8l15ZZjh9O67Q0dwJtSvHy5yy8Sy5ulMCoXA3jGPWwPlrTs0kGrcdHTKKafw/PPPs2HDBgCWLFnC0qVL6dmzZ+l1A3l5eRx00EE899xz27x+yZIldOrUCYB169YxcOBAOnfuzGmnnca6detKy1144YWl027/8Y9/BODOO+9k6dKlHHHEERxxxBEAtGvXjuXLlwMwZswYOnXqRKdOnUqn3V6yZAkHHngg559/Ph07duSYY47Z6n3imTVrFt27d6dz586cdNJJfPvtt6Xv36FDBzp37lw6Ed9rr71WushQ165d+e6777b72IrkkscfD1NSXHhhmHK/JkrndQozgP3MrD3wBeHEf3rZQma2P9Ac+G8q3vTXv4ZULyjWpQtE59O4WrRoQbdu3XjxxRfp168fEyZM4LTTTsPMaNCgAc888wxNmjRh+fLldO/enb59+5a7TvE999xDw4YNmTNnDnPmzCEvL6/0udGjR7PLLrtQUlLCUUcdxZw5c7jkkksYM2YM06ZNo2XLllvta+bMmTz00ENMnz4dd+cnP/kJvXr1onnz5ixcuJAnnniCv/3tbwwYMICnn366wvURhg4dyl133UWvXr249tpruf766xk7diw33XQTn3zyCfXr1y9tsrrtttsYN24cPXr0YM2aNTRo0KAKR1skN82cCeeeGy4sq+h8UN2lrabg7sXACGAKMB+Y6O5zzWyUmfWNKToImODVbb6NMmKbkGKbjtydK6+8ks6dO3P00UfzxRdf8NVXX5W7n9dff7305Ny5c2c6d+5c+tzEiRPJy8uja9euzJ07t9LJ7t58801OOukkdt55Zxo1akT//v154403AGjfvj1doukbK5qeG8L6DitXrqRXr14AnHnmmbz++uulMQ4ePJjHHnus9MrpHj16cPnll3Pn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">
In [24]:
plt.clf()   # clear figureacc_values = history_dict['binary_accuracy']val_acc_values = history_dict['val_binary_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()
aaarticlea/png;base64,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Yt0MnGdmRcBLwBVVWBczG2FmBWZWUFxcnKq4RSSNhg2DsWOhc2cwC49jx1a/cbsq1q5dS/PmzWnRogXLli3j1VdfTfk++vTpw4QJEwCYM2dOuWcuGzdupF69euTk5LBu3TqeffZZAFq3bk1OTg4TJ04EwsWOGzZsoF+/fjz88MNs3LgRgFWrVqU87njSmSzKS4NlU+5Q4DF37wCcCvzdzOoluC7uPtbd89w9r127dkkHLCKZMWwYLFkC27aFx0wkCoBevXrRtWtXunXrxiWXXMLxxx+f8n1cccUVfPXVV3Tv3p0777yTbt260bJly53KtG3blvPPP59u3bpx5plncvTRR29flp+fz5133kn37t3p06cPxcXFDBw4kP79+5OXl0fPnj3561//mvK447FETpmqtWGzY4Gb3f0n0evfALj7n2LKzAP6u/uX0etPgWOA4bFlzezVaFvTK9pfXl6eFxQUpOW9iEjlFixYwKGHHprtMGqEkpISSkpKaNKkCQsXLqRfv34sXLiQBg2yf6VCeX8nM5vp7nnx1k1n9DOAg8ysC/AVocH652XKfAGcAjxmZocCTYBi4AXgKTMbA+wHHAS8n8ZYRURSYv369ZxyyimUlJTg7jz44IM1IlEkK23vwN1LzGwk8CpQH3jE3eeZ2S1Agbu/AFwLPGRm1xCqmS7wcKozz8wmAPOBEuByd9+arlhFRFKlVatWzJw5M9thpFxa0527v0RouI6d97uY5/OBcisN3X00kKb+ESIiUhW6gltEROJSshARkbiULEREJC4lCxGp9fr27bvLBXZ33XUXv/zlLytdr1mzZgAsXbqUs846q8Jtx+uWf9ddd7EhZnTEU089lW+//TaR0GsNJQsRqfWGDh3K+PHjd5o3fvx4hg4dmtD6++23H//85z+rvf+yyeKll16iVatW1d5eTVT7O/+KSI1y9dVQzojcSenZE6KRwct11llnceONN7Jp0yYaN27MkiVLWLp0KX369GH9+vUMGjSI1atXs2XLFm699VYGDdp5mLolS5YwcOBA5s6dy8aNG7nwwguZP38+hx566PYhNgAuu+wyZsyYwcaNGznrrLP4/e9/z913383SpUs5+eSTycnJYcqUKeTm5lJQUEBOTg5jxozZPmrtxRdfzNVXX82SJUsYMGAAffr0Ydq0abRv355//etf2wcKLDVx4kRuvfVWNm/eTNu2bcnPz2fvvfdm/fr1XHHFFRQUFGBm3HTTTQwZMoRXXnmF66+/nq1bt5KTk8PkyZNT9jdQshCRWq9t27b07t2bV155hUGDBjF+/HjOOecczIwmTZrw3HPP0aJFC1asWMExxxzDGWecUeHAfA888ABNmzalsLCQwsJCevXqtX3Z6NGjadOmDVu3buWUU06hsLCQK6+8kjFjxjBlyhRycnJ22tbMmTN59NFHee+993B3jj76aE466SRat27NwoULefrpp3nooYf42c9+xrPPPst555230/p9+vTh3XffxcwYN24ct99+O3feeSd/+MMfaNmyJXPmzAFg9erVFBcXc8kllzB16lS6dOmS8vGjlCxEJKUqOwNIp9KqqNJkUfpr3t25/vrrmTp1KvXq1eOrr75i+fLl7LPPPuVuZ+rUqVx55ZUAdO/ene7du29fNmHCBMaOHUtJSQnLli1j/vz5Oy0v6+233+bMM8/cPvLt4MGDeeuttzjjjDPo0qULPXv2BCoeBr2oqIhzzjmHZcuWsXnzZrp06QLAa6+9tlO1W+vWrZk4cSInnnji9jKpHsa8zrdZpPpewCKSHT/96U+ZPHkyH3zwARs3btx+RpCfn09xcTEzZ85k1qxZ7L333uUOSx6rvLOOzz77jDvuuIPJkydTWFjIaaedFnc7lY29Vzq8OVQ8DPoVV1zByJEjmTNnDg8++OD2/ZU3ZHm6hzGv08mi9F7An38O7jvuBayEIVL7NGvWjL59+3LRRRft1LC9Zs0a9tprLxo2bMiUKVP4/PPPK93OiSeeSH70JTB37lwKCwuBMLz5nnvuScuWLVm+fDkvv/zy9nWaN2/OunXryt3W888/z4YNG/juu+947rnnOOGEExJ+T2vWrKF9+3B3hscff3z7/H79+nHvvfduf7169WqOPfZY3nzzTT777DMg9cOY1+lkkcl7AYtI+g0dOpTZs2dvv1MdwLBhwygoKCAvL4/8/Hx+8IMfVLqNyy67jPXr19O9e3duv/12evcO913r0aMHRxxxBIcddhgXXXTRTsObjxgxggEDBnDyySfvtK1evXpxwQUX0Lt3b44++mguvvhijjjiiITfz80338zZZ5/NCSecsFN7yI033sjq1avp1q0bPXr0YMqUKbRr146xY8cyePBgevTowTnnnJPwfhKRtiHKM606Q5TX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">

结论是这个最简单的模型,其过拟合非常严重The dots are the training loss and accuracy, while the solid lines are the validation loss and accuracy. Note that your own results may vary slightly due to a different random initialization of your network.

As you can see, the training loss decreases with every epoch and the training accuracy increases with every epoch. That's what you would expect when running gradient descent optimization -- the quantity you are trying to minimize should get lower with every iteration. But that isn't the case for the validation loss and accuracy: they seem to peak at the fourth epoch. This is an example of what we were warning against earlier: a model that performs better on the training data isn't necessarily a model that will do better on data it has never seen before. In precise terms, what you are seeing is "overfitting": after the second epoch, we are over-optimizing on the training data, and we ended up learning representations that are specific to the training data and do not generalize to data outside of the training set.

In this case, to prevent overfitting, we could simply stop training after three epochs. In general, there is a range of techniques you can leverage to mitigate overfitting, which we will cover in the next chapter.

Let's train a new network from scratch for four epochs, then evaluate it on our test data:

In [25]:
model = models.Sequential()model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))model.add(layers.Dense(16, activation='relu'))model.add(layers.Dense(1, activation='sigmoid'))model.compile(optimizer='rmsprop',              loss='binary_crossentropy',              metrics=['accuracy'])model.fit(x_train, y_train, epochs=4, batch_size=512)results = model.evaluate(x_test, y_test)
Epoch 1/425000/25000 [==============================] - 3s 111us/step - loss: 0.4749 - acc: 0.8217Epoch 2/425000/25000 [==============================] - 2s 89us/step - loss: 0.2658 - acc: 0.9097Epoch 3/425000/25000 [==============================] - 2s 96us/step - loss: 0.1982 - acc: 0.9299Epoch 4/425000/25000 [==============================] - 2s 88us/step - loss: 0.1679 - acc: 0.940225000/25000 [==============================] - 2s 94us/step
In [26]:
results
Out[26]:
[0.3244061092185974, 0.87296]

只需要在第4个epoch就已经最好,所以这里又跑了4个epochOur fairly naive approach achieves an accuracy of 88%. With state-of-the-art approaches, one should be able to get close to 95%.

Using a trained network to generate predictions on new data

After having trained a network, you will want to use it in a practical setting. You can generate the likelihood of reviews being positive by using the predict method:

In [27]:
model.predict(x_test)
Out[27]:
array([[0.13954607],       [0.999701  ],       [0.28927267],       ...,       [0.07174454],       [0.04302894],       [0.47943923]], dtype=float32)

As you can see, the network is very confident for some samples (0.99 or more, or 0.01 or less) but less confident for others (0.6, 0.4).

Further experiments(这里就是具体要做东西的地方)

  • We were using 2 hidden layers. Try to use 1 or 3 hidden layers and see how it affects validation and test accuracy.
In [31]:
# Try to use layers with more hidden units or less hidden units: 32 units, 64 units...
In [38]:
model = models.Sequential()model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))model.add(layers.Dense(16, activation='relu'))model.add(layers.Dense(16, activation='relu'))model.add(layers.Dense(1, activation='sigmoid'))model.compile(optimizer='rmsprop',              loss='binary_crossentropy',              metrics=['accuracy'])history = model.fit(partial_x_train,                    partial_y_train,                    epochs=20,                    batch_size=512,                    validation_data=(x_val, y_val))history_dict = history.historyhistory_dict.keys()acc = history.history['acc']val_acc = history.history['val_acc']loss = history.history['loss']val_loss = history.history['val_loss']epochs = range(1, len(acc) + 1)# "bo" is for "blue dot"plt.plot(epochs, loss, 'bo', label='Training loss')# b is for "solid blue line"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()
Train on 15000 samples, validate on 10000 samplesEpoch 1/2015000/15000 [==============================] - 2s 149us/step - loss: 0.5338 - acc: 0.7786 - val_loss: 0.3996 - val_acc: 0.8690Epoch 2/2015000/15000 [==============================] - 2s 125us/step - loss: 0.3112 - acc: 0.9001 - val_loss: 0.2969 - val_acc: 0.8900Epoch 3/2015000/15000 [==============================] - 2s 125us/step - loss: 0.2161 - acc: 0.9265 - val_loss: 0.2719 - val_acc: 0.8937Epoch 4/2015000/15000 [==============================] - 2s 124us/step - loss: 0.1678 - acc: 0.9418 - val_loss: 0.2940 - val_acc: 0.8813Epoch 5/2015000/15000 [==============================] - 2s 125us/step - loss: 0.1376 - acc: 0.9529 - val_loss: 0.2851 - val_acc: 0.8887Epoch 6/2015000/15000 [==============================] - 2s 125us/step - loss: 0.1063 - acc: 0.9667 - val_loss: 0.3280 - val_acc: 0.8786Epoch 7/2015000/15000 [==============================] - 2s 125us/step - loss: 0.0921 - acc: 0.9693 - val_loss: 0.3336 - val_acc: 0.8819Epoch 8/2015000/15000 [==============================] - 2s 124us/step - loss: 0.0703 - acc: 0.9803 - val_loss: 0.3545 - val_acc: 0.8803Epoch 9/2015000/15000 [==============================] - 2s 127us/step - loss: 0.0592 - acc: 0.9831 - val_loss: 0.3850 - val_acc: 0.8765Epoch 10/2015000/15000 [==============================] - 2s 129us/step - loss: 0.0490 - acc: 0.9858 - val_loss: 0.4398 - val_acc: 0.8682Epoch 11/2015000/15000 [==============================] - 2s 133us/step - loss: 0.0415 - acc: 0.9881 - val_loss: 0.4495 - val_acc: 0.8765Epoch 12/2015000/15000 [==============================] - 2s 125us/step - loss: 0.0330 - acc: 0.9909 - val_loss: 0.4765 - val_acc: 0.8730Epoch 13/2015000/15000 [==============================] - 2s 132us/step - loss: 0.0209 - acc: 0.9961 - val_loss: 0.5083 - val_acc: 0.8718Epoch 14/2015000/15000 [==============================] - 2s 126us/step - loss: 0.0222 - acc: 0.9949 - val_loss: 0.5407 - val_acc: 0.8723Epoch 15/2015000/15000 [==============================] - 2s 139us/step - loss: 0.0159 - acc: 0.9965 - val_loss: 0.5733 - val_acc: 0.8712Epoch 16/2015000/15000 [==============================] - 2s 140us/step - loss: 0.0113 - acc: 0.9981 - val_loss: 0.7271 - val_acc: 0.8501Epoch 17/2015000/15000 [==============================] - 2s 127us/step - loss: 0.0065 - acc: 0.9995 - val_loss: 0.6463 - val_acc: 0.8691Epoch 18/2015000/15000 [==============================] - 2s 127us/step - loss: 0.0157 - acc: 0.9951 - val_loss: 0.6848 - val_acc: 0.8676Epoch 19/2015000/15000 [==============================] - 2s 126us/step - loss: 0.0031 - acc: 0.9998 - val_loss: 0.7128 - val_acc: 0.8661Epoch 20/2015000/15000 [==============================] - 2s 125us/step - loss: 0.0109 - acc: 0.9972 - val_loss: 0.7495 - val_acc: 0.8666
aaarticlea/png;base64,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91xdsGCBqqpu375d9+7de9C5w/9mxoTbsEE1KUn1b38r3vO++Ub1sMNUTztNNSen9HHs2KF6ww2qhxyiWr++6qxZqt6/bpkEpGkU19gKNyGeX8KrkMKrjlSVW265heTkZHr27MmPP/7IpkKmevzkk09Ci9ckJyeTnJwcemzmzJmkpKTQqVMnli9fXuRkdwsWLOD888+nevXq1KhRgwsuuID//ve/ADRv3pyOHTsChU/PDW59h61bt9KtWzcALr30Uj755JNQjEOGDGHatGmhkdMnn3wyY8aMYcKECWzdutVGVJtieeEF16YQPjYhGm3buvaFefNcV9XSeO8911j88MMujpUry8YYg1god/+tXg1J3J133nmMGTOGJUuWsGvXrtDiNtOnTycrK4vFixdTuXJlmjVrFnG67HAS4ZO3du1aHnroIRYtWsQRRxzB8OHDizyPFlIjlzftNript4uqPirIf/7zHz755BNmz57NP/7xD5YvX87YsWM555xzmDNnDl26dOGDDz7g+OOPL9H5TcWyb5+rOureHVq1Kv7zhw93jc533w2nnAKnnVa852dlwZgxMG2aaz/4+GPXrbQisZJCjNSoUYPu3btz2WWXHdDAvG3bNo466igqV67M/PnzWbduXaHnOfXUU5nurQ36zTffsGzZMsBNu129enVq1arFpk2beCdsBe+aNWtGrLc/9dRTefPNN9m5cye//fYbb7zxBqecckqxf7datWpxxBFHhEoZL730Et26dWPfvn2sX7+eHj168OCDD7J161Z27NjB999/T/v27bn55ptJTU3l22+/LfZrmorpo49ct87ilhLCPfWUa18YPDj69gVVeOklN+5hxgy47TbXs6iiJQQohyWFIA0aNIgLLrjggJ5IQ4YMoU+fPqSmptKxY8civzGPGjWKESNGkJycTMeOHencuTPgVlHr1KkTbdu2PWja7ZEjR3L22WfToEED5s+fH9qfkpLC8OHDQ+e44oor6NSpU6FVRQV58cUXufrqq9m5cyctWrRg6tSp5ObmMnToULZt24aq8te//pXatWtz++23M3/+fJKSkmjTpk1oFTljijJ5MhxxhKuqKanq1V230c6d3aCyuXMLH028di1cdRW8/z506eJiKMvjDEotmoaHRLoV1dBsygb7m5n8srJUq1RRvfba2JzvuedUQXXcuMiP792r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">
In [39]:
plt.clf()   # clear figureacc_values = history_dict['acc']val_acc_values = history_dict['val_acc']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()
Out[39]:
<matplotlib.legend.Legend at 0x1a948cd1080>
aaarticlea/png;base64,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px04cCDz5s2jsrKSdu3aMWHCBPr27csJJ5zAqlWrALjuuuuYNGnS7vQTJkxgwIABfPGLX+Tll18GYNOmTZx77rn07duXUaNGUVxcvDuQxbr++us59thjd+fP3QF45513OPXUU+nbty/9+/dn2bJlANxyyy0cddRR9O3bl2uzcbKSyGY11ABgibsvdfftwFRgWFwaB9pE822B5dH8MGCqu29z9/eAJdHxRKTAffDB3q1P16JFi7jwwgt544036NKlCz//+c8pLS2lrKyM5557jkWLFn1mn/Xr13PyySdTVlbGCSecwJQpUxIe29157bWce/vSAAAPaElEQVTXuO2223YHnnvuuYfOnTtTVlbGhAkTeOONNxLu+73vfY85c+awYMEC1q9fzzPPPAPAqFGj+P73v09ZWRkvv/wyBxxwAE8++SRPP/00r732GmVlZfzgBz/I0NlJXTaDRRfgw5jl8mhdrBuAb5tZOfAUcPle7IuZjTOzUjMrraioyFS+RSSLunXbu/XpOvTQQzn22GN3Lz/22GP079+f/v3789ZbbyUMFvvttx+DBw8G4Jhjjtn96z7e8OHDP5PmpZde4rzzzgOgb9++HHnkkQn3nTlzJgMGDKBv37688MILvPnmm6xbt47Vq1czZMgQINxI17JlS55//nnGjh3LfvvtB0CHDh32/kSkKZvBIlE/LY9bHgX81t27AmcCvzOzRinui7tPdvdidy/u1KlT2hkWkeybOBFatqy+rmXLsD4b9t9//93zixcv5pe//CX//Oc/mT9/PoMGDUp470GzZs12zzdu3JjKysqEx27evPln0lRVJ9Vm8+bNjB8/nunTpzN//nzGjh27Ox+Juri6e967JmczWJQDB8csd2VPNVOVC4FpAO7+H6AFUJTiviJSgEaPhsmToXt3MAuvkyfXvXF7b2zYsIHWrVvTpk0bVqxYwbPPZr7fzMCBA5k2bRoACxYsSFhy2bJlC40aNaKoqIhPP/2Uxx9/HID27dtTVFTEk08+CYSbHTdv3swZZ5zBb37zG7Zs2QLA2rVrM57vZLIZLOYAh5lZTzNrRmiwnhGX5gPgNAAzO4IQLCqidOeZWXMz6wkcBryWxbyKSA6NHg3LlsGuXeE1F4ECoH///vTq1YvevXtz8cUX8+Uvfznj73H55Zfz0Ucf0adPH+644w569+5N27Ztq6Xp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">

从结果上来看,添加或者减少隐藏层没有带来明显变化

In [40]:
#Try to use the `mse` loss function instead of `binary_crossentropy`.
In [46]:
model = models.Sequential()model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))model.add(layers.Dense(16, activation='relu'))model.add(layers.Dense(16, activation='relu'))model.add(layers.Dense(1, activation='sigmoid'))model.compile(optimizer='rmsprop',              loss='mse',              metrics=['accuracy'])history = model.fit(partial_x_train,                    partial_y_train,                    epochs=20,                    batch_size=512,                    validation_data=(x_val, y_val))history_dict = history.historyhistory_dict.keys()acc = history.history['acc']val_acc = history.history['val_acc']loss = history.history['loss']val_loss = history.history['val_loss']epochs = range(1, len(acc) + 1)# "bo" is for "blue dot"plt.plot(epochs, loss, 'bo', label='Training loss')# b is for "solid blue line"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()
Train on 15000 samples, validate on 10000 samplesEpoch 1/2015000/15000 [==============================] - 2s 151us/step - loss: 0.1932 - acc: 0.7371 - val_loss: 0.1328 - val_acc: 0.8684Epoch 2/2015000/15000 [==============================] - 2s 127us/step - loss: 0.0994 - acc: 0.8982 - val_loss: 0.0967 - val_acc: 0.8816Epoch 3/2015000/15000 [==============================] - 2s 128us/step - loss: 0.0670 - acc: 0.9257 - val_loss: 0.0886 - val_acc: 0.8844Epoch 4/2015000/15000 [==============================] - 2s 128us/step - loss: 0.0493 - acc: 0.9458 - val_loss: 0.0840 - val_acc: 0.8858Epoch 5/2015000/15000 [==============================] - 2s 127us/step - loss: 0.0378 - acc: 0.9596 - val_loss: 0.0855 - val_acc: 0.8844Epoch 6/2015000/15000 [==============================] - 2s 127us/step - loss: 0.0316 - acc: 0.9661 - val_loss: 0.0879 - val_acc: 0.8812Epoch 7/2015000/15000 [==============================] - 2s 128us/step - loss: 0.0263 - acc: 0.9728 - val_loss: 0.0889 - val_acc: 0.8811Epoch 8/2015000/15000 [==============================] - 2s 128us/step - loss: 0.0201 - acc: 0.9811 - val_loss: 0.1158 - val_acc: 0.8522Epoch 9/2015000/15000 [==============================] - 2s 130us/step - loss: 0.0176 - acc: 0.9825 - val_loss: 0.0921 - val_acc: 0.8793Epoch 10/2015000/15000 [==============================] - 2s 129us/step - loss: 0.0133 - acc: 0.9872 - val_loss: 0.0943 - val_acc: 0.8778Epoch 11/2015000/15000 [==============================] - 2s 129us/step - loss: 0.0118 - acc: 0.9885 - val_loss: 0.0965 - val_acc: 0.8767Epoch 12/2015000/15000 [==============================] - 2s 129us/step - loss: 0.0095 - acc: 0.9907 - val_loss: 0.0977 - val_acc: 0.8760Epoch 13/2015000/15000 [==============================] - 2s 128us/step - loss: 0.0090 - acc: 0.9905 - val_loss: 0.1027 - val_acc: 0.8714Epoch 14/2015000/15000 [==============================] - 2s 128us/step - loss: 0.0049 - acc: 0.9960 - val_loss: 0.1011 - val_acc: 0.8717Epoch 15/2015000/15000 [==============================] - 2s 129us/step - loss: 0.0067 - acc: 0.9927 - val_loss: 0.1030 - val_acc: 0.8711Epoch 16/2015000/15000 [==============================] - 2s 129us/step - loss: 0.0034 - acc: 0.9970 - val_loss: 0.1045 - val_acc: 0.8705Epoch 17/2015000/15000 [==============================] - 2s 135us/step - loss: 0.0062 - acc: 0.9933 - val_loss: 0.1064 - val_acc: 0.8696Epoch 18/2015000/15000 [==============================] - 2s 133us/step - loss: 0.0026 - acc: 0.9976 - val_loss: 0.1076 - val_acc: 0.8687Epoch 19/2015000/15000 [==============================] - 2s 129us/step - loss: 0.0057 - acc: 0.9935 - val_loss: 0.1091 - val_acc: 0.8679Epoch 20/2015000/15000 [==============================] - 2s 128us/step - loss: 0.0022 - acc: 0.9978 - val_loss: 0.1104 - val_acc: 0.8671
aaarticlea/png;base64,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">
In [47]:
plt.clf()   # clear figureacc_values = history_dict['acc']val_acc_values = history_dict['val_acc']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()
Out[47]:
<matplotlib.legend.Legend at 0x1a948f9fdd8>
aaarticlea/png;base64,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iUgrsX37dmpqavj000+LHYo0oGPHjvTp04d27do1aXklCxHJWk1NDV26dGHAgAGYWbHDkRTuzrp166ipqWHgwIFNWodOQ4lI1j799FN69uypRNFMmRk9e/bMquanZCEiOaFE0bxl+/dRshARkVhKFiJScBUVMGAAtGkTXisqslvfunXrGDZsGMOGDeOAAw6gd+/eO99v27Yto3VceOGFLFu2rNEyd9xxBxXZBttCqYFbRAqqogImT4ba2vD+nXfCe4CJE5u2zp49e7J48WIArr/+ejp37szVV19dr4y74+60aZP+N/K9994bu53vfe97TQtwL6CahYgU1LRpuxJFQm1tmJ5rK1asYPDgwVxyySUMHz6c1atXM3nyZMrLyzn88MOZPn36zrKjRo1i8eLF1NXV0b17d6ZOncrQoUM59thj+eCDDwC49tprue2223aWnzp1KiNGjOCQQw7hhRdeAGDz5s2cddZZDB06lAkTJlBeXr4zkSW77rrrOProo3fG5+4AvPHGG5x88skMHTqU4cOHs3LlSgB+9KMfccQRRzB06FCm5WNnxVCyEJGCevfdPZueraVLl3LRRRfxyiuv0Lt3b3784x9TWVlJVVUVTz75JEuXLt1tmQ0bNnDiiSdSVVXFscceyz333JN23e7OSy+9xE9/+tOdieeXv/wlBxxwAFVVVUydOpVXXnkl7bLf//73WbhwIUuWLGHDhg08/vjjAEyYMIErr7ySqqoqXnjhBfbbbz8eeeQRHnvsMV566SWqqqq46qqrcrR3MqdkISIF1a/fnk3P1sEHH8zRRx+98/2DDz7I8OHDGT58OK+//nraZNGpUydOPfVUAI466qidv+5TnXnmmbuVef755zn33HMBGDp0KIcffnjaZefOncuIESMYOnQozzzzDK+99hrr16/nww8/5PTTTwfCjXSlpaU89dRTTJo0iU6dOgGw77777vmOyJKShYgU1E03QWlp/WmlpWF6Puyzzz47x5cvX84vfvEL/vKXv1BdXc2YMWPS3nvQvn37neMlJSXU1dWlXXeHDh12K5M4ndSY2tpapkyZwuzZs6murmbSpEk740h3iau7F/3SZCULESmoiRNhxgzo3x/MwuuMGU1v3N4TGzdupEuXLnTt2pXVq1fzxBNP5Hwbo0aNYtasWQAsWbIkbc1ly5YttGnThrKyMj755BMefvhhAHr06EFZWRmPPPIIEG52rK2tZfTo0fzmN79hy5YtAHz00Uc5jzuOroYSkYKbOLEwySHV8OHDOeywwxg8eDAHHXQQxx13XM63cdlll/Gtb32LIUOGMHz4cAYPHky3bt3qlenZsyfnn38+gwcPpn///owcOXLnvIqKCr7zne8wbdo02rdvz8MPP8xpp51GVVUV5eXltGvXjtNPP50bbrgh57E3xjKpMrUE5eXlXllZWewwRFql119/nUMPPbTYYTQLdXV11NXV0bFjR5YvX87o0aNZvnw5bdsW/7d5ur+TmS1y9/K4ZYsfvYjIXmRCzfuoAAANQklEQVTTpk2ccsop1NXV4e7cddddzSJRZCuvn8DMxgC/AEqAX7v7j1Pm/xz4UvS2FNjP3btH83YAS6J577r7uHzGKiKSC927d2fRokXFDiPn8pYszKwEuAP4ClADLDSzOe6+s7XH3a9MKn8ZcGTSKra4+7B8xSciIpnL59VQI4AV7v6Wu28DZgLjGyk/AXgwj/GIiEgT5TNZ9Ab+nvS+Jpq2GzPrDwwE/pI0uaOZVZrZfDM7o4HlJkdlKteuXZuruEVEJEU+k0W6O0gauvTqXOAP7r4jaVq/qIX+m8BtZnbwbitzn+Hu5e5e3qtXr+wjFhGRtPKZLGqAvknv+wCrGih7LimnoNx9VfT6FvA09dszRER2Oumkk3a7we62227ju9/9bqPLde7cGYBVq1Zx9tlnN7juuMvyb7vtNmqTekccO3YsH3/8cSahtxj5TBYLgUFmNtDM2hMSwpzUQmZ2CNADeDFpWg8z6xCNlwHHAbvfBikiQuh8b+bMmfWmzZw5kwkTJmS0/IEHHsgf/vCHJm8/NVk8+uijdO/evcnra47ydjWUu9eZ2RTgCcKls/e4+2tmNh2odPdE4pgAzPT6dwceCtxlZp8REtqPk6+iEpHm64orIE2P3FkZNgyinsHTOvvss7n22mvZunUrHTp0YOXKlaxatYpRo0axadMmxo8fz/r169m+fTs33ngj48fXv9Zm5cqVnHbaabz66qts2bKFCy+8kKVLl3LooYfu7GID4NJLL2XhwoVs2bKFs88+m3//93/n9ttvZ9WqVXzpS1+irKyMefPmMWDAACorKykrK+PWW2/d2WvtxRdfzBVXXMHKlSs59dRTGTVqFC+88AK9e/fmT3/6086OAhMeeeQRbrzxRrZt20bPnj2pqKhg//33Z9OmTVx22WVUVlZiZlx33XWcddZZPP7441xzzTXs2LGDsrIy5s6dm7O/QV7vs3D3R4FHU6b9MOX99WmWewE4Ip+xicjeo2fPnowYMYLHH3+c8ePHM3PmTM455xzMjI4dOzJ79my6du3Khx9+yDHHHMO4ceMa7JjvzjvvpLS0lOrqaqqrqxk+fPjOeTfddBP77rsvO3bs4JRTTqG6uprLL7+cW2+9lXnz5lFWVlZvXYsWLeLee+9lwYIFuDsjR47kxBNPpEePHixfvpwHH3yQu+++m2984xs8/PDDnHfeefWWHzVqFPPnz8fM+PWvf83NN9/Mz372M2644Qa6devGkiXhVrT169ezdu1avv3tb/Pss88ycODAnPcf1fJvKxSRZqWxGkA+JU5FJZJF4te8u3PNNdfw7LPP0qZNG9577z3WrFnDAQcckHY9zz77LJdffjkAQ4YMYciQITvnzZo1ixkzZlBXV8fq1atZunRpvfmpnn/+eb72ta/t7Pn2zDPP5LnnnmPcuHEMHDiQYcPCrWQNdYNeU1PDOeecw+rVq9m2bRsDBw4E4Kmnnqp32q1Hjx488sgjnHDCCTvL5Lob81bf62yunwUsIsVxxhlnMHfuXF5++WW2bNmys0ZQUVHB2rVrWbRoEYsXL2b//fdP2y15snS1jrfffptbbrmFuXPnUl1dzVe/+tXY9TTW916ie3NouBv0yy67jClTprBkyRLuuuuundtL12V5vrsxb9XJIvEs4HfeAfddzwJWwhBpeTp37sxJJ53EpEmT6jVsb9iwgf3224927doxb9483nnnnUbXc8IJJ1ARHQReffVVqqurgdC9+T777EO3bt1Ys2YNjz322M5lunTpwieffJJ2XX/84x+pra1l8+bNzJ49m+OPPz7jz7RhwwZ69w63p9133307p48ePZpf/epXO9+vX7+eY489lmeeeYa3334byH035q06WRTyWcAikn8TJkygqqpq55PqACZOnEhlZSXl5eVUVFTwxS9+sdF1XHrppWzatIkhQ4Zw8803M2LECCA89e7II4/k8MMPZ9KkSfW6N588eTKnnnoqX/rSl+qta/jw4VxwwQWMGDGCkSNHcvHFF3PkkZnfBXD99dfz9a9/neOPP75ee8i1117L+vXrGTx4MEOHDmXevHn06tWLGTNmcOaZZzJ06FDOOeecjLeTiVbdRXmbNqFGkcoMPvssR4GJtALqorxlyKaL8lZdsyj0s4BFRFqqVp0sCv0sYBGRlqpVJ4tiPgtYZG+zt5zS3ltl+/dp9fdZFOtZwCJ7k44dO7Ju3Tp69uyZ18s3pWncnXXr1tGxY8cmr6PVJwsRyV6fPn2oqalBjwpovjp27EifPn2avLyShYhkrV27djvvHJa9U6tusxARkcwoWYiISCwlCxERibXX3MFtZmuBxjt9Ka4y4MNiB9EIxZcdxZcdxZedbOLr7+6xz6Xea5JFc2dmlZncUl8sii87ii87ii87hYhPp6FERCSWkoWIiMRSsiicGcUOIIbiy47iy47iy07e41ObhYiIxFLNQkREYilZiIhILCWLHDGzvmY2z8xeN7PXzOz7acqcZGYbzGxxNPywCHGuNLMl0fZ3e7SgBbeb2Qozqzaz4QWM7ZCkfbPYzDaa2RUpZQq6D83sHjP7wMxeTZq2r5k9aWbLo9ceDSx7flRmuZmdX8D4fmpmf4v+frPNrHsDyzb6XchjfNeb2XtJf8OxDSw7xsyWRd/FqQWM76Gk2Faa2eIGli3E/kt7XCnKd9DdNeRgAD4HDI/GuwBvAIellDkJ+N8ix7kSKGtk/ljgMcCAY4AFRYqzBHifcMNQ0fYhcAIwHHg1adrNwNRofCrwkzTL7Qu8Fb32iMZ7FCi+0UDbaPwn6eLL5LuQx/iuB67O4O//JnAQ0B6oSv1/yld8KfN/BvywiPsv7XGlGN9B1SxyxN1Xu/vL0fgnwOtA7+JG1STjgd95MB/obmafK0IcpwBvuntR78p392eBj1Imjwfui8bvA85Is+g/Ak+6+0fuvh54EhhTiPjc/c/uXhe9nQ80vV/qLDWw/zIxAljh7m+5+zZgJmG/51Rj8Vl4MMc3gAdzvd1MNXJcKfh3UMkiD8xsAHAksCDN7GPNrMrMHjOzwwsaWODAn81skZlNTjO/N/D3pPc1FCfpnUvD/6TF3of7u/tqCP/MwH5pyjSX/TiJUFNMJ+67kE9TotNk9zRwCqU57L/jgTXuvryB+QXdfynHlYJ/B5UscszMOgMPA1e4+8aU2S8TTqsMBX4J/LHQ8QHHuftw4FTge2Z2Qsr8dI85K+j11WbWHhgH/Hea2c1hH2aiOezHaUAdUNFAkbjvQr7cCRwMDANWE071pCr6/gMm0HitomD7L+a40uBiaaY1eR8qWeSQmbUj/EEr3P1/Uue7+0Z33xSNPwq0M7OyQsbo7qui1w+A2YTqfrIaoG/S+z7AqsJEt9OpwMvuviZ1RnPYh8CaxKm56PWDNGWKuh+jxszTgIkencBOlcF3IS/cfY2773D3z4C7G9husfdfW+BM4KGGyhRq/zVwXCn4d1DJIkei85u/AV5391sbKHNAVA4zG0HY/+sKGOM+ZtYlMU5oCH01pdgc4FvRVVHHABsS1d0CavAXXbH3YWQOkLiy5HzgT2nKPAGMNrMe0WmW0dG0vDOzMcAPgHHuXttAmUy+C/mKL7kN7GsNbHchMMjMBkY1zXMJ+71Qvgz8zd1r0s0s1P5r5LhS+O9gPlvyW9MAjCJU8aqBxdEwFrgEuCQqMwV4jXBlx3zgHwoc40HRtquiOKZF05NjNOAOwpUoS4DyAsdYSjj4d0uaVrR9SEhaq4HthF9qFwE9gbnA8uh136hsOfDrpGUnASui4cICxreCcK468T38r6jsgcCjjX0XChTf76PvVjXhoPe51Pii92MJV/+8Wcj4oum/TXznksoWY/81dFwp+HdQ3X2IiEgsnYYSEZFYShYiIhJLyUJERGIpWYiISCwlCxERiaVkIRLDzHZY/d5wc9YDqpkNSO7xVKS5alvsAERagC3uPqzYQYgUk2oWIk0UPc/gJ2b2UjR8Ppre38zmRh3lzTWzftH0/S08X6IqGv4hWlWJmd0dPa/gz2bWKSp/uZktjdYzs0gfUwRQshDJRKeU01DnJM3b6O4jgF8Bt0XTfkXo5n0IoRO/26PptwPPeOgEcTjhzl+AQcAd7n448DFwVjR9KnBktJ5L8vXhRDKhO7hFYpjZJnfvnGb6SuBkd38r6uztfXfvaWYfErqw2B5NX+3uZWa2Fujj7luT1jGA8MyBQdH7HwDt3P1GM3sc2EToWfePHnWgKFIMqlmIZMcbGG+oTDpbk8Z3sKst8auEfrqOAhZFPaGKFIWShUh2zkl6fTEaf4HQSyrAROD5aHwucCmAmZWYWdeGVmpmbYC+7j4P+FegO7Bb7UakUPRLRSReJzNbnPT+cXdPXD7bwcwWEH54TYimXQ7cY2b/AqwFLoymfx+YYWYXEWoQlxJ6PE2nBLjfzLoRegL+ubt/nLNPJLKH1GYh0kRRm0W5u39Y7FhE8k2noUREJJZqFiIiEks1CxERiaVkISIisZQsREQklpKFiIjEUrIQEZFY/x9jX0JeWg+3VwAAAABJRU5ErkJggg==">

执行这个修改,从结果上来看,有所提高

看上去,mse非常的不适合这个问题

In [45]:
# Try to use the `tanh` activation (an activation that was popular in the early days of neural networks) instead of `relu`.
In [48]:
model = models.Sequential()model.add(layers.Dense(16, activation='tanh', input_shape=(10000,)))model.add(layers.Dense(16, activation='tanh'))model.add(layers.Dense(16, activation='tanh'))model.add(layers.Dense(1, activation='sigmoid'))model.compile(optimizer='rmsprop',              loss='mse',              metrics=['accuracy'])history = model.fit(partial_x_train,                    partial_y_train,                    epochs=20,                    batch_size=512,                    validation_data=(x_val, y_val))history_dict = history.historyhistory_dict.keys()acc = history.history['acc']val_acc = history.history['val_acc']loss = history.history['loss']val_loss = history.history['val_loss']epochs = range(1, len(acc) + 1)# "bo" is for "blue dot"plt.plot(epochs, loss, 'bo', label='Training loss')# b is for "solid blue line"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()
Train on 15000 samples, validate on 10000 samplesEpoch 1/2015000/15000 [==============================] - 2s 158us/step - loss: 0.1523 - acc: 0.7944 - val_loss: 0.1029 - val_acc: 0.8706Epoch 2/2015000/15000 [==============================] - 2s 138us/step - loss: 0.0740 - acc: 0.9085 - val_loss: 0.0850 - val_acc: 0.8854Epoch 3/2015000/15000 [==============================] - 2s 130us/step - loss: 0.0497 - acc: 0.9386 - val_loss: 0.0845 - val_acc: 0.8863Epoch 4/2015000/15000 [==============================] - 2s 136us/step - loss: 0.0346 - acc: 0.9585 - val_loss: 0.0927 - val_acc: 0.8770Epoch 5/2015000/15000 [==============================] - 2s 142us/step - loss: 0.0303 - acc: 0.9631 - val_loss: 0.0939 - val_acc: 0.8812Epoch 6/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0241 - acc: 0.9723 - val_loss: 0.0979 - val_acc: 0.8797Epoch 7/2015000/15000 [==============================] - 2s 130us/step - loss: 0.0219 - acc: 0.9739 - val_loss: 0.1009 - val_acc: 0.8770Epoch 8/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0192 - acc: 0.9785 - val_loss: 0.1046 - val_acc: 0.8760Epoch 9/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0160 - acc: 0.9821 - val_loss: 0.1077 - val_acc: 0.8729Epoch 10/2015000/15000 [==============================] - 2s 130us/step - loss: 0.0132 - acc: 0.9852 - val_loss: 0.1071 - val_acc: 0.8755Epoch 11/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0133 - acc: 0.9851 - val_loss: 0.1097 - val_acc: 0.8739Epoch 12/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0146 - acc: 0.9837 - val_loss: 0.1120 - val_acc: 0.8717Epoch 13/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0071 - acc: 0.9929 - val_loss: 0.1407 - val_acc: 0.8436Epoch 14/2015000/15000 [==============================] - 2s 132us/step - loss: 0.0078 - acc: 0.9917 - val_loss: 0.1145 - val_acc: 0.8720Epoch 15/2015000/15000 [==============================] - 2s 136us/step - loss: 0.0128 - acc: 0.9855 - val_loss: 0.1164 - val_acc: 0.8700Epoch 16/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0057 - acc: 0.9943 - val_loss: 0.1190 - val_acc: 0.8673Epoch 17/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0124 - acc: 0.9861 - val_loss: 0.1196 - val_acc: 0.8670Epoch 18/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0052 - acc: 0.9948 - val_loss: 0.1207 - val_acc: 0.8665Epoch 19/2015000/15000 [==============================] - 2s 131us/step - loss: 0.0111 - acc: 0.9870 - val_loss: 0.1210 - val_acc: 0.8661Epoch 20/2015000/15000 [==============================] - 2s 135us/step - loss: 0.0050 - acc: 0.9950 - val_loss: 0.1225 - val_acc: 0.8651
aaarticlea/png;base64,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YoxRpF6bNw/+8heYOBGiQVZrjZEjRzJjxox9ls2YMYORI0emtf0hhxzCU089Ve3jl08Wzz77LG3btq32/mq6OJNFJ+C9hOfF0bKUzOwA4NfAT1OUG2tmRWZWtHHjxmoHKlJf3XcfNGsGn30GU6bkO5qqGT58OE8//TSfffYZAKtXr2bdunWccsope697KCgo4LjjjuPPf/7zftuvXr2anj17AvDpp58yYsQIevXqxcUXX8ynn366t9zVV1+9d3jz//zP/wRg8uTJrFu3jkGDBjFo0CAAunbtyqZNmwC466676NmzJz179tw7vPnq1as59thj+fa3v02PHj0488wz9zlOMosWLaJ///706tWL8847jy1btuw9fvfu3enVq9feAQxfeeWVvZM/9enTh48//rja720ycV5nkWzC13QvF/8u8Ky7v1fZvLHuPhWYCuEK7ipHKFKPbdoEjz8OY8ZAcXFIFtdfv/8YTun40Y8g2xPA9e4N0fdsUu3bt6dfv348//zzDBs2jBkzZnDxxRdjZjRt2pSZM2fSunVrNm3aRP/+/TnnnHMqnIf6/vvvp3nz5ixZsoQlS5ZQUFCwd92ECRM48MAD2b17N6effjpLlizhBz/4AXfddRdz5szhoIMO2mdfCxYsYNq0acydOxd358QTT2TAgAG0a9eOFStW8Nhjj/G73/2Oiy66iD/+8Y+Vzk9x2WWXcc899zBgwABuvvlmbr31ViZNmsRtt93Gu+++S5MmTfY2fU2cOJEpU6Zw8skns2PHDpo2bVqFdzu1OGsWxcChCc87A+vS3PYk4BozWw1MBC4zs9uyG55I/fbgg6FG8d3vwnXXwebNkMbEcTVKYlNUYhOUu3PDDTfQq1cvzjjjDN5//302bNhQ4X5effXVvV/avXr1olevXnvXPfHEExQUFNCnTx+WLl2acpDA1157jfPOO48WLVrQsmVLzj//fP7+978D0K1bN3r37g1UPgw6hPk1tm7dyoABAwAYPXo0r7766t4YR40axaOPPrr3SvGTTz6Za6+9lsmTJ7N169asX0EeZ81iPnCUmXUD3gdGAJeks6G77x1ezMwuBwrdfb/eVCJSPbt3w/33w4AB0KNHONF94olw111w1VXQoEHV9ldZDSBO5557Ltdeey0LFy7k008/3VsjmD59Ohs3bmTBggU0atSIrl27Jh2WPFGy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">
In [49]:
plt.clf()   # clear figureacc_values = history_dict['acc']val_acc_values = history_dict['val_acc']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()
Out[49]:
<matplotlib.legend.Legend at 0x1a948c45ef0>
aaarticlea/png;base64,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d+5cOnTowC233EJRURHz58/nhRdeYMmSJbvts3HjRo477jjmz5/P0UcfzYMPPpjy2GbGv//9b371q1/tDEq/+c1vaNeuHfPnz2fMmDHMnTs35b5XXXUVs2fPZuHChWzcuJFnn30WgOHDh3PNNdcwf/58Xn/9dQ444ACefvppZsyYwb///W/mz5/PtddeW01XZ894IHHO1QidOu3Z+kx1796dr371qzuXn3jiCQYMGMCAAQNYunRpykCy7777MnToUACOOOKInaWCZGedddZuaV577TXOO+88APr27UuvXr1S7jtz5kwGDhxI3759eeWVV1i8eDEbNmxg/fr1nHbaaUC4gbBJkya8+OKLXHLJJey7774A7L///nt+IaqBBxLnXI0wcSI0aVJ2XZMmYX027Lfffjvnly9fzl133cVLL73EggULGDJkSMr7Kho2bLhzvn79+pSWlqY8dqNGjXZLk6iiqsiWLVsYPXo006ZNY8GCBVxyySU785Gqi66Z1Yju1R5InHM1wogRMGkSdO4MUnidNKnqDe17YtOmTTRr1ozmzZuzbt06nnvuuWp/j0GDBvHkk08CsHDhwpQlnq1bt1KvXj0KCgr47LPPmDp1KgCtWrWioKCAp59+Ggg3em7ZsoWTTz6ZBx54gK1btwLwySefVHu+0+G9tpxzNcaIEbkJHMkGDBhAz5496d27N926deNrX9vtPumMXXHFFVxwwQX06dOHAQMG0Lt3b1q0aFEmTevWrbnwwgvp3bs3nTt35sgjj9y5bfLkyXzve99j7NixNGzYkKlTp3Lqqacyf/58CgsLadCgAaeddho333xztee9MkqnuFXbFRYWWlGRPwfLuVxbunQphx12WL6zUSOUlpZSWlpK48aNWb58OSeffDLLly9nn31qxu/5VH8rSXPMrLCyfWvGGTjn3F5u8+bNnHjiiZSWlmJm/P73v68xQSRTe8dZOOdcDdeyZUvmzJmT72xkhTe2O+ecy4gHEueccxnxQOKccy4jWQ0kkoZIWiZphaQxKbZ3kjRL0lxJCySdEtt2fbTfMknfSPeYzjnncitrgURSfeAeYCjQExguqWdSsnGEJyf2JzyK93fRvj2j5V6EZ7r/TlL9NI/pnHMADB48eLebC++8807+93//t8L9mjZtCsDatWs555xzyj12ZbcV3HnnnWyJjUR5yimn8Omn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">

Conclusions

Here's what you should take away from this example:

  • There's usually quite a bit of preprocessing you need to do on your raw data in order to be able to feed it -- as tensors -- into a neural network. In the case of sequences of words, they can be encoded as binary vectors -- but there are other encoding options too.
  • Stacks of Dense layers with relu activations can solve a wide range of problems (including sentiment classification), and you will likely use them frequently.
  • In a binary classification problem (two output classes), your network should end with a Dense layer with 1 unit and a sigmoid activation, i.e. the output of your network should be a scalar between 0 and 1, encoding a probability.
  • With such a scalar sigmoid output, on a binary classification problem, the loss function you should use is binary_crossentropy.
  • The rmsprop optimizer is generally a good enough choice of optimizer, whatever your problem. That's one less thing for you to worry about.
  • As they get better on their training data, neural networks eventually start overfitting and end up obtaining increasingly worse results on data never-seen-before. Make sure to always monitor performance on data that is outside of the training set.

附件列表