tft每日頭條

 > 圖文

 > 狀态轉移矩陣的逆矩陣怎麼求

狀态轉移矩陣的逆矩陣怎麼求

圖文 更新时间:2025-04-29 10:54:10

狀态轉移矩陣的逆矩陣怎麼求?在了解清楚softmax函數的功能以及數學表達式的前提下,使用python對softmax函數實現如下:,下面我們就來聊聊關于狀态轉移矩陣的逆矩陣怎麼求?接下來我們就一起去了解一下吧!

狀态轉移矩陣的逆矩陣怎麼求(softmax函數矩陣計算的實現-為什麼使用矩陣轉置的方式)1

狀态轉移矩陣的逆矩陣怎麼求

在了解清楚softmax函數的功能以及數學表達式的前提下,使用python對softmax函數實現如下:

def softmax(x): if x.ndim == 2: x = x.T # np.max(x, axis=0) 獲取每列的最大值 x = x - np.max(x, axis=0) # np.sum(np.exp(x), axis=0) 計算每一列的和 y = np.exp(x) / np.sum(np.exp(x), axis=0) return y.T x = x - np.max(x) # 溢出對策 return np.exp(x) / np.sum(np.exp(x))

當你讀到這裡的時候,如果你此時沒弄清楚為什麼要使用裝置的方式來實現,本文後面的叙述可以解答你的困擾。

一般人實現softmax函數可能會寫出如下代碼:

def softmax(x): x = x - np.max(x) # 溢出處理 return np.exp(x) / np.sum(np.exp(x))

上面的代碼隻适合當x是一維的時候,當數據是二維或者其它的時候,更本不能實現。

然後你針對上面的問題,可能寫出如下代碼:

def s1(x): y = x - np.max(x, axis=1) return np.exp(y)/np.sum(np.exp(y), axis=1)

但這樣的實現是錯誤的,更本不能正常運行。接下來解釋原因:

if x.ndim == 2: x = x.T # np.max(x, axis=0) 獲取每列的最大值 x = x - np.max(x, axis=0) # np.sum(np.exp(x), axis=0) 計算每一列的和 y = np.exp(x) / np.sum(np.exp(x), axis=0) return y.T # 為什麼這裡要這樣實現? 使用轉置的方式 # 假設不用轉置的方式實現,輸入數據為n行m列的矩陣 # 對每一行進行溢出處理,需要使用如下方法 # max = np.max(x, axis=1) # c = x - max,表示對x的每一行減去行最大值 # 此時 x 的形狀為n行m列,max的形狀為n個元素的一維 # 所以 x - max 不能進行運算 # 使用如上轉置方式,同樣分析 # x 為n行m列, 則y 為m行n列 # 此時再求 max = np.max(y, axis=0) 就要按照列求最大值 # 因為此時一列才是原來的一個樣本數據 # 此時max 的形狀為有n個元素的一維 # y - max 可以計算 # 最後結果轉置即為原來的結果

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved