如何用Python計算Softmax?

2021-09-07 19:40:16 字數 1318 閱讀 7687

softmax函式,或稱歸一化指數函式,它能將乙個含任意實數的k維向量z「壓縮」到另乙個k維實向量\(\sigma\)中,使得每乙個元素的範圍都在(0,1)之間,並且所有元素的和為1。該函式的形式通常按下面的式子給出:

\[ \sigma=\frac}^ e^} \quad for \, j = 1, ..., k\]

輸入向量 [1,2,3,4,1,2,3]對應的softmax函式的值為[0.024,0.064,0.175,0.475,0.024,0.064,0.175]。輸出向量中擁有最大權重的項對應著輸入向量中的最大值「4」。

這也顯示了這個函式通常的意義:對向量進行歸一化,凸顯其中最大的值並抑制遠低於最大值的其他分量。

下面是使用python進行函式計算的示例**:

import math

z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]

z_exp = [math.exp(i) for i in z]

print(z_exp) # result: [2.72, 7.39, 20.09, 54.6, 2.72, 7.39, 20.09]

sum_z_exp = sum(z_exp)

print(sum_z_exp) # result: 114.98

softmax = [round(i / sum_z_exp, 3) for i in z_exp]

print(softmax) # result: [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]

[2.718281828459045, 7.38905609893065, 20.085536923187668, 54.598150033144236, 2.718281828459045, 7.38905609893065, 20.085536923187668]

114.98389973429897

[0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]

python使用numpy計算的示例**:

import numpy as np

z = np.array([1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0])

print(np.exp(z)/sum(np.exp(z)))

[0.02364054 0.06426166 0.1746813  0.474833   0.02364054 0.06426166

0.1746813 ]

如何用python計算方程式

互動模式 1 from scipy.optimize import fsolve 23 my str input 輸入要求解的變數 如 x or xy or xyz n 4 my list list my str 5 calc str input 輸入方程式 乘方用 表示 如 x 2 n多個方程式之...

如何用cublas計算逆矩陣?

cublas的文件中提供了乙個用lu分解求逆矩陣的方法,需要用到兩個函式 第乙個函式用於做lu分解,第二個函式把lu分解的結果變為逆矩陣。但官方文件對這兩個函式的用法語焉不詳,我花了幾個小時才把這個問題搞定。主要遇到兩個問題 函式有乙個引數是 const float 型別,直接把 float 指標傳...

如何用Python操作Redis

想要用python操作redis,就要掌握虛擬環境redis安裝以及開啟redis伺服器的命令.具體操作如下 伺服器端的命令為redis server 可以使用help檢視幫助文件 redis server help 推薦使用服務的方式管理redis服務 啟動 sudo service redis ...