python計算kl散度
import numpy as np#python畫2d圖import scipy.stats
x = [np.random.randint(1,11) for i in range(10)]
print(x)
print(np.sum(x))
px = x/np.sum(x)#歸一化
print(px)
y = [np.random.randint(1, 11) for i in range(10)]
print(y)
print(np.sum(y))
py = y / np.sum(y)#歸一化
print(py)
## scipy計算函式可以處理非歸一化情況,因此這裡使用# scipy.stats.entropy(x, y)或scipy.stats.entropy(px, py)均可
kl = scipy.stats.entropy(x, y)
print(kl)
#自己程式設計實現
kl= 0.0
for i in range(10):
kl += px[i] * np.log(px[i]/py[i])
print(k)
#tensorflow的神經網路
import sys;
import tensorflow as tf
import numpy as np
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1+0.3
print(x_data)
print(y_data)
weights = tf.variable(tf.random_uniform([1], -1.0, 1.0))
biases = tf.variable(tf.zeros([1]))
y = weights*x_data + biases
print(y)
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.gradientdescentoptimizer(0.5)
train = optimizer.minimize(loss)
init = tf.global_variables_initializer()
sess = tf.session()
sess.run(init)
for step in range(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(weights), sess.run(biases))
#python畫3d圖
import matplotlib.pyplot as pltimport numpy as np
from mpl_toolkits.mplot3d import axes3d
np.random.seed(42)
# 取樣個數500
n_samples = 500
dim = 3
# 先生成一組3維正態分佈資料,資料方向完全隨機
samples = np.random.multivariate_normal(
np.zeros(dim),
np.eye(dim),
n_samples
)# 通過把每個樣本到原點距離和均勻分布吻合得到球體內均勻分布的樣本
for i in range(samples.shape[0]):
r = np.power(np.random.random(), 1.0/3.0)
samples[i] *= r / np.linalg.norm(samples[i])
upper_samples =
lower_samples =
for x, y, z in samples:
# 3x+2y-z=1作為判別平面
if z > 3*x + 2*y - 1:
else:
fig = plt.figure('3d scatter plot')
ax = fig.add_subplot(111, projection='3d')
uppers = np.array(upper_samples)
lowers = np.array(lower_samples)
# 用不同顏色不同形狀的圖示表示平面上下的樣本
# 判別平面上半部分為紅色圓點,下半部分為綠色三角
KL散度 JS散度
kl divergence kullback leibler divergence kl散度,kl距離,又叫相對熵 relative entropy 衡量兩個概率分布之間的不同程度,是描述兩個概率分布p和q差異的一種方法就是資訊理論學的相對熵 最簡單的情況 當kl divergence為0時,兩個分...
KL散度與JS散度
js散度 jensen shannon divergence 又稱kl距離,相對熵。kl散度是描述兩個概率分布p和q之間差異的一種方法。直觀地說,可以用來衡量給定任意分布偏離真實分布的程度,如果兩個分布完全匹配,那麼kl p q 0,否則它的取值應該是0 inf 之間。kl散度越小,真實分布與近視分...
KL散度及其python實現
kl散度又是乙個從資訊理論 熵的角度考量距離的乙個量。但是,這裡說他是距離有點不妥,因為距離需要滿足4個條件 1 d x,x 0 反身性 2 d x,y 0 非負性 3 d x,y d y,x 對稱性 4 d x,k d k,y d x,y 三角形法則 但是,很遺憾,我們的kl散度至滿足前面兩條,後...