def train(self, num_epochs=10): data = Dataloader(batchsize=self.batch_size) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) train_X, _ = data.getTrainData() num_tr_iter = int(train_X.shape[0] / self.batch_size) global_step = 0 Loss = [] Acc = [] for epoch in range(num_epochs): print("-------------------------------") print("Training epoch: {}".format(epoch + 1)) data.i = 0 acc = np.zeros(num_tr_iter) loss = np.zeros(num_tr_iter) for iteration in range(num_tr_iter): global_step += 1 x_batch, y_batch = data.nextBatch() # Run optimization op (backprop) feed_dict_batch = { self.Model.inputs: x_batch, self.Model.labels: y_batch, } sess.run(self.Model.train_op, feed_dict=feed_dict_batch) if iteration % 3 == 0: # Calculate and display the batch loss and accuracy loss_batch, acc_batch = sess.run( [self.Model.loss, self.Model.accuracy], feed_dict=feed_dict_batch, ) print( "iter {0:3d}:\t Loss={1:.2f},\tTraining Accuracy={2:.01%}" .format(iteration, loss_batch, acc_batch)) acc[iteration] = acc_batch loss[iteration] = loss_batch x_valid, y_valid = data.getValiData() val_loss, val_acc = sess.run( [self.Model.loss, self.Model.accuracy], feed_dict={ self.Model.inputs: x_valid, self.Model.labels: y_valid }, ) print( "Epoch: {0}, validation loss: {1:.2f}, validation accuracy: {2:.01%}" .format(epoch + 1, val_loss, val_acc)) acc, loss = np.mean(acc), np.mean(loss) Loss.append(loss) Acc.append(acc) x_test, y_test = data.getTestData() feed_dict_test = { self.Model.inputs: x_test, self.Model.labels: y_test } test_loss, test_acc = sess.run( [self.Model.loss, self.Model.accuracy], feed_dict=feed_dict_test) print("--------------------") print("Test loss: {0:.2f}, test accuracy: {1:.01%}".format( test_loss, test_acc)) return Loss, Acc
import numpy as np import tensorflow as tf from DataLoader import Dataloader data = Dataloader(batchsize=32) train_X, train_Y = data.getTrainData() test_X, test_Y = data.getTestData() valid_X, valid_Y = data.getValiData() label_num = train_Y.shape[0] * train_Y.shape[1] + test_Y.shape[ 0] * test_Y.shape[1] + valid_Y.shape[0] * valid_Y.shape[1] label_1_num = np.sum(train_Y) + np.sum(test_Y) + np.sum(valid_Y) pass