我是乙個python小白,最近在學習一些有關神經網路的知識:
偶然之間發現了一本有關keras的書還不錯,有詳細的**,我也不知道該怎麼學習keras,先從分析**開始,內容會有點囉唆,大神輕噴。以下**引自《keras深度學習實戰》
from __future__ import print_function
import numpy as np
from keras.datasets import mnist
from keras.models import sequential
from keras.layers.core import dense, activation
from keras.optimizers import sgd
from keras.utils import np_utils
np.random.seed(1671) # 重複性設定
# 網路和訓練
nb_epoch = 200
batch_size = 128
verbose = 1
nb_classes = 10 # 輸出個數等於數字個數
optimizer = sgd() # sgd 優化器
n_hidden = 128
validation_split=0.2 # 訓練集中用作驗證集的資料比例
#資料:混合並劃分訓練集和測試集
#(x_train, y_train), (x_test, y_test) = mnist.load_data()
#x_train 是 60000 行 28x28 的資料 --> 變形為 60000 x 784
reshaped = 784
#x_train = x_train.reshape(60000, reshaped)
x_test = x_test.reshape(10000, reshaped)
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')
# 將類向量轉換為二值類別矩陣
y_train = np_utils.to_categorical(y_train, nb_classes)
y_test = np_utils.to_categorical(y_test, nb_classes)
# 10個輸出
# 最後是softmax啟用函式
model = sequential()
model.add(dense(nb_classes, input_shape=(reshaped,))) # 全連線層
model.add(activation('softmax')) #啟用層
model.summary() #列印出模型概況,它實際呼叫的是keras.utils.print_summary
model.compile(loss='categorical_crossentropy',
optimizer=optimizer,
metrics=['accuracy'])
history = model.fit(x_train, y_train,
batch_size=batch_size, epochs=nb_epoch,
verbose=verbose, validation_split=validation_split) #verbose 是日誌顯示
score = model.evaluate(x_test, y_test, verbose=verbose)
print("\ntest score:", score[0])
print('test accuracy:', score[1])
上面的**用keras定義乙個識別mnist手寫數字的網路,利用乙個簡單的神經網路最後訓練出來的效果其實還挺好的。
利用keras構建神經網路模型其實很簡潔
1.模組匯入
#
from __future__ import print_function
import numpy as np
from keras.datasets import mnist
from keras.models import sequential
from keras.layers.core import dense, activation
from keras.optimizers import sgd
from keras.utils import np_utils
咱們一行一行解釋這些**是幹啥用的?
from __future__ import print_function
加上這句話後,即使在python2.x,使用print就得像python3.x那樣加括號使用。python2.x中print不需要括號,而在python3.x中則需要。如果是python3.x版本,這句話加不加都沒影響。
import numpy as np
匯入numpy庫,numpy(numerical python) 是 python 語言的乙個擴充套件程式庫,支援大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式庫。
from keras.datasets import mnist
from keras.models import sequential
from keras.layers.core import dense, activation
from keras.optimizers import sgd
from keras.utils import np_utils
第一行是從keras.datasets載入手寫數字資料集,keras主要有7種,詳細介紹可以參考這位大神寫的部落格
第二行是從keras.models 中匯入序貫(sequential)模型,序貫模型是多個網路層的線性堆疊,也就是「一條路走到黑」。官方文件有具體解釋:
第三行 layer是層,dense是全連線層,activation是啟用層
第四行是優化器optimizer, 這個模型使用的是sgd隨機梯度下降優化演算法
第五行 這個的功能是實現編碼輸出標籤。
使用keras自定義神經網路層
現在的深度學習無非就是堆神經網路模型 這句話既對也不全對,深度學習能夠取得如此大的進步在於神經網路的層數增加。但對模型並不是把別人已經做好的模型在自己的機子上跑一下,或者簡單堆疊就可以了,而是要有自己的想法產生自己的改進模型。keras提供了自定義層的程式設計正規化,但是很多書都沒有介紹,可能是一般...
Keras 神經網路構建學習
keras 是簡單易用 高效強大的神經網路庫,底層計算可基於 tensorflow 或 theano 平台實現。本篇將詳細介紹 keras 模型構建的具體步驟。通過閱讀本篇內容您將了解到 keras 模型構建的主要步驟 keras 神經網路搭建的一般過程 keras 模型構建主要包括5個步驟 定義 ...
神經網路的keras實現
keras是構建在tensorflow基礎上的python第三方庫,專門用於神經網路的構建與計算,同時還整合了scikit learn庫,使得可以在神經網路的構建中運用機器學習的方法。現在就用keras來構建之前構建過的神經網路。實現 首先匯入所需要的包 from keras.models impo...