Skip to content
Snippets Groups Projects
Commit bf4dd1dd authored by Simone Rossi's avatar Simone Rossi
Browse files

[edit] Minor modifications

parent 8249f08a
No related branches found
No related tags found
No related merge requests found
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -57,7 +57,7 @@ class NeuralNetwork(object):
else:
self.W_hidden_to_output = np.random.uniform(size = (self.hidden_layer_size, self.output_layer_size)) / np.sqrt(self.hidden_layer_size)
def train(self, data, validation_data, iterations=50, learning_rate=5.0, verbose=False, batch_size=1):
def train(self, data, validation_data, iterations=50, learning_rate=5.0, verbose=False, batch_size=1, plot=True):
start_time = time.time()
training_accuracies = []
validation_accuracies = []
......@@ -69,14 +69,15 @@ class NeuralNetwork(object):
best_h2o_W = self.W_hidden_to_output
# SIMONE
for it in range(iterations):
error = [0]
error = []
for batch_index in range(0,len(inputs), batch_size): # SIMONE
inputs_batch = inputs[batch_index : min(batch_index+batch_size, len(inputs))]
targets_batch = targets[batch_index : min(batch_index+batch_size, len(targets))]
self.feedforward(inputs_batch)
self.backpropagate(targets_batch, learning_rate=learning_rate)
#error.append(list(targets - self.o_output))
error = np.array(error).flatten()
error.append(targets_batch - self.o_output)
error = np.concatenate(error).flatten()
error *= error
training_accuracies.append(100*self.predict(data)/len(data[0]))
validation_accuracies.append(100*self.predict(validation_data)/len(validation_data[0]))
......@@ -84,11 +85,14 @@ class NeuralNetwork(object):
best_i2h_W = self.W_input_to_hidden
best_h2o_W = self.W_hidden_to_output
if verbose:
print("[Iteration %2d/%2d] -Training_Accuracy: %2.2f %% -Validation_Accuracy: %2.2f %% -time: %2.2f " %(it+1, iterations,
training_accuracies[-1], validation_accuracies[-1], time.time() - start_time))
print(" - MSE:", np.sum(error)/len(targets))
print("Training time:", time.time()-start_time)
plot_train_val(range(1, iterations+1), training_accuracies, validation_accuracies, "Accuracy")
print("[Iteration %2d/%2d] -Training_Accuracy: %2.2f %% -Validation_Accuracy: %6.2f %% -time: %6.2f " %(it+1, iterations,
training_accuracies[-1], validation_accuracies[-1], time.time() - start_time), end=' ')
print(" - MSE: %.5f" % (np.sum(error)/len(targets)))
print("Training time: %.4f s" % (time.time()-start_time))
print('Final accurary: %6.2f%%' % validation_accuracies[-1])
if plot:
plot_train_val(range(1, iterations+1), training_accuracies, validation_accuracies, "Accuracy")
return validation_accuracies
def train_xe(self, data, validation_data, iterations=50, learning_rate=5.0, verbose=False):
start_time = time.time()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment