亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 KERAS 獲取 DNN 最后一層的值?

如何使用 KERAS 獲取 DNN 最后一層的值?

MMMHUHU 2023-10-11 15:48:14
我剛剛開始使用 Keras 訓練一個簡單的 DNN,并且正在努力設置自定義損失函數,以下是模型的代碼:X_train = train_dataframe.to_numpy()[:, 0:4]Y_train = train_dataframe.to_numpy()[:, 4]model = Sequential()model.add(Dense(1000, input_shape=(4,), activation='relu'))model.add(Dense(1000, activation='relu'))model.add(Dense(Y_train.shape[0], activation='linear', activity_regularizer=regularizers.l1(0.02)))def custom_loss(y_true, y_pred):     mse_loss = tf.keras.losses.mean_squared_error(y_true,np.ones((450, 4)) * y_pred)                                                  return mse_loss + y_predmodel.compile("adam", custom_loss(X_train, model.layers[2].output), metrics=["accuracy"])model.fit(X_train, Y_train, epochs=5, batch_size=1)我將簡要解釋一下。我得到了一個包含 450 個樣本的訓練集,每個樣本有 4 個特征作為輸入,以及一個與訓練集配對的 (450,1) 數值向量?,F在,我想要獲得的是一種 LASSO 回歸,方法是在最后一層應用活動正則化器,然后構建自定義損失函數,其中我將 MSE 放在 y_true (這是輸入) y_pred 之間,y_pred 不是輸出,而是輸出層值與 (450,4) 矩陣的簡單乘法(因為簡單性用 1 填充)。我的問題是,當我運行腳本時出現此錯誤:ValueError: Dimensions must be equal, but are 4 and 450 for 'mul' (op: 'Mul') with input shapes: [450,4], [?,450].也許是因為我沒有很好地提取輸出層的值model.layers[2].output。那么我怎樣才能使用 Keras 正確地做到這一點呢?
查看完整描述

1 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

我認為你犯了兩個嚴重錯誤:

  1. 不要傳遞 .compile 中丟失的參數 keras 足夠聰明:

     model.compile(loss=custom_loss, optimizer='adam', metrics=["accuracy"])
  2. 如果您想對最后一層應用一些乘法,然后為此創建一個自定義層,請不要在損失函數內執行此操作;損失函數的作用只是找出預測值與真實值的差距


查看完整回答
反對 回復 2023-10-11
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號