【TensorFlow】—— 使用TensorFlow實現邏輯迴歸

交叉熵損失函數

交叉熵刻畫的是實際輸出(概率)與期望輸出(概率)的距離,也就是交叉熵的值越小,兩個概率分佈就越接近。

假設概率分佈p爲期望輸出,概率分佈q爲實際輸出,H(p,q)爲交叉熵,則:H(p,q)=xp(x)logq(x)H(p, q) = -\displaystyle\sum_{x}p(x)log\,q(x)


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:

損失函數圖像:

準確率圖像:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章