def FLVAE(epochs, latent_dim, X_train, X_test, train_dataset): model = VAE(latent_dim) for i in range(0, epochs): models = [] elbo = 0 for j in range(0, SPLIT_SIZE): print('Running data on node ', j + 1) current_model = model for train_x in X_train[j]: model.train_step(current_model, train_x, model.optimizer) loss = tf.keras.metrics.Mean() for test_x in X_test[j]: loss(model.compute_loss(current_model, test_x)) elbo = -loss.result() display.clear_output(wait=False) print('Epoch: {}, Test set ELBO: {}, clien-num: {}'.format(i, elbo, j)) # generate_and_save_images(current_model, i, j, test_sample) models.append(current_model) weights = [model.get_weights() for model in models] new_weights = list() for weights_list_tuple in zip(*weights): new_weights.append(np.array([np.array(w).mean(axis=0) for w in zip(*weights_list_tuple)])) model.set_weights(new_weights) # write code for accuracy loss = tf.keras.metrics.Mean() for train_x in train_dataset: loss(model.compute_loss(model, train_x)) print(loss.result())
from RNN import RNN from VAE import VAE from keras.preprocessing.sequence import pad_sequences import matplotlib.pyplot as plt import sys sys.path.append("..") import config dir_name = config.dir_name episode = config.episode frame = config.frame np.set_printoptions(precision=4, edgeitems=6, linewidth=100, suppress=True) vae = VAE() vae.set_weights(config.vae_weight) rnn = RNN() rnn.set_weights(config.rnn_weight) rnn_input = np.load(dir_name + '/rnn_input_0.npy') rnn_output = np.load(dir_name + '/rnn_output_0.npy') rnn_input = pad_sequences(rnn_input, maxlen=30, dtype='float32', padding='pre', truncating='pre') rnn_output = pad_sequences(rnn_output, maxlen=30, dtype='float32', padding='pre',