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

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

當我使用自定義損失函數運行程序時 Python 崩潰

當我使用自定義損失函數運行程序時 Python 崩潰

精慕HU 2022-12-06 15:24:56
每當我運行這段代碼時,Python 都會停止工作。為了確保這不是我系統的問題,我嘗試在 Google Colab 中運行它,但它也崩潰了。當執行到達model.fit行時發生崩潰data = load_iris()X = data['data']y = data['target']X_train, X_test, y_train, y_test = train_test_split(X,y, test_size = 0.33, random_state =23)def energy(x):    val,vec = tf.linalg.eigh(x)    en = tf.reduce_sum(tf.math.square(val))    return endef energy_loss(y_actual,y_predicted):    mtm_actual = tf.linalg.matmul(y_actual,tf.transpose(y_actual))    ptp_actual = tf.linalg.matmul(y_predicted,tf.transpose(y_predicted))    actual_energy = energy(y_actual)    predicted_energy = energy(y_predicted)    return tf.math.abs(actual_energy - predicted_energy)model = Sequential()model.add(Dense(32,input_dim=4))model.add(Dense(64,activation='relu'))model.add(Dense(128,activation='relu'))model.add(Dense(64,activation='relu'))model.add(Dense(3,activation='relu'))opt = Adam(lr = 1)model.compile(optimizer = opt, loss=energy_loss,metrics=['accuracy'])model.fit(X_train,X_train,epochs=25,verbose = 1,batch_size = 5)運行此代碼時,我使用的是 tensorflow 1.15.0。任何想法是什么導致了這個問題?
查看完整描述

1 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

錯誤出在計算特征值和特征向量的能量函數中。


tf.linalg.eigh

計算張量中最內層 N×N 矩陣的特征值和特征向量,滿足 tensor[...,:,:] * v[..., :,i] = e[..., i] * v [...,:,i],對于 i=0...N-1。


這是來自官方文檔。您對能量函數的輸入不滿足這些條件。


可以通過將正確的參數傳遞給energy函數來解決此問題


def energy_loss(y_actual,y_predicted):

    mtm_actual = tf.linalg.matmul(y_actual,tf.transpose(y_actual))

    ptp_actual = tf.linalg.matmul(y_predicted,tf.transpose(y_predicted))

    actual_energy = energy(mtm_actual)

    predicted_energy = energy(ptp_actual)

    return tf.math.abs(actual_energy - predicted_energy)


查看完整回答
反對 回復 2022-12-06
  • 1 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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