搭建神經網路

2021-10-06 16:24:03 字數 2273 閱讀 9200

1. import

2. train,test

3. model = tf.keras.model.sequential(在sequential中描述網路結構,相當於走一遍前向傳播)

4. model.compile(在compile中配置訓練方法,選擇哪個優化器,選擇什麼損失函式,選擇什麼評價指標)

5. model.fit(執行訓練過程,確定訓練標籤,確定訓練集和測試集的輸入特徵和標籤,確定batch,迭代次數)

6. model.summary(列印出網路的結構和引數統計)

tf.keras.models.sequential([nn]) 描述各層的網路結構,並分裝成nn

tf.keras.layers.flatten() 拉直層,不含計算,只是形狀轉換,把輸入特徵拉直,變成一維陣列

tf.keras.layers.dense(神經元個數, activation = 『啟用函式』,kernel_regularizer = 什麼正則化方法)

tf.keras.layers.conv2d(filters= 卷積核個數, kernel_size= 卷積尺寸,strides=卷積步長 ,padding= 『valid』 or 『same』)

optimizer可選擇:

『sgd』 or tf.keras.optimizers.sgd(lr = 學習率,mometum = 動量引數)

『adagrad』 or tf.keras.optimizers.adagrad(lr = 學習率)

』adadelta『 or tf.keras.optimizers.adadel

ta(lr = 學習率)

4. 『adam』 or tf.keras.optimizers.adam(lr = 學習率, beta_1 = 0.9,beta_2 = 0.999)

loss可選:

『mse』 or tf.keras.losses.meansquarederror()

『sparse_categorical_crossentropy』 or tf.keras.losses.sparsecategoricalcrossentropy(from_logits= false)from_logits這個引數決定是否輸出神經網路的原始輸出。比如是否經過softmax,若經過 則為false,若沒經過 ,則為true

metrics可選:

這裡y是網路輸出,y_是標籤

『accuracy』: y_和y都時數值,如 y_ = [1] , y = [1]

『categorical_accuracy』 : y_ 和 y都是one_hot(概率分布) ,如y_ = [0,1,0] , y = [0.25,0.69,0.048]

『sparse_categorical_accuracy』: y_是數值,y是one_hot(概率分布),如 y_ = [1]

y= [0.25,0.69,0.048]

下面展示一些內聯**片

model.fit(feature_test,lable_test,

batch_size = , epochs = ,

validation_data = (test_feature,test_lable),

validation_split = 從訓練集劃分多少比例給測試集

validation_freq = 多少次epoch測試一次 )

# 其中validation_data 和 validation_split 二選一

列印網路資訊

由於sequence只能搭建出乙個上層輸出就是下層層輸入的網路結構,但是無法寫出一些帶有跳連的非順序網路結構,這時候可選擇用類class搭建神經網路結構。

class

mymodel

(model)

:def

__init__

(self)

:super

(mymodel.self)

.__init__(

) 定義網路結構塊

def__call__

(self, x)

: 呼叫網路結構塊,實現前向傳播

return y

model = mymodel(

)

可以理解成,init建構函式 ,構造出神經網路需要的積木 ,call 函式呼叫這些積木

神經網路體系搭建(一) 神經網路

本篇是神經網路體系搭建的第一篇,解決體系搭建的前四個問題,詳見神經網路體系搭建 序 神經網路的定義就不再贅述,直接從最簡單的神經網路說起。將一系列輸入資料,通過訓練好的網路模型處理,得到輸出結果,這是神經網路決策的步驟。那麼我們的重點就是通過訓練得到網路模型。從上圖可以看出,模型的關鍵其實是尋找合適...

簡單搭建神經網路

簡單的神經網路 準備,前傳,後傳,迭代 下面是乙個簡單的神經網路搭建的 coding utf 8 import tensorflow as tf import numpy as np batch size 8 seed 23455 基於seed產生隨機數 rng np.random.randomst...

關於搭建神經網路

有這麼幾個坑 首先,loss函式真的超級重要!隨神經網路層數的不同,loss函式也應該發生變化。比如我把莫煩python教程mnist的那個例子直接搬下來之後加了一層,正確率直線下降,找不到原因,到網上又找了個 一點一點改,發現把loss函式改掉之後正確率也基本上跟沒訓練差不多了。比如loss後面用...