def create_network(window, input): network_first = create_regressor(batchsize=batchsize, window=window, input=input, dropout=0.0) network_second = create_core(batchsize=batchsize, window=window, dropout=0.0, depooler=lambda x, **kw: x / 2) network_second.load(np.load('network_core.npz')) network = Network(network_first, network_second[1], params=network_first.params) network.load(np.load('network_regression.npz')) return network_first, network_second, network
def create_network(batchsize, window): network = create_core(batchsize=batchsize, window=window, dropout=0.0, depooler=lambda x,**kw: x/2, rng=rng) network.load(np.load('network_core.npz')) return network
from constraints import constrain, foot_sliding, joint_lengths, trajectory, multiconstraint rng = np.random.RandomState(413342) X = np.load('../data/processed/data_cmu.npz')['clips'] X = np.swapaxes(X, 1, 2).astype(theano.config.floatX) preprocess = np.load('preprocess_core.npz') X = (X - preprocess['Xmean']) / preprocess['Xstd'] batchsize = 1 window = X.shape[2] X = theano.shared(X, borrow=True) network = create_core(batchsize=batchsize, window=window, dropout=0.0, depooler=lambda x,**kw: x/2) network.load(np.load('network_core.npz')) from AnimationPlot import animation_plot for _ in range(10): index = rng.randint(X.shape[0].eval()) Xorgi = np.array(X[index:index+1].eval()) Xnois = Xorgi.copy() Xnois[:,16*3-1:17*3] = 0.0 Xrecn = np.array(network(Xnois).eval()) Xorgi = (Xorgi * preprocess['Xstd']) + preprocess['Xmean'] Xnois = (Xnois * preprocess['Xstd']) + preprocess['Xmean'] Xrecn = (Xrecn * preprocess['Xstd']) + preprocess['Xmean']
#feet = np.array([12,13,14,15,16,17,24,25,26,27,28,29]) feet = np.array([27,28,29]) Xmean = X.mean(axis=2).mean(axis=0)[np.newaxis,:,np.newaxis] #Xmean=(1,73,1) print('X mean shape:' ,Xmean.shape) Xmean[:,-7:-4] = 0.0 Xmean[:,-4:] = 0.5 Xstd = np.array([[[X.std()]]]).repeat(X.shape[1], axis=1) Xstd[:,feet] = 0.9 * Xstd[:,feet] Xstd[:,-7:-5] = 0.9 * X[:,-7:-5].std() Xstd[:,-5:-4] = 0.9 * X[:,-5:-4].std() Xstd[:,-4:] = 0.5 np.savez_compressed('preprocess_core.npz', Xmean=Xmean, Xstd=Xstd) X = (X - Xmean) / Xstd I = np.arange(len(X)) rng.shuffle(I); X = X[I] print(X.shape) E = theano.shared(X, borrow=True) batchsize = 1 network = create_core(rng=rng, batchsize=batchsize, window=X.shape[2]) trainer = AdamTrainer(rng=rng, batchsize=batchsize, epochs=100, alpha=0.00001) trainer.train(network, E, E, filename='network_core.npz')
preprocess = np.load('preprocess_core.npz') X = (X - preprocess['Xmean']) / preprocess['Xstd'] Y = X[:, -7:] I = np.arange(len(X)) rng.shuffle(I) X, Y = X[I], Y[I] print(X.shape, Y.shape) batchsize = 1 network_second = create_core(batchsize=batchsize, window=X.shape[2], dropout=0.0, depooler=lambda x, **kw: x / 2) network_second.load(np.load('network_core.npz')) network_first = create_regressor(batchsize=batchsize, window=X.shape[2], input=Y.shape[1]) network = Network(network_first, network_second[1], params=network_first.params) X = theano.shared(X, borrow=True) Y = theano.shared(Y, borrow=True) trainer = AdamTrainer(rng=rng, batchsize=batchsize, epochs=250, alpha=0.00001) trainer.train(network, Y, X, filename='network_regression.npz')