[英]mutiple calls with same args to python function outputs different return values
從我的角度來看,這一定是一個非常基本的誤解。 我有一個 function 根據隨機值返回插值 function。
fct = create_interp_fct(x,y)
現在fct是一個可調用的插值 function。 例如:
fct([0,0,0,0,0,0])
返回
array([[ 0.75894378, 0.72761319, -0.23003647, -0.34790905, -0.51531125,
-0.91211147]])
function大致定義如下:
def create_interp_fct(x,y):
u,v = compute_some_random_values(x,y)
return RegularGridInterpolator(u,v) #from from scipy.interpolate
問題是,如果我再次調用fct([0,0,0,0,0,0]) ,我會得到不同的 output。 因此很明顯,function 是根據新的隨機值重新定義的。 我的問題是:我如何使用fct以便每次調用它時都不會重新定義它? 想象一下fct的計算非常昂貴,但不能稱之為。 如何“保存”我當前計算的 function? 或者查看 scikit 中的所有機器學習內容(例如線性回歸等)。 如果我打電話
lr = lm.LinearRegression() # import sklearn.linear_model as lm
lr.fit(M,n)
你不能說我每次調用 lr.score(M,n) 時都會重新計算線性回歸?
以下示例中未復制來自給定fct
實例的非確定性 output 問題:
In [13]: paste
import numpy
from scipy.interpolate import RegularGridInterpolator
def compute_some_random_values(shape):
return [numpy.arange(extent) for extent in shape], numpy.random.uniform(0, 1, size=shape)
def create_interp_fct(shape):
u,v = compute_some_random_values(shape)
return RegularGridInterpolator(u,v) #from from scipy.interpolate
## -- End pasted text --
In [24]: fct = create_interp_fct([2,3,4,5,6,7])
In [25]: fct([0,0,0,0,0,0])
Out[25]: array([0.24572906])
In [26]: fct([0,0,0,0,0,0])
Out[26]: array([0.24572906])
In [27]: fct([0,0,0,0,0,0])
Out[27]: array([0.24572906])
In [28]: fct([0,0,0,0,0,0])
Out[28]: array([0.24572906])
我懷疑,在你的程序邏輯的某個地方,你已經在調用之間刷新了fct
,通過再次調用fct = create_interp_fct(...)
而沒有意識到它。 這自然會重新隨機化事物。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.