def compute_output(self, input_data, do_sampling=True): """ Compute hidden state :param input_data: numpy ndarray :param do_sampling: do binary sample or not :return: data representation in hidden space """ if len(input_data.shape) == 1: input_data.shape = (1, input_data.shape[0]) h = sigmoid(np.dot(np.c_[np.ones(input_data.shape[0]), input_data], np.vstack((self.b, self.W)))) if do_sampling: h = self.sample(h) return h
def compute_output(self, input_data, do_sampling=True): """ Compute hidden state :param input_data: numpy ndarray :param do_sampling: do binary sample or not :return: data representation in hidden space """ if len(input_data.shape) == 1: input_data.shape = (1, input_data.shape[0]) h = sigmoid( np.dot(np.c_[np.ones(input_data.shape[0]), input_data], np.vstack((self.b, self.W)))) if do_sampling: h = self.sample(h) return h
def generate_input(self, input_data, do_sampling=False, pois_N=None): """ Restore input data using hidden space representation :param input_data: data representation in hidden space :param do_sampling: do_sampling: do binary sample or not (doesn't matter in gaus-bin mode) :return: data representation in original space """ if self.mode == 'gaus-bin': return np.dot(np.c_[np.ones(input_data.shape[0]), input_data], np.vstack((self.a, self.W.T))) elif self.mode == 'pois-bin': e = np.exp(np.dot(np.c_[np.ones(input_data.shape[0]), input_data], np.vstack((self.a, self.W.T)))) if pois_N is None: return (e.T/np.sum(e, axis=1)).T else: return (e.T/((1/pois_N) * np.sum(e, axis=1))).T v = sigmoid(np.dot(np.c_[np.ones(input_data.shape[0]), input_data], np.vstack((self.a, self.W.T)))) if do_sampling: v = self.sample(v) return v
def generate_input(self, input_data, do_sampling=False, pois_N=None): """ Restore input data using hidden space representation :param input_data: data representation in hidden space :param do_sampling: do_sampling: do binary sample or not (doesn't matter in gaus-bin mode) :return: data representation in original space """ if self.mode == 'gaus-bin': return np.dot(np.c_[np.ones(input_data.shape[0]), input_data], np.vstack((self.a, self.W.T))) elif self.mode == 'pois-bin': e = np.exp( np.dot(np.c_[np.ones(input_data.shape[0]), input_data], np.vstack((self.a, self.W.T)))) if pois_N is None: return (e.T / np.sum(e, axis=1)).T else: return (e.T / ((1 / pois_N) * np.sum(e, axis=1))).T v = sigmoid( np.dot(np.c_[np.ones(input_data.shape[0]), input_data], np.vstack((self.a, self.W.T)))) if do_sampling: v = self.sample(v) return v
fig, ax = plt.subplots() ax.plot(t, Ricker, 'k', lw=2) ax.set(xlabel='time (s)', ylabel='Amplitude', title='Function approximation', ylim=(-0.8, 1.2), xlim=(-8, 8)) ax.grid() plt.savefig('Ricker.png', dpi=600) plt.show() #===================== activation functions =============================================== # Sigmoid activation function sigmo = sigmoid(t) fig, ax = plt.subplots() ax.plot(t, sigmo, 'r', lw=1) ax.set(title='Sigmoid function', ylim=(-0.1, 1.1), xlim=(-8, 8)) ax.grid() plt.savefig('Sigmoid.png', dpi=600) plt.show() # tanh activation function tan = tanh(t) fig, ax = plt.subplots() ax.plot(t, tan, 'r', lw=1) ax.set(title='Tanh function', ylim=(-1.1, 1.1), xlim=(-8, 8))
fig, ax = plt.subplots() ax.plot(X, Ricker, 'k', lw=4) ax.set(xlabel='time (s)', ylabel='Amplitude', title='Function approximation', ylim=(-0.8, 1.2), xlim=(-8, 8)) ax.grid() #plt.savefig('Ricker.png',dpi=600) plt.show() #===================== activation functions =============================================== # Sigmoid activation function sigmo = sigmoid(X) fig, ax = plt.subplots() ax.plot(X, sigmo, 'r', lw=4) ax.set(title='Sigmoid function', ylim=(-0.1, 1.1), xlim=(-8, 8)) ax.grid() plt.savefig('Sigmoid.png', dpi=600) plt.show() # tanh activation function tan = tanh(X) fig, ax = plt.subplots() ax.plot(X, tan, 'r', lw=4) ax.set(title='Tanh function', ylim=(-1.1, 1.1), xlim=(-8, 8))