亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Pytorch中Softmax和LogSoftmax的使用詳解

Pytorch中Softmax和LogSoftmax的使用詳解

熱門標簽:商家地圖標注海報 地圖標注自己和別人標注區別 南陽打電話機器人 孝感營銷電話機器人效果怎么樣 ai電銷機器人的優勢 打電話機器人營銷 騰訊地圖標注沒法顯示 海外網吧地圖標注注冊 聊城語音外呼系統

一、函數解釋

1.Softmax函數常用的用法是指定參數dim就可以:

(1)dim=0:對每一列的所有元素進行softmax運算,并使得每一列所有元素和為1。

(2)dim=1:對每一行的所有元素進行softmax運算,并使得每一行所有元素和為1。

class Softmax(Module):
    r"""Applies the Softmax function to an n-dimensional input Tensor
    rescaling them so that the elements of the n-dimensional output Tensor
    lie in the range [0,1] and sum to 1.
    Softmax is defined as:
    .. math::
        \text{Softmax}(x_{i}) = \frac{\exp(x_i)}{\sum_j \exp(x_j)}
    Shape:
        - Input: :math:`(*)` where `*` means, any number of additional
          dimensions
        - Output: :math:`(*)`, same shape as the input
    Returns:
        a Tensor of the same dimension and shape as the input with
        values in the range [0, 1]
    Arguments:
        dim (int): A dimension along which Softmax will be computed (so every slice
            along dim will sum to 1).
    .. note::
        This module doesn't work directly with NLLLoss,
        which expects the Log to be computed between the Softmax and itself.
        Use `LogSoftmax` instead (it's faster and has better numerical properties).
    Examples::
        >>> m = nn.Softmax(dim=1)
        >>> input = torch.randn(2, 3)
        >>> output = m(input)
    """
    __constants__ = ['dim']
 
    def __init__(self, dim=None):
        super(Softmax, self).__init__()
        self.dim = dim
 
    def __setstate__(self, state):
        self.__dict__.update(state)
        if not hasattr(self, 'dim'):
            self.dim = None
 
    def forward(self, input):
        return F.softmax(input, self.dim, _stacklevel=5)
 
    def extra_repr(self):
        return 'dim={dim}'.format(dim=self.dim)

2.LogSoftmax其實就是對softmax的結果進行log,即Log(Softmax(x))

class LogSoftmax(Module):
    r"""Applies the :math:`\log(\text{Softmax}(x))` function to an n-dimensional
    input Tensor. The LogSoftmax formulation can be simplified as:
    .. math::
        \text{LogSoftmax}(x_{i}) = \log\left(\frac{\exp(x_i) }{ \sum_j \exp(x_j)} \right)
    Shape:
        - Input: :math:`(*)` where `*` means, any number of additional
          dimensions
        - Output: :math:`(*)`, same shape as the input
    Arguments:
        dim (int): A dimension along which LogSoftmax will be computed.
    Returns:
        a Tensor of the same dimension and shape as the input with
        values in the range [-inf, 0)
    Examples::
        >>> m = nn.LogSoftmax()
        >>> input = torch.randn(2, 3)
        >>> output = m(input)
    """
    __constants__ = ['dim']
 
    def __init__(self, dim=None):
        super(LogSoftmax, self).__init__()
        self.dim = dim
 
    def __setstate__(self, state):
        self.__dict__.update(state)
        if not hasattr(self, 'dim'):
            self.dim = None
 
    def forward(self, input):
        return F.log_softmax(input, self.dim, _stacklevel=5)

二、代碼示例

輸入代碼

import torch
import torch.nn as nn
import numpy as np
 
batch_size = 4
class_num = 6
inputs = torch.randn(batch_size, class_num)
for i in range(batch_size):
    for j in range(class_num):
        inputs[i][j] = (i + 1) * (j + 1)
 
print("inputs:", inputs)

得到大小batch_size為4,類別數為6的向量(可以理解為經過最后一層得到)

tensor([[ 1., 2., 3., 4., 5., 6.],
[ 2., 4., 6., 8., 10., 12.],
[ 3., 6., 9., 12., 15., 18.],
[ 4., 8., 12., 16., 20., 24.]])

接著我們對該向量每一行進行Softmax

Softmax = nn.Softmax(dim=1)
probs = Softmax(inputs)
print("probs:\n", probs)

得到

tensor([[4.2698e-03, 1.1606e-02, 3.1550e-02, 8.5761e-02, 2.3312e-01, 6.3369e-01],
[3.9256e-05, 2.9006e-04, 2.1433e-03, 1.5837e-02, 1.1702e-01, 8.6467e-01],
[2.9067e-07, 5.8383e-06, 1.1727e-04, 2.3553e-03, 4.7308e-02, 9.5021e-01],
[2.0234e-09, 1.1047e-07, 6.0317e-06, 3.2932e-04, 1.7980e-02, 9.8168e-01]])

此外,我們對該向量每一行進行LogSoftmax

LogSoftmax = nn.LogSoftmax(dim=1)
log_probs = LogSoftmax(inputs)
print("log_probs:\n", log_probs)

得到

tensor([[-5.4562e+00, -4.4562e+00, -3.4562e+00, -2.4562e+00, -1.4562e+00, -4.5619e-01],
[-1.0145e+01, -8.1454e+00, -6.1454e+00, -4.1454e+00, -2.1454e+00, -1.4541e-01],
[-1.5051e+01, -1.2051e+01, -9.0511e+00, -6.0511e+00, -3.0511e+00, -5.1069e-02],
[-2.0018e+01, -1.6018e+01, -1.2018e+01, -8.0185e+00, -4.0185e+00, -1.8485e-02]])

驗證每一行元素和是否為1

# probs_sum in dim=1
probs_sum = [0 for i in range(batch_size)]
 
for i in range(batch_size):
    for j in range(class_num):
        probs_sum[i] += probs[i][j]
    print(i, "row probs sum:", probs_sum[i])

得到每一行的和,看到確實為1

0 row probs sum: tensor(1.)
1 row probs sum: tensor(1.0000)
2 row probs sum: tensor(1.)
3 row probs sum: tensor(1.)

驗證LogSoftmax是對Softmax的結果進行Log

# to numpy
np_probs = probs.data.numpy()
print("numpy probs:\n", np_probs)
 
# np.log()
log_np_probs = np.log(np_probs)
print("log numpy probs:\n", log_np_probs)

得到

numpy probs:
[[4.26977826e-03 1.16064614e-02 3.15496325e-02 8.57607946e-02 2.33122006e-01 6.33691311e-01]
[3.92559559e-05 2.90064461e-04 2.14330270e-03 1.58369839e-02 1.17020354e-01 8.64669979e-01]
[2.90672347e-07 5.83831024e-06 1.17265590e-04 2.35534250e-03 4.73083146e-02 9.50212955e-01]
[2.02340233e-09 1.10474026e-07 6.03167746e-06 3.29318427e-04 1.79801770e-02 9.81684387e-01]]
log numpy probs:
[[-5.4561934e+00 -4.4561934e+00 -3.4561934e+00 -2.4561932e+00 -1.4561933e+00 -4.5619333e-01]
[-1.0145408e+01 -8.1454077e+00 -6.1454072e+00 -4.1454072e+00 -2.1454074e+00 -1.4540738e-01]
[-1.5051069e+01 -1.2051069e+01 -9.0510693e+00 -6.0510693e+00 -3.0510693e+00 -5.1069155e-02]
[-2.0018486e+01 -1.6018486e+01 -1.2018485e+01 -8.0184851e+00 -4.0184855e+00 -1.8485421e-02]]

驗證完畢

三、整體代碼

import torch
import torch.nn as nn
import numpy as np
 
batch_size = 4
class_num = 6
inputs = torch.randn(batch_size, class_num)
for i in range(batch_size):
    for j in range(class_num):
        inputs[i][j] = (i + 1) * (j + 1)
 
print("inputs:", inputs)
Softmax = nn.Softmax(dim=1)
probs = Softmax(inputs)
print("probs:\n", probs)
 
LogSoftmax = nn.LogSoftmax(dim=1)
log_probs = LogSoftmax(inputs)
print("log_probs:\n", log_probs)
 
# probs_sum in dim=1
probs_sum = [0 for i in range(batch_size)]
 
for i in range(batch_size):
    for j in range(class_num):
        probs_sum[i] += probs[i][j]
    print(i, "row probs sum:", probs_sum[i])
 
# to numpy
np_probs = probs.data.numpy()
print("numpy probs:\n", np_probs)
 
# np.log()
log_np_probs = np.log(np_probs)
print("log numpy probs:\n", log_np_probs)

基于pytorch softmax,logsoftmax 表達

import torch
import numpy as np
input = torch.autograd.Variable(torch.rand(1, 3))

print(input)
print('softmax={}'.format(torch.nn.functional.softmax(input, dim=1)))
print('logsoftmax={}'.format(np.log(torch.nn.functional.softmax(input, dim=1))))

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PyTorch的SoftMax交叉熵損失和梯度用法
  • 淺談pytorch中torch.max和F.softmax函數的維度解釋
  • PyTorch: Softmax多分類實戰操作

標簽:牡丹江 六盤水 聊城 楊凌 迪慶 揚州 撫州 南寧

巨人網絡通訊聲明:本文標題《Pytorch中Softmax和LogSoftmax的使用詳解》,本文關鍵詞  Pytorch,中,Softmax,和,LogSoftmax,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Pytorch中Softmax和LogSoftmax的使用詳解》相關的同類信息!
  • 本頁收集關于Pytorch中Softmax和LogSoftmax的使用詳解的相關信息資訊供網民參考!
  • 推薦文章
    午夜在线亚洲男人午在线| 国产麻豆精品hdvideoss| 国产一级生活片| 亚欧乱色一区二区三区| 久久国产精品自由自在| 精品视频在线观看一区二区三区| 精品视频在线观看一区二区三区| 九九干| 人人干人人草| 亚洲第一视频在线播放| 日本在线不卡视频| 日本特黄特黄aaaaa大片| 韩国毛片免费大片| 亚洲天堂一区二区三区四区| 久久久久久久网| 久久久久久久免费视频| 天天做人人爱夜夜爽2020毛片| 久久精品成人一区二区三区| 亚州视频一区二区| 欧美激情伊人| 国产精品自拍亚洲| 亚洲不卡一区二区三区在线| 国产网站免费在线观看| 精品视频免费在线| 精品国产一级毛片| 欧美电影免费| 日韩女人做爰大片| 成人av在线播放| 99久久网站| 国产高清在线精品一区a| 国产一区二区精品| 国产伦精品一区二区三区在线观看| 99久久精品国产免费| 欧美一级视频免费观看| 久久精品欧美一区二区| 精品在线视频播放| 国产美女在线观看| 亚洲女初尝黑人巨高清在线观看| 亚飞与亚基在线观看| 欧美激情中文字幕一区二区| 99久久精品费精品国产一区二区| 欧美一区二区三区性| 四虎影视久久久| 日韩中文字幕一区二区不卡| 青青久久精品国产免费看| 亚洲精品影院| 一本伊大人香蕉高清在线观看| 黄色福利片| 九九精品影院| 国产视频久久久久| 久久久久久久网| 国产麻豆精品免费密入口| 国产网站免费在线观看| 国产综合91天堂亚洲国产| 久久国产精品自由自在| 日韩免费片| 国产一区二区精品| 999精品影视在线观看| 欧美另类videosbestsex视频 | 国产高清在线精品一区a| 欧美激情中文字幕一区二区| 成人在免费观看视频国产| 精品视频在线观看一区二区三区| 久久99中文字幕| 国产一区精品| 国产美女在线一区二区三区| 99久久精品国产免费| 精品在线观看一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆精品国产综合久久久| 日韩在线观看免费完整版视频| 国产a免费观看| 黄色免费三级| 国产一区二区精品久久91| 国产麻豆精品视频| 九九精品影院| 成人免费一级纶理片| 成人免费福利片在线观看| 国产一级生活片| a级精品九九九大片免费看| 国产激情视频在线观看| 欧美激情影院| 九九免费高清在线观看视频| 免费的黄色小视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 成人免费观看视频| 亚洲 欧美 成人日韩| 亚洲精品影院| 欧美a级v片不卡在线观看| 可以在线看黄的网站| 91麻豆爱豆果冻天美星空| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美爱色| 四虎影视库| 黄视频网站在线观看| 天天色色网| 99久久网站| 青草国产在线| 亚洲精品中文字幕久久久久久| 成人免费观看视频| 国产亚洲精品aaa大片| 99久久网站| 亚洲精品久久玖玖玖玖| 九九干| 精品久久久久久中文| 国产精品自拍亚洲| 天堂网中文字幕| 成人a大片在线观看| 在线观看成人网 | 亚州视频一区二区| 亚洲www美色| 尤物视频网站在线观看| 国产原创中文字幕| 日韩中文字幕在线观看视频| 国产一级生活片| 深夜做爰性大片中文| 国产a网| 黄视频网站在线免费观看| 一级女性全黄久久生活片| 黄视频网站在线观看| 精品视频免费观看| 亚欧乱色一区二区三区| 九九免费高清在线观看视频| 国产a网| 国产成人欧美一区二区三区的| 日韩中文字幕一区二区不卡| 91麻豆爱豆果冻天美星空| 欧美a级v片不卡在线观看| 久久成人亚洲| 日韩女人做爰大片| 美女免费毛片| 国产不卡在线观看| 亚洲 欧美 成人日韩| 精品久久久久久中文| 国产精品1024永久免费视频 | 日本特黄特黄aaaaa大片| 欧美另类videosbestsex视频 | a级精品九九九大片免费看| 日韩专区第一页| 999精品影视在线观看| 韩国毛片免费大片| 国产麻豆精品视频| 亚洲女初尝黑人巨高清在线观看| 成人影视在线播放| 日日爽天天| 国产不卡高清在线观看视频| 欧美18性精品| 九九久久99综合一区二区| 国产一区二区精品在线观看| 日日爽天天| 久久成人亚洲| 国产视频一区二区在线播放| 成人免费网站久久久| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产高清在线精品一区a| 亚洲www美色| 国产91精品一区二区| 日日爽天天| 一级女性全黄久久生活片| 精品视频在线观看一区二区三区| 精品视频免费在线| 色综合久久久久综合体桃花网| 日韩av成人| 久久精品成人一区二区三区| 国产一级生活片| 999久久66久6只有精品| 午夜在线亚洲男人午在线| 精品视频在线观看免费| 日本伦理黄色大片在线观看网站| 国产美女在线一区二区三区| 亚洲不卡一区二区三区在线| 国产成人精品一区二区视频| 国产91精品系列在线观看| 黄视频网站在线免费观看| 日韩中文字幕一区二区不卡| 成人影院一区二区三区| 亚洲精品影院一区二区| 欧美另类videosbestsex视频 | 日本在线不卡视频| 国产一级生活片| 久久成人亚洲| 久久成人亚洲| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 精品国产一区二区三区精东影业| 日本特黄特黄aaaaa大片| 免费国产在线观看不卡| 台湾毛片| 四虎久久影院| 久久99中文字幕| 亚飞与亚基在线观看| 亚欧乱色一区二区三区| 麻豆系列国产剧在线观看| 四虎影视库| 黄视频网站在线免费观看| 国产高清视频免费观看| 91麻豆精品国产自产在线 | 国产视频在线免费观看| 亚欧成人乱码一区二区| 日本免费看视频| 国产美女在线一区二区三区|