欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

tensorflow 自定義損失函數(shù)示例代碼

 更新時間:2020年02月05日 10:32:15   作者:陳闊  
這篇文章主要介紹了tensorflow 自定義損失函數(shù)示例,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

這個自定義損失函數(shù)的背景:(一般回歸用的損失函數(shù)是MSE, 但要看實際遇到的情況而有所改變)

我們現(xiàn)在想要做一個回歸,來預估某個商品的銷量,現(xiàn)在我們知道,一件商品的成本是1元,售價是10元。

如果我們用均方差來算的話,如果預估多一個,則損失一塊錢,預估少一個,則損失9元錢(少賺的)。

顯然,我寧愿預估多了,也不想預估少了。

所以,我們就自己定義一個損失函數(shù),用來分段地看,當yhat 比 y大時怎么樣,當yhat比y小時怎么樣。

(yhat沿用吳恩達課堂中的叫法)

import tensorflow as tf
from numpy.random import RandomState
batch_size = 8
# 兩個輸入節(jié)點
x = tf.placeholder(tf.float32, shape=(None, 2), name="x-input")
# 回歸問題一般只有一個輸出節(jié)點
y_ = tf.placeholder(tf.float32, shape=(None, 1), name="y-input")
# 定義了一個單層的神經網(wǎng)絡前向傳播的過程,這里就是簡單加權和
w1 = tf.Variable(tf.random_normal([2, 1], stddev=1, seed=1))
y = tf.matmul(x, w1)
# 定義預測多了和預測少了的成本
loss_less = 10
loss_more = 1
#在windows下,下面用這個where替代,因為調用tf.select會報錯
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)
#通過隨機數(shù)生成一個模擬數(shù)據(jù)集
rdm = RandomState(1)
dataset_size = 128
X = rdm.rand(dataset_size, 2)
"""
設置回歸的正確值為兩個輸入的和加上一個隨機量,之所以要加上一個隨機量是
為了加入不可預測的噪音,否則不同損失函數(shù)的意義就不大了,因為不同損失函數(shù)
都會在能完全預測正確的時候最低。一般來說,噪音為一個均值為0的小量,所以
這里的噪音設置為-0.05, 0.05的隨機數(shù)。
"""
Y = [[x1 + x2 + rdm.rand()/10.0-0.05] for (x1, x2) in X]
with tf.Session() as sess:
 init = tf.global_variables_initializer()
 sess.run(init)
 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={x:X[start:end], y_:Y[start:end]})
 print(sess.run(w1))

[[ 1.01934695]
[ 1.04280889]

最終結果如上面所示。

因為我們當初生成訓練數(shù)據(jù)的時候,y是x1 + x2,所以回歸結果應該是1,1才對。
但是,由于我們加了自己定義的損失函數(shù),所以,傾向于預估多一點。

如果,我們將loss_less和loss_more對調,我們看一下結果:

[[ 0.95525807]
[ 0.9813394 ]]

通過這個例子,我們可以看出,對于相同的神經網(wǎng)絡,不同的損失函數(shù)會對訓練出來的模型產生重要的影響。

引用:以上實例為《Tensorflow實戰(zhàn) Google深度學習框架》中提供。

總結

以上所述是小編給大家介紹的tensorflow 自定義損失函數(shù)示例,希望對大家有所幫助!

相關文章

  • 詳解Python中數(shù)據(jù)類型的轉換

    詳解Python中數(shù)據(jù)類型的轉換

    這篇文章主要為大家詳細介紹了Python中數(shù)據(jù)類型轉換的相關資料,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解一下
    2023-03-03
  • python實現(xiàn)飛機大戰(zhàn)(面向過程)

    python實現(xiàn)飛機大戰(zhàn)(面向過程)

    這篇文章主要為大家詳細介紹了python面向過程實現(xiàn)飛機大戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 利用python實現(xiàn)冒泡排序算法實例代碼

    利用python實現(xiàn)冒泡排序算法實例代碼

    這篇文章主要給大家介紹了關于如何利用python實現(xiàn)冒泡排序算法的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-12-12
  • mac系統(tǒng)安裝Python3初體驗

    mac系統(tǒng)安裝Python3初體驗

    這篇文章主要介紹了mac系統(tǒng)安裝Python3初體驗,需要的朋友可以參考下
    2018-01-01
  • python基礎之基本運算符

    python基礎之基本運算符

    這篇文章主要介紹了python基本運算符,實例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下
    2021-10-10
  • Android應用開發(fā)中Action bar編寫的入門教程

    Android應用開發(fā)中Action bar編寫的入門教程

    這篇文章主要介紹了Android應用開發(fā)中ActionBar編寫的入門教程,Action Bar可以實現(xiàn)的功能很多,比如導航菜單和標簽頁切換等,需要的朋友可以參考下
    2016-02-02
  • 跟老齊學Python之折騰一下目錄

    跟老齊學Python之折騰一下目錄

    本講只關注os.path,真所謂“弱水三千,只取一瓢”,為什么這么偏愛它呢?因為它和前面已經講過的文件操作進行配合,就能夠隨心所欲操作各個地方的文件了
    2014-10-10
  • python安裝oracle擴展及數(shù)據(jù)庫連接方法

    python安裝oracle擴展及數(shù)據(jù)庫連接方法

    這篇文章主要介紹了python安裝oracle擴展及數(shù)據(jù)庫連接方法,較為詳細的分析了Python下載oracle擴展及Windows、Linux環(huán)境下的安裝步驟、操作技巧及注意事項,需要的朋友可以參考下
    2017-02-02
  • Python中python-nmap模塊的使用介紹

    Python中python-nmap模塊的使用介紹

    這篇文章主要介紹了Python中python-nmap模塊的使用,主要是portScanner()類方法展開全文,portScanner()類用于實現(xiàn)對指定主機進行端口掃描,更多介紹內容,需要的朋友可以參考一下
    2022-02-02
  • 詳解用Python進行時間序列預測的7種方法

    詳解用Python進行時間序列預測的7種方法

    這篇文章主要介紹了詳解用Python進行時間序列預測的7種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03

最新評論