def quick_statespace(model_dir): """Quick state space analysis using simply PCA.""" rules = ['contextdm1', 'contextdm2'] h_lastts = dict() model = Model(model_dir) hp = model.hp with tf.Session() as sess: model.restore() for rule in rules: # Generate a batch of trial from the test mode trial = generate_trials(rule, hp, mode='test') feed_dict = tools.gen_feed_dict(model, trial, hp) h = sess.run(model.h, feed_dict=feed_dict) lastt = trial.epochs['stim1'][-1] h_lastts[rule] = h[lastt,:,:] from sklearn.decomposition import PCA model = PCA(n_components=5) model.fit(np.concatenate(h_lastts.values(), axis=0)) fig = plt.figure(figsize=(2,2)) ax = fig.add_axes([.3, .3, .6, .6]) for rule, color in zip(rules, ['red', 'blue']): data_trans = model.transform(h_lastts[rule]) ax.scatter(data_trans[:, 0], data_trans[:, 1], s=1, label=rule_name[rule], color=color) plt.tick_params(axis='both', which='major', labelsize=7) ax.set_xlabel('PC 1', fontsize=7) ax.set_ylabel('PC 2', fontsize=7) lg = ax.legend(fontsize=7, ncol=1, bbox_to_anchor=(1,0.3), loc=1, frameon=False) if save: plt.savefig('figure/choiceatt_quickstatespace.pdf',transparent=True)
def run_experiments(): experiments_hyper_params = json.load(open(hyper_params_path)) for params in experiments_hyper_params: name = params.pop('name') layers_dims = params.pop('layers') layers_dims[-2]['num_nodes'] = NUM_CATEGORIES model = Model(X_train.shape[1], layers_dims, model_name=name) model.fit(X_train, X_val, y_train, y_val, **params) _predict_test(model, name)