python类hsplit()的实例源码

gated_rnn_test.py 文件源码 项目:sonnet 作者: deepmind 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def testPeephole(self):
    batch_size = 5
    hidden_size = 20

    # Initialize the rnn and verify the number of parameter sets.
    inputs = tf.placeholder(tf.float32, shape=[batch_size, hidden_size])
    prev_cell = tf.placeholder(tf.float32, shape=[batch_size, hidden_size])
    prev_hidden = tf.placeholder(tf.float32, shape=[batch_size, hidden_size])
    lstm = snt.LSTM(hidden_size, use_peepholes=True)
    _, next_state = lstm(inputs, (prev_hidden, prev_cell))
    next_hidden, next_cell = next_state
    lstm_variables = lstm.get_variables()
    self.assertEqual(len(lstm_variables), 5, "LSTM should have 5 variables")

    # Unpack parameters into dict and check their sizes.
    param_map = {param.name.split("/")[-1].split(":")[0]:
                 param for param in lstm_variables}
    self.assertShapeEqual(np.ndarray(4 * hidden_size),
                          param_map[snt.LSTM.B_GATES].initial_value)
    self.assertShapeEqual(np.ndarray((2 * hidden_size, 4 * hidden_size)),
                          param_map[snt.LSTM.W_GATES].initial_value)
    self.assertShapeEqual(np.ndarray(hidden_size),
                          param_map[snt.LSTM.W_F_DIAG].initial_value)
    self.assertShapeEqual(np.ndarray(hidden_size),
                          param_map[snt.LSTM.W_I_DIAG].initial_value)
    self.assertShapeEqual(np.ndarray(hidden_size),
                          param_map[snt.LSTM.W_O_DIAG].initial_value)

    # With random data, check the TF calculation matches the Numpy version.
    input_data = np.random.randn(batch_size, hidden_size)
    prev_hidden_data = np.random.randn(batch_size, hidden_size)
    prev_cell_data = np.random.randn(batch_size, hidden_size)

    with self.test_session() as session:
      tf.global_variables_initializer().run()
      fetches = [(next_hidden, next_cell),
                 param_map[snt.LSTM.W_GATES],
                 param_map[snt.LSTM.B_GATES],
                 param_map[snt.LSTM.W_F_DIAG],
                 param_map[snt.LSTM.W_I_DIAG],
                 param_map[snt.LSTM.W_O_DIAG]]
      output = session.run(fetches,
                           {inputs: input_data,
                            prev_cell: prev_cell_data,
                            prev_hidden: prev_hidden_data})

    next_state_ex, w_ex, b_ex, wfd_ex, wid_ex, wod_ex = output
    in_and_hid = np.concatenate((input_data, prev_hidden_data), axis=1)
    real_gate = np.dot(in_and_hid, w_ex) + b_ex
    # i = input_gate, j = next_input, f = forget_gate, o = output_gate
    i, j, f, o = np.hsplit(real_gate, 4)
    real_cell = (prev_cell_data /
                 (1 + np.exp(-(f + lstm._forget_bias +
                               wfd_ex * prev_cell_data))) +
                 1 / (1 + np.exp(-(i + wid_ex * prev_cell_data))) * np.tanh(j))
    real_hidden = (np.tanh(real_cell + wod_ex * real_cell) *
                   1 / (1 + np.exp(-o)))

    self.assertAllClose(real_hidden, next_state_ex[0])
    self.assertAllClose(real_cell, next_state_ex[1])
convert_to_records.py 文件源码 项目:pit-speech-separation 作者: snsun 项目源码 文件源码 阅读 34 收藏 0 点赞 0 评论 0
def convert_cmvn_to_numpy(inputs_cmvn, labels_cmvn):
  if FLAGS.labels_cmvn !='':
    """Convert global binary ark cmvn to numpy format."""
    tf.logging.info("Convert %s and %s to numpy format" % (
        inputs_cmvn, labels_cmvn))
    inputs_filename = FLAGS.inputs_cmvn
    labels_filename = FLAGS.labels_cmvn

    inputs = read_binary_file(inputs_filename, 0)
    labels = read_binary_file(labels_filename, 0)

    inputs_frame = inputs[0][-1]
    labels_frame = labels[0][-1]

    #assert inputs_frame == labels_frame

    cmvn_inputs = np.hsplit(inputs, [inputs.shape[1]-1])[0]
    cmvn_labels = np.hsplit(labels, [labels.shape[1]-1])[0]

    mean_inputs = cmvn_inputs[0] / inputs_frame
    stddev_inputs = np.sqrt(cmvn_inputs[1] / inputs_frame - mean_inputs ** 2)
    mean_labels = cmvn_labels[0] / labels_frame
    stddev_labels = np.sqrt(cmvn_labels[1] / labels_frame - mean_labels ** 2)

    cmvn_name = os.path.join(FLAGS.output_dir, "train_cmvn.npz")
    np.savez(cmvn_name,
             mean_inputs=mean_inputs,
             stddev_inputs=stddev_inputs,
             mean_labels=mean_labels,
             stddev_labels=stddev_labels)

    tf.logging.info("Write to %s" % cmvn_name)
  else :
    """Convert global binary ark cmvn to numpy format."""
    tf.logging.info("Convert %s to numpy format" % (
        inputs_cmvn))
    inputs_filename = FLAGS.inputs_cmvn

    inputs = read_binary_file(inputs_filename, 0)

    inputs_frame = inputs[0][-1]


    cmvn_inputs = np.hsplit(inputs, [inputs.shape[1]-1])[0]

    mean_inputs = cmvn_inputs[0] / inputs_frame
    stddev_inputs = np.sqrt(cmvn_inputs[1] / inputs_frame - mean_inputs ** 2)

    cmvn_name = os.path.join(FLAGS.output_dir, "train_cmvn.npz")
    np.savez(cmvn_name,
             mean_inputs=mean_inputs,
             stddev_inputs=stddev_inputs)

    tf.logging.info("Write to %s" % cmvn_name)
USVM.py 文件源码 项目:uplift 作者: mustafaseisa 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def __init__(self, treatment, control):

        assert [type(treatment), type(control)] == [ndarray, ndarray] # numpy arrays only

        yt, Xt = hsplit(treatment, [1])
        yc, Xc = hsplit(control, [1])

        self._nt, mt = Xt.shape
        self._nc, mc = Xc.shape
        self._n = self._nc + self._nt # n is number of datum across both groups

        assert min(mt, mc, self._nt, self._nc) >= 1 and self._n >= 3 # data shouldn't be trivial
        assert mt == mc # same number of features in treatment and control

        self._m = mt # store number of features

        assert unique(yt).all() in [-1,1] and unique(yc).all() in [-1,1] # labels are binary

        tPlusIndex = where(yt.flatten() == 1.0)[0] # index for positive in treatment
        self._ntplus = len(tPlusIndex) # number of such points (length of index)
        tMinusIndex = delete(range(self._nt), tPlusIndex) # index for negative in treatment
        self._ntminus = self._nt - self._ntplus # number of such points

        self._Dtplus = Xt[tPlusIndex] # positive treatment datum
        self._Dtminus = Xt[tMinusIndex] # negative treatment datum

        cPlusIndex = where(yc.flatten() == 1.0)[0] # index for positive in control
        self._ncplus = len(cPlusIndex) # number of such points (length of index)
        cMinusIndex = delete(range(self._nc), cPlusIndex) # index for negative in control
        self._ncminus = self._nc - self._ncplus # number of such points

        self._Dcplus = Xc[cPlusIndex] # positive treatment datum
        self._Dcminus = Xc[cMinusIndex] # negative treatment datum

        # model parameters

        self.__optimized = False # indicator for whether otpimization routine was performed
        options['show_progress'] = False # supress optimization output

        self.w = None # hyperplane slope
        self.b1 = None # treatment group intercept
        self.b2 = None # control group intercept
        self.threshold = None # thresholding predictor function

        print("Successfully initialized.")
clustering.py 文件源码 项目:PyFusionGUI 作者: SyntaxVoid 项目源码 文件源码 阅读 43 收藏 0 点赞 0 评论 0
def __init__(self, instance_array_amps, n_clusters = 9, n_iterations = 20, n_cpus=1, start='random', kappa_calc='approx', hard_assignments = 0, kappa_converged = 0.1, mu_converged = 0.01, min_iterations=10, LL_converged = 1.e-4, verbose = 0, seed=None, norm_method = 'sum'):
        print 'EM_GMM_GMM2', instance_array_amps.shape
        self.settings = {'n_clusters':n_clusters,'n_iterations':n_iterations,'n_cpus':n_cpus,'start':start,
                         'kappa_calc':kappa_calc,'hard_assignments':hard_assignments, 'method':'EM_VMM_GMM'}
        #self.instance_array = copy.deepcopy(instance_array)
        self.instance_array_amps = instance_array_amps
        self.data_complex = norm_bet_chans(instance_array_amps, method = norm_method)
        print 'hello norm method',  norm_method
        self.data_complex = instance_array_amps/np.sum(instance_array_amps,axis = 1)[:,np.newaxis]
        self.input_data = np.hstack((np.real(self.data_complex), np.imag(self.data_complex)))
        self.n_dim = self.data_complex.shape[1]
        self.n_instances, self.n_dimensions = self.input_data.shape

        self.n_clusters = n_clusters; self.max_iterations = n_iterations; self.start = start
        self.hard_assignments = hard_assignments; self.seed = seed
        if self.seed == None: self.seed = os.getpid()
        print('seed,',self.seed)
        np.random.seed(self.seed)
        self.iteration = 1

        self._initialisation()
        self.convergence_record = []; converged = 0 
        self.LL_diff = np.inf
        while converged!=1:
            start_time = time.time()
            self._EM_VMM_GMM_expectation_step()
            if self.hard_assignments:
                print 'hard assignments'
                self.cluster_assignments = np.argmax(self.zij,axis=1)
                self.zij = self.zij *0
                for i in range(self.n_clusters):
                    self.zij[self.cluster_assignments==i,i] = 1

            valid_items = self.probs>(1.e-300)
            self.LL_list.append(np.sum(self.zij[valid_items]*np.log(self.probs[valid_items])))
            self._EM_VMM_GMM_maximisation_step()
            if (self.iteration>=2): self.LL_diff = np.abs(((self.LL_list[-1] - self.LL_list[-2])/self.LL_list[-2]))
            if verbose:
                print 'Time for iteration %d :%.2f, mu_convergence:%.3e, kappa_convergence:%.3e, LL: %.8e, LL_dif : %.3e'%(self.iteration,time.time() - start_time,self.convergence_mean, self.convergence_std, self.LL_list[-1],self.LL_diff)
            self.convergence_record.append([self.iteration, self.convergence_mean, self.convergence_std])
            mean_converged = mu_converged; std_converged = kappa_converged
            if (self.iteration > min_iterations) and (self.convergence_mean<mean_converged) and (self.convergence_std<std_converged) and (self.LL_diff<LL_converged):
                converged = 1
                print 'Convergence criteria met!!'
            elif self.iteration > n_iterations:
                converged = 1
                print 'Max number of iterations'
            self.iteration+=1
        print os.getpid(), 'Time for iteration %d :%.2f, mu_convergence:%.3e, kappa_convergence:%.3e, LL: %.8e, LL_dif : %.3e'%(self.iteration,time.time() - start_time,self.convergence_mean, self.convergence_std,self.LL_list[-1],self.LL_diff)
        #print 'AIC : %.2f'%(2*(mu_list.shape[0]*mu_list.shape[1])-2.*LL_list[-1])
        self.cluster_assignments = np.argmax(self.zij,axis=1)
        self.BIC = -2*self.LL_list[-1]+self.n_clusters*3*np.log(self.n_dimensions)
        gmm_means_re, gmm_means_im = np.hsplit(self.mean_list, 2)
        gmm_vars_re, gmm_vars_im = np.hsplit(self.std_list**2, 2)

        self.cluster_details = {'EM_GMM_means':self.mean_list, 'EM_GMM_variances':self.std_list**2,'BIC':self.BIC,'LL':self.LL_list, 
                                'EM_GMM_means_re':gmm_means_re, 'EM_GMM_variances_re':gmm_vars_re,
                                'EM_GMM_means_im':gmm_means_im, 'EM_GMM_variances_im':gmm_vars_im}


问题


面经


文章

微信
公众号

扫码关注公众号