日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

神经网络-损失函数:

發布時間:2024/7/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 神经网络-损失函数: 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

神經網絡中的損失函數:

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))


?

總結

以上是生活随笔為你收集整理的神经网络-损失函数:的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。