def __init__(self, n_hidden=50, activation_func='tanh', max_memory=5000): self.n_hidden = n_hidden self.activation_func = activation_func self.model = OSELMRegressor(n_hidden=n_hidden, activation_func=activation_func) self.model_sec = SGDRegressor(D=6) self.memory = ExperienceReplay(max_memory) self.fitted = False
def __init__(self, n_hidden=50, activation_func='tanh'): self.n_hidden = n_hidden self.activation_func = activation_func self.model = OSELMRegressor(n_hidden=n_hidden, activation_func=activation_func) self.model_sec = SGDRegressor(D=6) self.buffer = [] self.fitted = False
class ELMRegressorACExperience(object): def __init__(self, n_hidden=50, activation_func='tanh', max_memory=5000): self.n_hidden = n_hidden self.activation_func = activation_func self.model = OSELMRegressor(n_hidden=n_hidden, activation_func=activation_func) self.model_sec = SGDRegressor(D=6) self.memory = ExperienceReplay(max_memory) self.fitted = False self.steps = 0 def partial_fit(self, x, y, e=None): # TODO: hacer algo con el valor de e! self.memory.add_state(tuple(x), y) if self.fitted is False or self.steps > self.n_hidden: # Then we have to wait until a number of 'n_hidden' samples arrives self.model_sec.partial_fit(x, y, e) if len(self.memory) >= self.n_hidden: # Now we can fit the model for first time, and from here start online learning train_data = self.memory.get_sample(max_items=self.n_hidden) x, y = [], [] for x_i, y_i in train_data: x.append(x_i) y.append(y_i) self.model.fit(X=x, y=np.asarray(y).ravel()) self.fitted = True self.steps = 0 else: # We can make online learning self.model.fit(X=x, y=np.asarray(y).ravel()) self.steps += 1 def predict(self, x): if self.fitted: y = self.model.predict(x) if isinstance(y, np.ndarray): y = y[0] else: y = self.model_sec.predict(x) if isinstance(y, np.ndarray): y = y[0] return y
class ELMRegressorAC(object): def __init__(self, n_hidden=50, activation_func='tanh'): self.n_hidden = n_hidden self.activation_func = activation_func self.model = OSELMRegressor(n_hidden=n_hidden, activation_func=activation_func) self.model_sec = SGDRegressor(D=6) self.buffer = [] self.fitted = False def partial_fit(self, x, y, e=None): # TODO: hacer algo con el valor de e! if self.fitted is False: # Then we have to wait until a number of 'n_hidden' samples arrives self.model_sec.partial_fit(x, y, e) self.buffer.append((x, y)) if len(self.buffer) >= self.n_hidden: # Now we can fit the model for first time, and from here start online learning x, y = [], [] for x_i, y_i in self.buffer: x.append(x_i) y.append(y_i) self.model.fit(X=x, y=np.asarray(y).ravel()) self.fitted = True else: # We can make online learning self.model.fit(X=x, y=np.asarray(y).ravel()) def predict(self, x): if self.fitted: y = self.model.predict(x) if isinstance(y, np.ndarray): y = y[0] else: y = self.model_sec.predict(x) if isinstance(y, np.ndarray): y = y[0] return y
class ELMRegressorExperience(object): def __init__(self, n_hidden=50, activation_func='tanh', max_memory=5000): self.n_hidden = n_hidden self.activation_func = activation_func self.model = OSELMRegressor(n_hidden=n_hidden, activation_func=activation_func) self.model_sec = SGDRegressor(D=6) self.memory = ExperienceReplay(max_memory) self.fitted = False def partial_fit(self, x, y, e=None): # TODO: hacer algo con el valor de e! self.model_sec.partial_fit(x, y, e) if x[0] < 1.0: # De-normalize x = [int(x_i * 255) for x_i in x] x = tuple(x) self.memory.add_state(x, y) if len(self.memory) >= self.n_hidden: train_data = self.memory.get_sample(max_items=self.n_hidden) x, y = [], [] for x_i, y_i in train_data: # Normalize x.append([i / 255.0 for i in x_i]) y.append(y_i) self.model.fit(X=x, y=np.asarray(y).ravel()) self.fitted = True def predict(self, x): if self.fitted: y = self.model.predict(x) if isinstance(y, np.ndarray): y = y[0] else: y = self.model_sec.predict(x) if isinstance(y, np.ndarray): y = y[0] return y
def test_oselm_regression_sequential(n_samples=2000, n_hidden=20, activation_func='tanh', plot=True): x, y = make_regression(n_samples=n_samples, n_targets=1, n_features=10) oselmr = OSELMRegressor(n_hidden=n_hidden, activation_func=activation_func) oselmr, y_pred = make_sequential_predictions(model=oselmr, x=x, y=y) if plot is True: import matplotlib.pyplot as plt axis_x = range(len(y)) plt.plot(axis_x, y, axis_x, y_pred) plt.show()
def __init__(self, n_hidden=50, max_memory=5000): self.n_hidden = n_hidden self.model = OSELMRegressor(n_hidden=n_hidden) self.model_sec = SGDRegressor(D=6) self.memory = ExperienceReplay(max_memory) self.fitted = False