我有这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 –