我有這class Input
Model.py
中定義,現在在同一個文件中我有另一個類和一個單獨的功能,在這兩個我叫class Input
。多個類調用相同的輸出
在Model.py
我有2類 - MLP
和Input
和一個單獨的function iter_minibatches
。在MLP類中,我使用這個語句Inp = Input(traindata).X
,它返回一個二維數組(例如5000 * 2100)。然後在另一個模塊base.py
我調用function iter_minibatches
其中我想Inp
相同的值作爲輸入傳遞給函數(iter_minibatches)或我想要在函數的開頭(iter_minibatches)分配相同的值,所以我嘗試調用iter_minibatches
中的同一個類,但是因爲我使用隨機函數進行排列,所以得到不同的輸出(例如5000 * 2102),但我的要求是在函數iter_minibatches中也獲得相同的值。
現在我想要同樣的值X應該從這兩個調用中返回。那我該怎麼做?
class Input(object):
def __init__(self, X):
self.step = 1.0
self.noise = 1.0
self.triuind = (np.arange(23)[:,np.newaxis] <= np.arange(23)[np.newaxis,:]).flatten()
self.max = 0
for _ in range(10): self.max = np.maximum(self.max,self.realize(X).max(axis=0))
X = self.expand(self.realize(X))
X.append(X)
self.nbout = X.shape[1]
self.mean = X.mean(axis=0)
self.std = (X - self.mean).std()
self.X = X
def realize(self,X):
def _realize_(x):
inds = np.argsort(-(x**2).sum(axis=0)**.5+np.random.normal(0,self.noise,x[0].shape))
x = x[inds,:][:,inds]*1
x = x.flatten()[self.triuind]
return x
return np.array([_realize_(z) for z in X])
def expand(self,X):
Xexp = []
for i in range(X.shape[1]):
for k in np.arange(0,self.max[i]+self.step,self.step):
Xexp += [np.tanh((X[:, i]-k)/self.step)]
return np.array(Xexp).T
這是不明確的。請詳細說明您想要達到的目標以及您期望的輸出。 –
我不確定我是否理解這個問題。你想要從哪個電話返回?哪個'X'(你在展示的代碼的不同時間分配給'X'的幾個不同的值)?如果你正在討論調用類(如'foo = Input(something)'),你將得到'Input'實例,而不是任何返回值。您可以將該實例分配給一個變量並訪問其方法和屬性(包括'X'屬性)。 – Blckknght
在Model.py我有2個類 - MLP和輸入和一個單獨的函數iter_minibatches。 在類MLP,我使用此語句INP =輸入(traindata).X它返回一個2維陣列 然後在功能iter_minibatches我想有INP的相同的值,所以我試圖調用同一類,但因爲我使用隨機函數獲得不同的輸出 但我的要求是在函數中獲得相同的值iter_minibatches –