def __init__(self, layers, up_weights=None, down_weights=None): '''Initializes a BN from the layers given''' self.numlayers = len(layers) down_layers = [layer.__class__.from_layer(layer) for layer in layers[::-1]]#Copy list so that upnet and downnet layers are different objects self.upnet = NeuralNet(layers, up_weights) self.downnet = NeuralNet(down_layers, down_weights)
def main(): parser = argparse.ArgumentParser(description='Deblur image') parser.add_argument('-d','--data', help='Input data image') parser.add_argument('-o','--output', help='Output image') #START: Stage 0 load the image args = parser.parse_args() input_name = args.data img = cv2.imread(input_name) fig = plt.figure() ax1 = fig.add_subplot(2,2,1) ax1.imshow(img) #Stage 1 add padding img,y,x = add_padding(img) #Stage 2 openCV optimization #Stage 3 Machine Learning Deblur model = NeuralNet() img = model.predict(img) #Stage 4 More openCV #End ax2 = fig.add_subplot(2,2,2) img = remove_padding(img,x,y) ax2.imshow(img) plt.show()
def get_net(self): net = NeuralNet(self.layer_spec, self.activation_function, self.regularisation_coefficient) if self.persistence_id: persist = Persist(self.persistence_id) if persist.exists(): persist.load(net) print 'Loaded network from', persist.get_filename() return net
from_type3 = type3[0:n_inputs] from_type3_targets = type3_targets[0:n_inputs] from_type4 = type4[0:n_inputs] from_type4_targets = type4_targets[0:n_inputs] inputs = torch.cat((from_type1, from_type2, from_type3, from_type4), 0 ) targets = torch.cat( (from_type1_targets,from_type2_targets,from_type3_targets,from_type4_targets) ,0) args = dict() args['n_inputs'] = n_inputs args['n_neurons'] = n_neurons # Model net = NeuralNet(hidden_neurons=args['n_neurons']) criterion = nn.MSELoss(reduction="mean") optimizer = optim.SGD(net.parameters(), lr=learning_rate) hold_loss=[] EPOCHS = math.ceil(K /(n_inputs * 4)) # prog_bar = Bar('Training...', suffix='%(percent).1f%% - %(eta)ds - %(index)d / %(max)d', max=EPOCHS ) # Train loop for epoch in range(0, EPOCHS): running_loss = 0.0 # Batch gradient descent optimizer.zero_grad() output = net(inputs) loss = criterion(output, targets)
def train_alphazero(lr, dropout, num_channels, epochs, batch_size, replay_buffer_size, temp_decrese_moves, mcts_rollouts, n_episodes_per_iteration, eval, model, test): board = Game(player_turn=1) network = NeuralNet(board, num_channels, lr, dropout, epochs, batch_size) if model is not None: print("Loading {}".format(model)) network.load(model) if test: while True: while board.turn_player() == -1: move = np.argmax(network(board, board.valid_moves())[0][0]) print("Board {}, move {}".format(board.board(), move)) board.move(move) print("{}".format(board.board())) import pdb pdb.set_trace() # set up the experiment experiment = Experiment( api_key=os.environ.get('ALPHAZERO_API_KEY'), project_name=os.environ.get('ALPHAZERO_PROJECT_NAME'), workspace=os.environ.get('ALPHAZERO_WORKSPACE')) experiment.log_multiple_params({ 'lr': lr, 'dropout': dropout, 'num_channels': num_channels, 'epochs': epochs, 'batch_size': batch_size, 'replay_buffer_size': replay_buffer_size, 'temp_decrese_moves': temp_decrese_moves, 'mcts_rollouts': mcts_rollouts, 'n_episodes_per_iteration': n_episodes_per_iteration }) buf = ReplayBuffer(replay_buffer_size, batch_size) epoch = 0 while True: epoch += 1 print("Epoch {}, {}".format(epoch, time.clock())) for i in range(n_episodes_per_iteration): winner = execute_episode(network, buf, experiment) print("Finished episode {}, winner {}, time {}".format( i, winner, time.clock())) network.clone() loss, entropy = train_network(network, buf, experiment) print("Training loss: {}, entropy: {}".format(loss, entropy)) won_counter = evaluate_network(network, board, 10) if won_counter >= 5: print("Performance improved, {} games won".format(won_counter)) network.save() else: print("Performance decreased, {} games won".format(won_counter)) network.revert_network()
def main(): nn = NeuralNet(64,20,2) nn.train(PATTERNS, iterations=1000) print nn.show(TESTS)