[譯] Keras 速查表:使用 Python 構建神經網絡

使用 Keras 速查表構建你本身的神經網絡,便於初學者在 Python 中進行深度學習,附有代碼示例前端

Keras 是一個基於 Theano 和 TensorFlow 的易於使用且功能強大的庫,它提供了一些高層的神經網絡接口,用於開發和評估深度學習模型。python

咱們最近推出了第一個使用 Keras 2.0 開發的在線交互深度學習課程,叫作「Deep Learning in Python」。android

如今,DataCamp 爲那些已經上過這門課但仍然須要一頁參考資料的人,或者那些須要一個額外的推進力才能開始學習的人,建立了 Keras 速查表。ios

很快,這個速查表就會讓你熟悉如何從這個庫中加載數據集、如何預處理數據、如何構造一個模型結構以及如何編譯、訓練和評估它。因爲在如何搭建本身的模型上有着至關大的自由度,你會看到這個速查表展現了一些簡單的關鍵 Keras 代碼示例,只有瞭解這些你才能開始用 Python 搭建本身的神經網絡。git

此外,你還能夠看到一些關於如何檢查你的模型,如何保存和加載模型的示例。最後,你也會找到一些關於如何對測試數據作預測,以及如何經過調節優化參數和早停的方式來微調模型的示例。github

簡而言之,你會看到這個速查表並不單單是向你展現了使用 Keras 庫在 Python 中構建神經網絡的六個步驟而已。後端

keras cheat sheet

總之,這個速查表會加快你的 Python 深度學習旅程:有了這些代碼示例的幫助,你很快就能夠對你的深度學習模型進行預處理、建立、檢驗和調優!bash

(點擊上圖下載可打印的版本,或閱讀下面的在線版本)網絡

Python 數據科學速查表:Keras

Keras 是一個基於 Theano 和 TensorFlow 的易於使用且功能強大的庫,它提供了一些高層的神經網絡接口,用於開發和評估深度學習模型。dom

一個基礎例子

>>> import numpy as np
>>> from keras.models import Sequential
>>> from keras.layers import Dense
>>> data = np.random.random((1000,100))
>>> labels = np.random.randint(2,size=(1000,1))
>>> model = Sequential()
>>> model.add(Dense(32, activation='relu', input_dim=100))
>>> model.add(Dense(1, activation='sigmoid'))
>>> model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
>>> model.fit(data,labels,epochs=10,batch_size=32)
>>> predictions = model.predict(data)
複製代碼

數據

你的數據須要以 Numpy arrays 或者 Numpy arrays 列表的格式儲存。理想狀況下,數據會分爲訓練集和測試集,你能夠藉助 sklearn.cross_validation 下的 train_test_split 模塊來實現。

Keras 數據集

>>> from keras.datasets import boston_housing, mnist, cifar10, imdb
>>> (x_train,y_train),(x_test,y_test) = mnist.load_data()
>>> (x_train2,y_train2),(x_test2,y_test2) = boston_housing.load_data()
>>> (x_train3,y_train3),(x_test3,y_test3) = cifar10.load_data()
>>> (x_train4,y_train4),(x_test4,y_test4) = imdb.load_data(num_words=20000)
>>> num_classes = 10
複製代碼

其餘

>>> from urllib.request import urlopen
>>> data = np.loadtxt(urlopen("http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"),delimiter=",")
>>> X = data[:,0:8]
>>> y = data [:,8]
複製代碼

預處理

序列填充

>>> from keras.preprocessing import sequence
>>> x_train4 = sequence.pad_sequences(x_train4,maxlen=80)
>>> x_test4 = sequence.pad_sequences(x_test4,maxlen=80)
複製代碼

One-Hot 編碼

>>> from keras.utils import to_categorical
>>> Y_train = to_categorical(y_train, num_classes)
>>> Y_test = to_categorical(y_test, num_classes)
>>> Y_train3 = to_categorical(y_train3, num_classes)
>>> Y_test3 = to_categorical(y_test3, num_classes)
複製代碼

訓練和測試集

>>> from sklearn.model_selection import train_test_split
>>> X_train5, X_test5, y_train5, y_test5 = train_test_split(X, y, test_size=0.33, random_state=42)
複製代碼

標準化/歸一化

>>> from sklearn.preprocessing import StandardScaler
>>> scaler = StandardScaler().fit(x_train2)
>>> standardized_X = scaler.transform(x_train2)
>>> standardized_X_test = scaler.transform(x_test2)
複製代碼

模型結構

序貫模型

>>> from keras.models import Sequential
>>> model = Sequential()
>>> model2 = Sequential()
>>> model3 = Sequential()
複製代碼

多層感知機(MLP)

二分類

>>> from keras.layers import Dense
>>> model.add(Dense(12, input_dim=8, kernel_initializer='uniform', activation='relu'))
>>> model.add(Dense(8, kernel_initializer='uniform', activation='relu'))
>>> model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))
複製代碼

多分類

>>> from keras.layers import Dropout
>>> model.add(Dense(512,activation='relu',input_shape=(784,)))
>>> model.add(Dropout(0.2))
>>> model.add(Dense(512,activation='relu'))
>>> model.add(Dropout(0.2))
>>> model.add(Dense(10,activation='softmax'))
複製代碼

迴歸

>>> model.add(Dense(64, activation='relu', input_dim=train_data.shape[1]))
>>> model.add(Dense(1))
複製代碼

卷積神經網路(CNN)

>>> from keras.layers import Activation, Conv2D, MaxPooling2D, Flatten
>>> model2.add(Conv2D(32, (3,3), padding='same', input_shape=x_train.shape[1:]))
>>> model2.add(Activation('relu'))
>>> model2.add(Conv2D(32, (3,3)))
>>> model2.add(Activation('relu'))
>>> model2.add(MaxPooling2D(pool_size=(2,2)))
>>> model2.add(Dropout(0.25))
>>> model2.add(Conv2D(64, (3,3), padding='same'))
>>> model2.add(Activation('relu'))
>>> model2.add(Conv2D(64, (3, 3)))
>>> model2.add(Activation('relu'))
>>> model2.add(MaxPooling2D(pool_size=(2,2)))
>>> model2.add(Dropout(0.25))
>>> model2.add(Flatten())
>>> model2.add(Dense(512))
>>> model2.add(Activation('relu'))
>>> model2.add(Dropout(0.5))
>>> model2.add(Dense(num_classes))
>>> model2.add(Activation('softmax'))
複製代碼

循環神經網絡(RNN)

>>> from keras.klayers import Embedding,LSTM
>>> model3.add(Embedding(20000,128))
>>> model3.add(LSTM(128,dropout=0.2,recurrent_dropout=0.2))
>>> model3.add(Dense(1,activation='sigmoid'))
複製代碼

檢查模型

模型輸出的 shape

>>> model.output_shape
複製代碼

模型描述

>>> model.summary()
複製代碼

模型配置

>>> model.get_config()
複製代碼

列出模型中全部的權重張量

>>> model.get_weights()
複製代碼

編譯模型

多層感知機(MLP)

多層感知機:二分類

>>> model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
複製代碼

多層感知機:多分類

>>> model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
複製代碼

多層感知機:迴歸

>>> model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
複製代碼

循環神經網絡(RNN)

>>> model3.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
複製代碼

模型訓練

>>> model3.fit(x_train4, y_train4, batch_size=32, epochs=15, verbose=1, validation_data=(x_test4, y_test4))
複製代碼

評估你的模型表現

>>> score = model3.evaluate(x_test, y_test, batch_size=32)
複製代碼

預測

>>> model3.predict(x_test4, batch_size=32)
>>> model3.predict_classes(x_test4,batch_size=32)
複製代碼

保存/加載模型

>>> from keras.models import load_model
>>> model3.save('model_file.h5')
>>> my_model = load_model('my_model.h5')
複製代碼

模型微調

優化參數

>>> from keras.optimizers import RMSprop
>>> opt = RMSprop(lr=0.0001, decay=1e-6)
>>> model2.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
複製代碼

早停

>>> from keras.callbacks import EarlyStopping
>>> early_stopping_monitor = EarlyStopping(patience=2)
>>> model3.fit(x_train4, y_train4, batch_size=32, epochs=15, validation_data=(x_test4, y_test4), callbacks=[early_stopping_monitor])
複製代碼

進一步探索

Keras 新手教程開始,您將以一種簡單、按部就班的方式學習如何探索和預處理一個關於葡萄酒質量的數據集,爲分類和迴歸任務構建多層感知機,編譯、擬合和評估模型,並對所構建的模型進行微調。

除此以外,不要錯過咱們的 Scikit-Learn 速查表NumPy 速查表Pandas 速查表

若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索