這個問題更多的是關於DNN而不是軟件keras的訓練算法。爲什麼在keras中未指定DNN的預訓練?
據我所知,由於訓練算法的改進,深度神經網絡起作用。從20世紀80年代開始,BP算法一直用於訓練神經網絡,但當網絡深度較大時會導致過度擬合問題。大約10年前,Hinton首先使用未標記的數據預先訓練網絡,然後使用BP算法對算法進行了改進。預培訓對避免過度擬合起着重要作用。
但是,當我開始嘗試Keras時,使用SGD算法的mnist DNN示例(在下面)沒有提及預訓練過程,這導致了非常高的預測準確性。所以,我開始懷疑預培訓的去向了嗎?我誤解了深度學習訓練算法(我認爲經典BP與SGD幾乎相同)?或者新的培訓技術已經取代了培訓前的流程?
非常感謝您的幫助!
'''Trains a simple deep NN on the MNIST dataset.
Gets to 98.40% test accuracy after 20 epochs
(there is *a lot* of margin for parameter tuning).
2 seconds per epoch on a K520 GPU.
'''
from __future__ import print_function
import numpy as np
np.random.seed(1337) # for reproducibility
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD, Adam, RMSprop
from keras.utils import np_utils
batch_size = 128
nb_classes = 10
nb_epoch = 20
# the data, shuffled and split between train and test sets
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape(60000, 784)
X_test = X_test.reshape(10000, 784)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
print(X_train.shape[0], 'train samples')
print(X_test.shape[0], 'test samples')
# convert class vectors to binary class matrices
Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)
model = Sequential()
model.add(Dense(512, input_shape=(784,)))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(10))
model.add(Activation('softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
optimizer=RMSprop(),
metrics=['accuracy'])
history = model.fit(X_train, Y_train,
batch_size=batch_size, nb_epoch=nb_epoch,
verbose=1, validation_data=(X_test, Y_test))
score = model.evaluate(X_test, Y_test, verbose=0)
print('Test score:', score[0])
print('Test accuracy:', score[1])
我是機器學習的新手。什麼是DNN?這與動態CNN相同嗎? –
DNN =深度神經網絡。與以前一樣,但大多數時間更多圖層和不同的激活功能。 – sascha