交叉熵損失函數
交叉熵刻畫的是實際輸出(概率)與期望輸出(概率)的距離,也就是交叉熵的值越小,兩個概率分佈就越接近。
假設概率分佈p爲期望輸出,概率分佈q爲實際輸出,H(p,q)爲交叉熵,則:
keras交叉熵
在keras裏,使用 binary_ crossentropy
來計算二元交叉熵。
代碼:
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.read_csv("credit-a.csv", header=None)
data.iloc[:, -1].value_counts()
X = data.iloc[:, :-1]
y = data.iloc[:, -1].replace(-1, 0)
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(4, input_shape=(15,), activation='relu')) # 隱藏層
model.add(tf.keras.layers.Dense(4, activation='relu')) # 隱藏層
model.add(tf.keras.layers.Dense(1, activation='sigmoid')) # 輸出層
model.summary()
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['acc'])
history = model.fit(X, y, epochs=100)
history.history.keys()
plt.plot(history.epoch, history.history.get('loss'))
plt.plot(history.epoch, history.history.get('acc'))
Output:
損失函數圖像:
準確率圖像: