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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

smooth l1(huber)+binary cross entropy详解(tensorflow+pytorch)

發布時間:2024/4/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 smooth l1(huber)+binary cross entropy详解(tensorflow+pytorch) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

上篇講到yolo?v2 loss中使用了兩個loss分別時wh使用的smoothl1?loss以及其他的BCEloss,這里做個擴展介紹,并對比pytorch以及tensorflow的api接口的使用

smooth?l1(huber loss)

轉載自知乎高贊回答:https://www.jianshu.com/p/19483787fa24

smooth L1 loss能從兩個方面限制梯度:

  • 當預測框與 ground truth 差別過大時,梯度值不至于過大;
  • 當預測框與 ground truth 差別很小時,梯度值足夠小。

考察如下幾種損失函數,其中

?

損失函數對 x 的導數分別為:

? ? ? ? ? ? ? ??

觀察 (4),當 x 增大時 L2 損失對 x 的導數也增大。這就導致訓練初期,預測值與 groud truth 差異過于大時,損失函數對預測值的梯度十分大,訓練不穩定。

根據方程 (5),L1 對 x 的導數為常數。這就導致訓練后期,預測值與 ground truth 差異很小時, L1 損失對預測值的導數的絕對值仍然為 1,而 learning rate 如果不變,損失函數將在穩定值附近波動,難以繼續收斂以達到更高精度。

最后觀察 (6),smooth L1 在 x 較小時,對 x 的梯度也會變小,而在 x 很大時,對 x 的梯度的絕對值達到上限 1,也不會太大以至于破壞網絡參數。 smooth L1 完美地避開了 L1 和 L2 損失的缺陷。其函數圖像如下:

? ? ? ? ? ? ? ? ? ??

由圖中可以看出,它在遠離坐標原點處,圖像和 L1 loss 很接近,而在坐標原點附近,轉折十分平滑,不像 L1 loss 有個尖角,因此叫做 smooth L1 loss。

pytorch及tensorflow接口

pytorch:

import torch.nn as nn smooth_l1 = nn.SmoothL1Loss(reduce=False) loss = smooth_l1(coord_wh,?tcoord_wh))

tensorflow:

#reduction參數默認返回sum值,若要返回同shape的矩陣則傳入NONE loss = tf.losses.huber_loss(gt_coord_wh, pre_coord_wh, reduction=tf.losses.Reduction.NONE)

各參數含義見:https://www.w3cschool.cn/tensorflow_python/tensorflow_python-2cbn2wyj.html

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的smooth l1(huber)+binary cross entropy详解(tensorflow+pytorch)的全部內容,希望文章能夠幫你解決所遇到的問題。

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