python純函式 Numpy純函式的效能,快取

2021-10-11 16:53:19 字數 1692 閱讀 1413

這些函式已經存在於scipy中。sigmoid函式可用作^{}。in [36]: from scipy.special import expit

將expit與向量化乙狀結腸功能進行比較:in [38]: x = np.linspace(-6, 6, 1001)

in [39]: %timeit y = sigmoid(x)

100 loops, best of 3: 2.4 ms per loop

in [40]: %timeit y = expit(x)

10000 loops, best of 3: 20.6 µs per loop

expit也比自己實現公式快:in [41]: %timeit y = 1.0 / (1.0 + np.exp(-x))

10000 loops, best of 3: 27 µs per loop

logistic分布的cdf是乙狀結腸的功能。它可用作scipy.stats.logistic的cdf方法,但cdf最終呼叫expit,因此使用該方法沒有意義。您可以使用pdf方法計算sigmoid函式的導數,也可以使用_pdf方法計算sigmoid函式的導數,該方法開銷較小,但「自己滾動」速度更快:in [44]: def sigmoid_grad(x):

....: ex = np.exp(-x)

....: y = ex / (1 + ex)**2

....: return y

計時(x的長度為1001):in [45]: from scipy.stats import logistic

in [46]: %timeit y = logistic._pdf(x)

10000 loops, best of 3: 73.8 µs per loop

in [47]: %timeit y = sigmoid_grad(x)

10000 loops, best of 3: 29.7 µs per loop

如果要使用非常接近尾端的值,請小心實現。指數函式很容易溢位。logistic._cdf比我快速實現的sigmoid_grad更健壯一些:in [60]: sigmoid_grad(-500)

/home/warren/anaconda/bin/ipython:3: runtimewarning: overflow encountered in double_scalars

import sys

out[60]: 0.0

in [61]: logistic._pdf(-500)

out[61]: 7.1245764067412855e-218

使用sech**2(1/cosh**2)的實現比上面的sigmoid_grad慢一點:in [101]: def sigmoid_grad_sech2(x):

.....: y = (0.5 / np.cosh(0.5*x))**2

.....: return y

in [102]: %timeit y = sigmoid_grad_sech2(x)

10000 loops, best of 3: 34 µs per loop

但它能更好地處理尾巴:in [103]: sigmoid_grad_sech2(-500)

out[103]: 7.1245764067412855e-218

in [104]: sigmoid_grad_sech2(500)

out[104]: 7.1245764067412855e-218

python純函式,偏函式

純函式 乙個函式的返回結果只依賴於他的引數,並且只執行過程裡面沒有 我們就把這個函式叫做純函式 即函式不讀取 修改外部變數,全域性變數。3個原則 變數都只在函式作用域內獲取,作為函式的引數傳入 不會產生 不會改變被傳入的資料或者其他資料 全域性變數 相同的輸入保證相同的輸出 是指函式被呼叫,完成可函...

純函式,快取函式

不純的函式具有 下面以之前的計稅函式以例進行說明 var percentvalue 5 var calculatetax value 複製 這個函式不是純函式,主要因為它以來外部環境計算其邏輯,當外部環境改變時,它會影響結果。因此,純函式的主要特徵就是不依賴於任何外部變數,也不應該改變任何外部變數。...

Python高階 純函式 內建函式 匿名函式

純函式 乙個函式的返回結果只依賴於它的引數,並且在執行過程裡面沒有 純函式的3個原則 1 變數都只在函式作用域內獲取,作為函式的引數傳入 2 不會產生 不會改變被傳入的資料或者其它資料 全域性變數 3 相同的輸入保證相同的輸出 內建函式 python有很多內建函式,常用的有 1 map函式 會根據提...