神经网络-损失函数:
神經網絡中的損失函數:
1.神經網絡的復雜度:多用神經網絡的層數和神經網絡的參數的個數表示。
2.層數=隱藏層的層數+1個輸出層,總參數=總的權重w與總的偏置項b。
3.自定義損失函數:
通過每個需要預測的結果y與標準答案y_比較,計算其損失累計和,即loss(y_,y)=sum{f(y_,y)},其中y_是標準答案數據集的,y為預測答案計算出的。
?
函數f定義如下 當y<y_時,f(y_,y)=w1*(y_-y);y>=y_時, f(y_,y)=w1*(y_-y);其中w1和w2為兩個相互的矛盾,通過這樣權衡,以達到最優。
?
4.在tensorflow中通過tf.reduce_sum()實現:
loss=tf.reduce_sum(tf.where(greater(y,y_),w1*(y_-y),w1*(y_-y))),其中tf.greater(y,y_)判斷兩參數大小,然后根據判斷結果選擇計算式子。
?
5.交叉熵(Cross Entropy):表征兩個概率分布之間的距離;
H(y_,y)=-Sum(y_*logy),y_表示標準答案的概率分布,y表示預測結果的概率分布。通過交叉熵可以判斷那個預測結果與標準答案更接近。
?
6.在tensorflow中通過tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-12,1.0)))實現,當y小于1e-12時,y為1e-12,大于1.0時,y為1.0。
?
7.當n分類的n個輸出(y1,y2,...,yn)通過softmax()函數,便滿足了概率分布要求:
任意x,P(X=x)屬于[0,1]且sum(P(X=x))=1
?
8.softmax(y_i)={e^{y_i}}/sum{^n,_j=1}{e^{y_i}},
ce=tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=tf.argmax(y_,1))
cem=tf.reduce_mean(ce)
?
實現了先使數據滿足概率分布,在計算交叉熵的方法。
?
9.常用的激活函數:
f(x)=0,x小于等于0時, f(x)=x,x大于0時,即tf.relu();
f(x)=1/(1+e^{-x}),即tf.nn.sigmoid();
f(x)=(1-e^{-2x})/(1+e^{-2x}),即tf.nn.tanh();
?
?
#實例應用
?
#導入模塊,生成數據集
import tensorflow as tf
import numpy as np
SIZE=8
seed=23455
COST = 1
PROFIT=9
?
rdm =np.random.RandomState(seed)
?
X=rdm.rand(32,2)
Y=[[x1+x2+(rdm.rand()/10.0-0.05)] for (x1,x2) in X]#合格為1,不合格為0
?
#定義神經網絡的輸入,參數和輸出,定義前向傳播的過程
x=tf.compat.v1.placeholder(tf.float32,shape=(None,2))
y_=tf.compat.v1.placeholder(tf.float32,shape=(None,1))
w1=tf.Variable(tf.random.normal([2,1],stddev=1,seed=1))
y=tf.matmul(x,w1)
?
#定義損失函數及反向傳播方法
#loss_mse=tf.reduce_mean(tf.square(y_-y))
loss=tf.reduce_sum(tf.where(tf.greater(y,y_),(y-y_)*COST,(y_-y)*PROFIT))
train_step=tf.compat.v1.train.GradientDescentOptimizer(0.001).minimize(loss)
?
#生成會話,訓練
with tf.compat.v1.Session() as sess:
init_op=tf.compat.v1.global_variables_initializer()
sess.run(init_op)
?
steps=2000
for i in range(steps):
start=(i * SIZE) % 32
end=start+SIZE
sess.run(train_step,feed_dict={x:X[start:end],y_:Y[start:end]})
?
if i % 500 == 0:
print(i)
print(sess.run(w1))
print('\n')
print("訓練結束參數w1:\n",sess.run(w1))
?
總結
以上是生活随笔為你收集整理的神经网络-损失函数:的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算机网络复习】1.1.4 时延、时延
- 下一篇: 牛客 21302 被3整除的子序列 (动