- Python Deep Learning Cookbook
- Indra den Bakker
- 250字
- 2021-07-02 15:43:16
How to do it...
- Import libraries as follows:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
SEED = 2017
- Load the dataset:
data = pd.read_csv('Data/winequality-red.csv', sep=';')
y = data['quality']
X = data.drop(['quality'], axis=1)
- Split the dataset into training and testing:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=SEED)
- Normalize the input data:
scaler = StandardScaler().fit(X_train)
X_train = pd.DataFrame(scaler.transform(X_train))
X_test = pd.DataFrame(scaler.transform(X_test))
- Define the model and optimizer and compile:
model = Sequential()
model.add(Dense(1024, input_dim=X_train.shape[1], activation='relu'))
model.add(Dense(1024, activation='relu'))
model.add(Dense(512, activation='relu'))
model.add(Dense(512, activation='relu'))
# Output layer
model.add(Dense(1, activation='linear'))
# Set optimizer
opt = SGD()
# Compile model
model.compile(loss='mse', optimizer=opt, metrics=['accuracy'])
- Set the hyperparameters and train the model:
n_epochs = 500
batch_size = 256
history = model.fit(X_train.values, y_train, batch_size=batch_size, epochs=n_epochs, validation_split=0.2, verbose=0)
- Predict on the test set:
predictions = model.predict(X_test.values)
print('Test accuracy: {:f>2}%'.format(np.round(np.sum([y_test==predictions.flatten().round()])/y_test.shape[0]*100, 2)))
- Plot the training and validation accuracy:
plt.plot(np.arange(len(history.history['acc'])), history.history['acc'], label='training')
plt.plot(np.arange(len(history.history['val_acc'])), history.history['val_acc'], label='validation')
plt.title('Accuracy')
plt.xlabel('epochs')
plt.ylabel('accuracy ')
plt.legend(loc=0)
plt.show()
The following graph is obtained:

Figure 2.12: Training and validation accuracy
We should focus on the validation accuracy and use early stopping to stop the training after around 450 epochs. This results in the highest validation accuracy. in the sections Improving generalization with regularization and A`dding dropout to prevent overfitting, we will introduce techniques to prevent overfitting. By using these techniques, we can create deeper models without overfitting on the training data.
推薦閱讀
- Banana Pi Cookbook
- Bootstrap 4:Responsive Web Design
- Yocto for Raspberry Pi
- Mastering Ext JS
- Learn React with TypeScript 3
- 學習正則表達式
- Python Data Structures and Algorithms
- C語言程序設計
- Building Serverless Web Applications
- 愛上C語言:C KISS
- Python Programming for Arduino
- Akka入門與實踐
- Drupal 8 Development:Beginner's Guide(Second Edition)
- Node.js實戰:分布式系統中的后端服務開發
- HTML5 WebSocket權威指南