import numpy as np
import tensorflow as tf
sess = tf.interactivesession(
)
1.多分類中的softmax函式在多分類的神經網路中,通常在最後一層接乙個softmax層。對於n分類問題,softmax層就有n個結點,每個結點輸出的就是該類別的概率.2.交叉熵損失函式例如5分類的問題,神經網路可能會輸出[0,0.6,0.3,0,0.1],由於該樣本屬於第2類的概率最大,為0.6,故屬於2類。
交叉熵是用來衡量兩個概率分布p和q的差異程度的,其定義為:h(p,q)=
−∑xp
(x)l
ogq(
x)h(p,q)=-\sum_xp(x)log
h(p,q)
=−∑x
p(x
)log
q(x)
交叉熵通過和softmax函式連在一起使用,tensorflow對這兩個功能進行了統一封裝,提供了tf.nn.softmax_cross_entropy_with_logits
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(labels=y_,logits=y)
print
(cross_entropy.
eval()
)
1.2369158210025892
回歸問題通常使用均方誤差損失函式,其定義為:
mse = tf.reduce_mean(tf.square(y_-y)
)print
(mse.
eval()
)
0.052000000000000005
# 產生模擬資料
y_ = np.array([0
,1,0
,0,0
])# 真實標籤
y = np.array([0
,0.6
,0.3,0
,0.1])
# 模型輸出的**值
# 計算交叉熵
# tf.reduce_mean():按預設軸求均值
# tf.clip_by_value(t, clip_value_min, clip_value_max):將t值卡在clip_value_min到clip_value_max的區間內
8# 兩個輸入節點
x = tf.placeholder(tf.float32,shape=
(none,2
),name=
'x-input'
)# 回歸問題一般只有乙個輸出節點
y_ = tf.placeholder(tf.float32,shape=
(none,1
),name=
'y-input'
)# 定義單層的神經網路前向傳播的過程,這裡就是簡單加權和
w1 = tf.variable(tf.random_normal([2
,1],stddev=
1,seed=1)
)y = tf.matmul(x,w1)
######定義自己的loss#######
loss_less =
10loss_more =
1# tf.greater()函式相當於max()函式,tf.where()函式相當於二元運算子「:?」
loss = tf.reduce_sum(tf.where(tf.greater(y,y_)
,(y-y_)
*loss_more,
(y_-y)
*loss_less)
)train_step = tf.train.adamoptimizer(
0.001
).minimize(loss)
# 通過隨機數生成乙個模擬資料集
rdm = randomstate(1)
dataset_size =
128x = rdm.rand(dataset_size,2)
y =[
[x1+x2+rdm.rand()/
10.0
-0.05
]for
(x1,x2)
in x]
# 訓練神經網路
with tf.session(
)as sess:
init_op = tf.global_variables_initializer(
) sess.run(init_op)
steps =
5000
for i in
range
(steps)
: start =
(i*batch_size)
%dataset_size
end =
min(start+batch_size,dataset_size)
sess.run(train_step,feed_dict=
)print
(sess.run(w1)
)
[[1.019347 ]
[1.0428089]]
TensorFlow損失函式
tensorflow損失函式 正如前面所討論的,在回歸中定義了損失函式或目標函式,其目的是找到使損失最小化的係數。本文將介紹如何在 tensorflow 中定義損失函式,並根據問題選擇合適的損失函式。宣告乙個損失函式需要將係數定義為變數,將資料集定義為佔位符。可以有乙個常學習率或變化的學習率和正則化...
tf 損失函式 TensorFlow裡面損失函式
2 交叉熵 交叉熵 crossentropy 也是loss演算法的一種,一般用在分類問題上,表達的意識為 輸入樣本屬於某一類的概率 其表示式如下,其中y代表真實值分類 0或1 a代表 值。在tensorflow中常見的交叉熵函式有 sigmoid交叉熵 softmax交叉熵 sparse交叉熵 加權...
TensorFlow裡面損失函式
損失函式的選取取決於輸入標籤資料的型別 在tensorflow沒有單獨的mse函式,不過由於公式比較簡單,往往開發者都會自己組合,而且也可以寫出n種寫法,例如 mse tf.reduce mean tf.pow tf.sub logits,outputs 2.0 mse tf.reduce mean...