Esempio n. 1
0
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())
Esempio n. 2
0
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',