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搭建神經網路結構。
可以理解成,init建構函式 ,構造出神經網路需要的積木 ,call 函式呼叫這些積木class
mymodel
(model)
:def
__init__
(self)
:super
(mymodel.self)
.__init__(
) 定義網路結構塊
def__call__
(self, x)
: 呼叫網路結構塊,實現前向傳播
return y
model = mymodel(
)
神經網路體系搭建(一) 神經網路
本篇是神經網路體系搭建的第一篇,解決體系搭建的前四個問題,詳見神經網路體系搭建 序 神經網路的定義就不再贅述,直接從最簡單的神經網路說起。將一系列輸入資料,通過訓練好的網路模型處理,得到輸出結果,這是神經網路決策的步驟。那麼我們的重點就是通過訓練得到網路模型。從上圖可以看出,模型的關鍵其實是尋找合適...
簡單搭建神經網路
簡單的神經網路 準備,前傳,後傳,迭代 下面是乙個簡單的神經網路搭建的 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後面用...