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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

四、One-hot和损失函数的应用

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四、One-hot和损失函数的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、One-hot是什么?
  • 二、應用場景
  • 三、One-hot創建方法(3種)
    • 1.for 循環生成
    • 2.arange遍歷方法
    • 3.scatter_方法
  • 四、總結


前言

今天閑來無事,因為學習人工智能的道路上遇到了很多問題,糾結從那個問題開始解決?但是不要緊,我已經有答案了。所以,我決定總結一下最近學習知識要點,以緩解緊張的學習氣氛。哈哈哈~~,來吧,進入正題。

/font>


提示:講一下數據預處理之One-Hot。以下是本篇文章正文內容,下面案例可供參考

一、One-hot是什么?

示例:對于這個問題,之前谷歌了一下,還涉及寄存器了(one-hot編碼是N位狀態寄存器為N個狀態進行編碼的方式)。。真的無語。這里不說那些很底層的,我們只需要了解one-hot編碼是將類別變量轉換為機器學習算法中容易處理的一種形式!
概念太抽象了,對太抽了,那么從實際例子來說明。
如下我們有兩個特征:

我們看到有兩個特證名為:animal與food,解釋一下兩列值意思,第一列代表的是動物的名字,第二列是食物的個數,比如第一行cat 2 描述為貓吃了兩個食物,這里是測試數據,主要是想通過,這些數據給予直觀的認識及實際操作。
而對上述數據做one-hot編碼后得結果為:

animal列數據類型是字符串,而第二列是數值型,如果我們能將這些特征值用0/1表示,是不是在機器學習中,對這些非連續值非常有幫助。綜上,我們推論出,如果你在處理的數據中,通過特征工程這一步操作,能夠將特征的類型判別出來,哪些是連續的,哪些是非連續的,那么我們就可以對它進行特殊處理,比如此處的one-hot編碼!

二、應用場景

在模型訓練中,常常會根據損失函數的大小作為訓練效果的好壞。通常會使用:

  1. 平均絕對誤差(MAEloss),
  2. 均方誤差(MSEloss),需要做one-hot以及加入softmax輸出函數。
  3. 二分類交叉熵(BCELoss),需要做one-hot以及加入softmax輸出函數。
  4. 二分類交叉熵(BCEWithLogitsLoss,對輸入值自動做sigmoid,但需要做one-hot。
  5. 多分類交叉熵(CrossEntropyLoss),自動對輸入數據做one-hot和softmax。

三、One-hot創建方法(3種)

1.for 循環生成

代碼如下(示例):

 def one_hot(w,h,arr):zero_arr = np.zeros([w,h])#w行,h列for i in range(w):j = int(arr[i])zero_arr[i][j]=1return zero_arrarr = np.array([5, 2, 8, 6])one_hot(len(arr),max(arr)+1,arr)

2.arange遍歷方法

該方法前提是:arr = np.array([5, 2, 8, 6])是這樣的類型,即數組類型。
代碼如下(示例):

#法1
arr = np.array([5, 2, 8, 6])
zero_arr = torch.zeros(len(arr),max(arr)+1)
zero_arr[torch.arange(len(arr)),arr]=1   #arange非常類似range函數
#或者一步到位
#法2
torch.zeros(len(arr), max(arr) + 1)[torch.arange(len(arr)),arr]=1

# 一級標題

3.scatter_方法

該方法前提是:arr = torch.tensor([5, 2, 8, 6])是這樣的類型,即張量(tensor)類型。
代碼如下(示例):

arr = torch.tensor([5, 2, 8, 6])torch_out =torch.zeros(len(arr),max(arr)+1).scatter_(1,arr.reshape(-1,1),1)
'''scatter_(input, dim, index, src)可以理解成放置元素或者修改元素
dim:沿著哪個維度進行索引. 一般為1-1
index:用來 scatter 的元素索引
src:用什么內容來修改交換,可以是一個標量或一個張量'''
'''reshape(-1,1)轉換成1列:
reshape(1,-1)轉化成1行:for
reshape(2,-1)轉換成兩行:
reshape(-1,2)轉化成兩列''';

四、總結

提示:這里對文章進行總結:
1.多分類交叉熵CrossEntropyLoss(),不需要做ong-hot,自動做onehot和softmax。
2.均方差MSELoss,需要做onehot和輸出函數。
3.二分類交叉熵BCELoss(),需要做onehot和輸出函數。
4.二分類交叉熵BCEWithLogitsLoss,onehot,但不用做輸出函數。

總結

以上是生活随笔為你收集整理的四、One-hot和损失函数的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

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