keras

Keras是與TensorFlow一起使用的更高級別的作爲後端的API

  1. 定義模型類型

    安裝Keras,直接導入Keras到項目中

    pip install keras
    

    通過導入Keras,定義模型的類型

    from keras.model import Sequential
    from keras.layers import Dense
    model=Sequential()
    
  2. 添加層到模型中

    Keras提供了全連接層的選項(針對密集連接的網絡)

    model.add()
    
    model.add(layers.Dense(
            units=64,   # 下一層神經元個數
            input_dim=7,    # 輸入層神經元個數
            use_bias=True,  # 偏置項
            kernel_initializer='uniform',   # 權重初始化
            bias_initializer='zeros',       # 偏置項初始化
            activation='relu',               # 激活函數
        ))
    

    密集層實現的操作:output=activation(dot(input,kernel)+bias),其中activation是元素激活函數,是作爲激活參數傳遞的,Kernel是由該層創建的權重矩陣,bias是由該層創建的偏置向量,僅在use_bias爲True時適用。

  3. 可以使用它添加儘可能多的層,每個隱藏層都由前一層提供輸入

    model.add(Dense(32,input_dim=13,activation='relu'))
    model.add(10,activation='sigmoid')
    
  4. 定義損失函數和優化器

    Keras提供的損失函數:mean_squared_error、mean_absolute_error、mean_absolute_percentage_error、categorical_crossentropy

    Keras提供的優化器:sgd、RMSprop、Adagrad、Adam、Adadelta

    # 可使用compile函數完成損失函數和優化器的定義
    # compile(self,optimizer,loss,metrics=None,sample_weight_mode=None)
    
    model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])
    
  5. 模型訓練

    model.fit(data,labels,epochs=**,batch_size=**)
    

    使用Keras的fit函數完成模型訓練,其返回的是一個history對象,該對象中包含一個字典,其中包含訓練過程中的loss和acc數據,以及驗證過程
    以下爲模型訓練示例:

        train_history=model.fit(
            x=x_train,
            y=y_train,
            validation_split=0.2,   # 20%作爲驗證集
            epochs=100,             # 輪次
            batch_size=40,          # 每次訓練40
            callbacks=callbacks,    # 回調
            verbose=1,      # 訓練過程顯示模式,0:不顯示,1:帶進度條模式,2:每epoch顯示一行
        )
    
  6. 模型預測

    # 使用keras中predict函數完成模型預測
    # predict(self,x,batch_size=32,verbose=0)
    
    model.predict(x_test)
    
  7. 模型評估

    model.evaluate(
            x=x_test,	# 測試數據
            y=y_test,	# 語句輸出
        )
    
  8. 避免過擬合

    # 使用dropout函數避免過擬合
    
    model.add(Dropout(rate=0.3))
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章