国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

標(biāo)簽平滑(label smoothing) torch和tensorflow的實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了標(biāo)簽平滑(label smoothing) torch和tensorflow的實(shí)現(xiàn)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在常見的多分類問題中,先經(jīng)過softmax處理后進(jìn)行交叉熵計(jì)算,原理很簡單可以將計(jì)算loss理解為,為了使得網(wǎng)絡(luò)對測試集預(yù)測的概率分布和其真實(shí)分布接近,常用的做法是使用one-hot對真實(shí)標(biāo)簽進(jìn)行編碼,然后用預(yù)測概率去擬合one-hot的真實(shí)概率。但是這樣會(huì)帶來兩個(gè)問題:

無法保證模型的泛化能力,使網(wǎng)絡(luò)過于自信會(huì)導(dǎo)致過擬合;
全概率和0概率鼓勵(lì)所屬類別和其他類別之間的差距盡可能加大,而由梯度有界可知,這種情況很難adapt。會(huì)造成模型過于相信預(yù)測的類別。
標(biāo)簽平滑可以緩解這個(gè)問題,可以有兩個(gè)角度理解這件事。

角度一
軟化這種one-hot編碼方式。

標(biāo)簽平滑(label smoothing) torch和tensorflow的實(shí)現(xiàn)?

等號(hào)左側(cè):是一種新的預(yù)測的分布

等號(hào)右側(cè):前半部分是對原分布乘一個(gè)權(quán)重, ? \epsilon? 是一個(gè)超參,需要自己設(shè)定,取值在0到1范圍內(nèi)。后半部分u是一個(gè)均勻分布,k表示模型的類別數(shù)。

標(biāo)簽平滑(label smoothing) torch和tensorflow的實(shí)現(xiàn)?

由以上公式可以看出,這種方式使label有 ? \epsilon? 概率來自于均勻分布, 1 ? ? 1-\epsilon1?? 概率來自于原分布。這就相當(dāng)于在原label上增加噪聲,讓模型的預(yù)測值不要過度集中于概率較高的類別,把一些概率放在概率較低的類別。

因此,交叉熵可以替換為:

可以理解為:loss為對“預(yù)測的分布與真實(shí)分布”及“預(yù)測分布與先驗(yàn)分布(均勻分布)”的懲罰。

代碼實(shí)現(xiàn)如下:
?

class LabelSmoothingCrossEntropy(nn.Module):
    def __init__(self, eps=0.1, reduction='mean', ignore_index=-100):
        super(LabelSmoothingCrossEntropy, self).__init__()
        self.eps = eps
        self.reduction = reduction
        self.ignore_index = ignore_index

    def forward(self, output, target):
        c = output.size()[-1]
        log_pred = torch.log_softmax(output, dim=-1)
        if self.reduction == 'sum':
            loss = -log_pred.sum()
        else:
            loss = -log_pred.sum(dim=-1)
            if self.reduction == 'mean':
                loss = loss.mean()


        return loss * self.eps / c + (1 - self.eps) * torch.nn.functional.nll_loss(log_pred, target,                                                                                 reduction=self.reduction,                                                                                   ignore_index=self.ignore_index)

角度二

對于以Dirac函數(shù)分布的真實(shí)標(biāo)簽,我們將它變成分為兩部分獲得(替換):

  • 第一部分:將原本Dirac分布的標(biāo)簽變量替換為(1 - ?)的Dirac函數(shù);
  • 第二部分:以概率 ? ,在u(k)u(k) 中份分布的隨機(jī)變量。
    def label_smoothing(inputs, epsilon=0.1):
    	K = inputs.get_shape().as_list()[-1]    # number of channels
    	return ((1-epsilon) * inputs) + (epsilon / K)

    代碼的第一行是取Y的channel數(shù)也就是類別數(shù),第二行就是對應(yīng)公式了。
    下面用一個(gè)例子理解一下:

    假設(shè)我做一個(gè)蛋白質(zhì)二級結(jié)構(gòu)分類,是三分類,那么K=3;假如一個(gè)真實(shí)標(biāo)簽是[0, 0, 1],取epsilon = 0.1,
    新標(biāo)簽就變成了 (1 - 0.1)× [0, 0, 1] + (0.1 / 3) = [0, 0, 0.9] + [0.0333, 0.0333, 0.0333]= [0.0333, 0.0333, 0.9333]
    實(shí)際上分了一點(diǎn)概率給其他兩類(均勻分),讓標(biāo)簽沒有那么絕對化,留給學(xué)習(xí)一點(diǎn)泛化的空間。
    從而能夠提升整體的效果。

torch版本

首先,讓我們使用一個(gè)輔助函數(shù)來計(jì)算兩個(gè)值之間的線性組合:

def linear_combination(x, y, epsilon): 
    return epsilon*x + (1-epsilon)*y

接下來,我們使用 PyTorch nn.Module實(shí)現(xiàn)一個(gè)新的損失函數(shù)

import torch.nn.functional as F


def reduce_loss(loss, reduction='mean'):
    return loss.mean() if reduction=='mean' else loss.sum() if reduction=='sum' else loss


class LabelSmoothingCrossEntropy(nn.Module):
    def __init__(self, epsilon:float=0.1, reduction='mean'):
        super().__init__()
        self.epsilon = epsilon
        self.reduction = reduction
    
    def forward(self, preds, target):
        n = preds.size()[-1]
        log_preds = F.log_softmax(preds, dim=-1)
        loss = reduce_loss(-log_preds.sum(dim=-1), self.reduction)
        nll = F.nll_loss(log_preds, target, reduction=self.reduction)
        return linear_combination(loss/n, nll, self.epsilon)

我們現(xiàn)在可以在我們的代碼中使用這個(gè)類。 對于這個(gè)例子,我們使用標(biāo)準(zhǔn)的 fast.ai pets 例子。

from fastai.vision import *
from fastai.metrics import error_rate

# prepare the data
path = untar_data(URLs.PETS)
path_img = path/'images'
fnames = get_image_files(path_img)

bs = 64
np.random.seed(2)
pat = r'/([^/]+)_\d+.jpg$'
data = ImageDataBunch.from_name_re(path_img, fnames, pat, ds_tfms=get_transforms(), size=224, bs=bs) \
                     .normalize(imagenet_stats)

# train the model
learn = cnn_learner(data, models.resnet34, metrics=error_rate)
learn.loss_func = LabelSmoothingCrossEntropy()
learn.fit_one_cycle(4)

Tensorflow中使用方法時(shí)候只要在損失函數(shù)中加上label_smoothing的值即可,如下:

tf.losses.softmax_cross_entropy(
    onehot_labels,
    logits,
    weights=1.0,
    label_smoothing=0,
    scope=None,
    loss_collection=tf.GraphKeys.LOSSES,
    reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)
  • ————————————————
    原文鏈接:https://blog.csdn.net/qq_40176087/article/details/121519888

  • 標(biāo)簽平滑Label Smoothing_奔跑的小仙女的博客-CSDN博客_label smoothing文章來源地址http://www.zghlxwxcb.cn/news/detail-427750.html

到了這里,關(guān)于標(biāo)簽平滑(label smoothing) torch和tensorflow的實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • matplotlib中的label標(biāo)簽

    matplotlib中的label標(biāo)簽

    plt中的label參數(shù),其實(shí)可以理解為,我們往圖形中要加入的圖例, 通過plt.legend()的方法將其顯示在圖中。

    2024年02月12日
    瀏覽(25)
  • HTML的label標(biāo)簽有什么用?

    HTML的label標(biāo)簽有什么用?

    當(dāng)你想要將表單元素(如輸入框、復(fù)選框、單選按鈕等)與其描述文本關(guān)聯(lián)起來,以便提供更好的用戶界面和可訪問性時(shí),就可以使用HTML中的 label 標(biāo)簽。 label 標(biāo)簽用于為表單元素提供標(biāo)簽或標(biāo)識(shí),使用戶能夠更清楚地了解每個(gè)表單元素的用途。 label 標(biāo)簽的作用有兩個(gè)主要方

    2024年02月11日
    瀏覽(11)
  • lvgl 筆記 標(biāo)簽部件 (lv_label)

    lvgl 筆記 標(biāo)簽部件 (lv_label)

    最基礎(chǔ)的用法只需要兩行代碼,分別創(chuàng)建和配置即可:? 配置字體背景色使用?lv_obj_set_style_bg_color() 即可,但要順便使用 lv_obj_set_style_bg_opa() 配置透明度,因?yàn)槟J(rèn)透明度是100%,這樣將不會(huì)顯示背景色。 ? lv_obj_set_style_text_color() 可以配置文字顏色。 lv_label_set_recolor() 函數(shù)可以

    2024年02月07日
    瀏覽(22)
  • k8s集群Node節(jié)點(diǎn)管理:節(jié)點(diǎn)信息查看及節(jié)點(diǎn)label標(biāo)簽管理

    如果是kubeasz安裝,所有節(jié)點(diǎn)(包括master與node)都已經(jīng)可以對集群進(jìn)行管理 如果是kubeadm安裝,在node節(jié)點(diǎn)上管理時(shí)會(huì)報(bào)如下錯(cuò)誤 只要把master上的管理文件 /etc/kubernetes/admin.conf 拷貝到node節(jié)點(diǎn)的 $HOME/.kube/config 就可以讓node節(jié)點(diǎn)也可以實(shí)現(xiàn)kubectl命令管理 1, 在node節(jié)點(diǎn)的用戶家目錄創(chuàng)建

    2024年02月03日
    瀏覽(50)
  • 合宙Air724UG LuatOS-Air LVGL API控件-標(biāo)簽 (Label)

    合宙Air724UG LuatOS-Air LVGL API控件-標(biāo)簽 (Label)

    標(biāo)簽 (Label) 標(biāo)簽是 LVGL 用來顯示文字的控件。 標(biāo)簽是通過? lvgl.label_create ?函數(shù)創(chuàng)建的。 可以使用? lvgl.label_set_text ?設(shè)置標(biāo)簽上的文字顯示內(nèi)容。 標(biāo)簽是有寬度的,默認(rèn)情況下,在設(shè)置文字后會(huì)自行調(diào)整,標(biāo)簽寬度會(huì)自動(dòng)擴(kuò)充到文本寬度。但是這種顯示方式是可以進(jìn)行更改

    2024年02月09日
    瀏覽(17)
  • TDengine學(xué)習(xí)(1):采集量(Metric),標(biāo)簽(label),數(shù)據(jù)采集點(diǎn),表,超級表,子表、庫

    因?yàn)門Dengine是面向物聯(lián)網(wǎng)誕生的一種數(shù)據(jù)庫,所以在一些概念的命名上有一點(diǎn)相應(yīng)的特色。 比如需要對一輛高鐵上的各種信息進(jìn)行采集,采集信息存入數(shù)據(jù)庫中。我們可以對高鐵車廂內(nèi)的一些數(shù)據(jù)進(jìn)行采集,比如:車廂內(nèi)溫度、車廂內(nèi)濕度、車廂內(nèi)噪音…;也可以對車廂外即

    2024年02月10日
    瀏覽(13)
  • NVIDIA驅(qū)動(dòng)、CUDA、cuDNN、Torch、Tensorflow對應(yīng)版本一文搞明白

    NVIDIA驅(qū)動(dòng)、CUDA、cuDNN、Torch、Tensorflow對應(yīng)版本一文搞明白

    目錄 CUDA下載:CUDA Toolkit Archive | NVIDIA Developer cuDNN下載:cuDNN Archive | NVIDIA Developer 1.NVIDIA驅(qū)動(dòng)和CUDA版本對應(yīng) ?2.CUDA和cuDNN版本對應(yīng) ?3.Tensorflow和CUDA、cuDNN版本對應(yīng)(經(jīng)過官方測試的構(gòu)建配置) 3.1 GPU ?3.2 CPU 4.pytorch和CUDA對應(yīng) 網(wǎng)址:CUDA 12.1 Update 1 Release Notes 網(wǎng)址:cuDNN Archive | NVIDIA

    2024年02月15日
    瀏覽(27)
  • TensorFlow圖像多標(biāo)簽分類實(shí)例

    TensorFlow圖像多標(biāo)簽分類實(shí)例

    接下來,我們將從零開始講解一個(gè)基于TensorFlow的圖像多標(biāo)簽分類實(shí)例,這里以圖片驗(yàn)證碼為例進(jìn)行講解。 在我們訪問某個(gè)網(wǎng)站的時(shí)候,經(jīng)常會(huì)遇到圖片驗(yàn)證碼。圖片驗(yàn)證碼的主要目的是區(qū)分爬蟲程序和人類,并將爬蟲程序阻擋在外。 下面的程序就是模擬人類識(shí)別驗(yàn)證碼,從

    2024年02月08日
    瀏覽(19)
  • TensorFlow二元-多類-多標(biāo)簽分類示例

    探索不同類型的分類模型,使用 TensorFlow 構(gòu)建二元、多類和多標(biāo)簽分類器。 簡述 邏輯回歸 二元交叉熵 二元分類架構(gòu) 案例:邏輯回歸預(yù)測獲勝團(tuán)隊(duì) 簡述 Softmax 函數(shù) 分類交叉熵 多類分類架構(gòu) 案例:預(yù)測航天飛機(jī)散熱器位置 案例:創(chuàng)建字符識(shí)別模型 案例:構(gòu)建電影類型標(biāo)簽

    2024年02月11日
    瀏覽(20)
  • vue使用smooth-signature實(shí)現(xiàn)移動(dòng)端電子簽字,包括橫豎屏

    vue使用smooth-signature實(shí)現(xiàn)移動(dòng)端電子簽字,包括橫豎屏

    1.使用smooth-signature 二.頁面引入插件 三.實(shí)現(xiàn)效果 四.完整代碼 五.參考 https://github.com/linjc/smooth-signature

    2024年02月07日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包