l2正則損失函式(即尤拉損失函式),l2正則損失函式是**值與目標函式差值的*方和。l2正則損失函式是非常有用的損失函式,因為它在目標值附*有更好的曲度,並且離目標越*收斂越慢:
# l = (pred - actual)^2l1正則損失函式(即絕對值損失函式)。與l2正則損失函式對差值求*方差不同的是,l1正則損失函式對差值求絕對值。l1正則在目標附*不*滑,這回導致演算法不能很好的收斂。l2_y_vals = tf.square(target -x_vals)
l2_y_out = sess.run(l2_y_vals)
# l = abs(pred -peseudo-huber損失函式是huber損失函式的連續、*滑估計,試圖actual)
l1_y_vals = tf.abs(target -x_vals)
l1_y_out = sess.run(l1_y_vals)
利用l1和l2正則消減極值處的陡峭,使得目標之附*連續。它的表示式依賴與引數delta。
# l = delta^2 * (sqrt(1 + ((pred - actual)/delta)^2) - 1)delta1 = tf.constant(0.25) #delta=0
.25的情況下
phuber1_y_vals = tf.multiply(tf.square(delta1), tf.sqrt(1. + tf.square((target - x_vals)/delta1)) - 1
.)phuber1_y_out = sess.run(phuber1_y_vals)
delta2 = tf.constant(5.) #delta=5的情況下利用matplotlib繪畫出以上的損失函式為:phuber2_y_vals = tf.multiply(tf.square(delta2), tf.sqrt(1. + tf.square((target - x_vals)/delta2)) - 1.)
phuber2_y_out = sess.run(phuber2_y_vals)
完整**:
import matplotlib.pyplot aspltimport tensorflow
astf
from
tensorflow.python.framework import ops
ops.reset_default_graph()
# create graph
sess =tf.session()
#建立與**函式序列和目標序列作為張量
x_vals = tf.linspace(-1., 1., 500
)target = tf.constant(0
.) #目標值為0
#l2正則損失函式(即尤拉損失函式)
# l
= (pred - actual)^2
l2_y_vals = tf.square(target -x_vals)
l2_y_out =sess.run(l2_y_vals)
#l1正則損失函式(即絕對值損失函式)
# l
= abs(pred -
actual)
l1_y_vals = tf.abs(target -x_vals)
l1_y_out =sess.run(l1_y_vals)
#peseudo
-huber損失函式是huber損失函式的連續 *滑估計,
#利用l1和l2正則消減極值處的陡峭,使得目標之附*連續。
# l = delta^2 * (sqrt(1 + ((pred - actual)/delta)^2) - 1
)delta1 = tf.constant(0.25) #delta=0
.25的情況下
phuber1_y_vals = tf.multiply(tf.square(delta1), tf.sqrt(1. + tf.square((target - x_vals)/delta1)) - 1
.)phuber1_y_out =sess.run(phuber1_y_vals)
delta2 = tf.constant(5.) #delta=
5的情況下
phuber2_y_vals = tf.multiply(tf.square(delta2), tf.sqrt(1. + tf.square((target - x_vals)/delta2)) - 1
.)phuber2_y_out =sess.run(phuber2_y_vals)
# plot the output:
x_array =sess.run(x_vals)
plt.plot(x_array, l2_y_out, 'b-
', label='
l2 loss')
plt.plot(x_array, l1_y_out,
'r--
', label='
l1 loss')
plt.plot(x_array, phuber1_y_out,
'k-.
', label='
p-huber loss (0.25)')
plt.plot(x_array, phuber2_y_out, 'g:
', label='
p-huber loss (5.0)')
plt.ylim(-0.2, 0.4
)plt.legend(loc='
lower right
', prop=)
plt.show()
tensorflow高階總結
tf.concat a,b axis n 拼接 不會會產生新的維度 e.g.a.shape 4,32,8 b.shape 6,32,8 axis 0 concat.shape 10,32,8 約束 非拼接維度之間必須保持一致,否則拼接不合法。tf.stack a,b axis n 堆疊 產生新的維度...
tensorflow 資料讀取篇
最近,心血來潮搞一搞tensorflow,看著 tensorflow實戰 碼了幾個簡單的小網路,自以為蠻簡單啊,當自己開始從頭開始構建自己網路時候,就開始懷疑人生了。自己的資料讀取都是乙個大問題,今天解決了使用tensorflow讀取csv文字資料,寫到部落格做個筆記。usr bin env pyt...
tensorflow基礎使用4
非線性回歸 coding utf 8 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt 使用numpy生成200個隨機點 x data np.linspace 0.5,0.5,200 np.newax...