利用keras定義簡單神經網路

2021-09-16 20:37:36 字數 3373 閱讀 7528

我是乙個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...