def main(_): # create a shared session between Keras and Tensorflow policy_sess = tf.Session() K.set_session(policy_sess) NUM_LAYERS = 3 # number of layers of the state space MAX_TRIALS = 250 # maximum number of models generated MAX_EPOCHS = 60 # maximum number of epochs to train BATCHSIZE = 100 # batchsize EXPLORATION = 0.5 # high exploration for the first 1000 steps REGULARIZATION = 1e-3 # regularization strength CONTROLLER_CELLS = 32 # number of cells in RNN controller CLIP_REWARDS = False # clip rewards in the [-0.05, 0.05] range RESTORE_CONTROLLER = True # restore controller to continue training # construct a state space state_space = StateSpace() # add states #state_space.add_state(name='kernel', values=[3]) state_space.add_state(name='filters', values=[30, 60, 100, 144]) #state_space.add_state(name='stride', values=[1]) # print the state space being searched state_space.print_state_space() previous_acc = 0.0 total_reward = 0.0 with policy_sess.as_default(): # create the Controller and build the internal policy network controller = Controller(policy_sess, NUM_LAYERS, state_space, reg_param=REGULARIZATION, exploration=EXPLORATION, controller_cells=CONTROLLER_CELLS, restore_controller=RESTORE_CONTROLLER) print('done') # create the Network Manager manager = NetworkManager(FLAGS, clip_rewards=CLIP_REWARDS) # get an initial random state space if controller needs to predict an # action from the initial state state = state_space.get_random_state_space(NUM_LAYERS) print("Initial Random State : ", state_space.parse_state_space_list(state)) #print() # train for number of trails for trial in range(MAX_TRIALS): with policy_sess.as_default(): actions = controller.get_action( state) # get an action for the previous state # print the action probabilities state_space.print_actions(actions) print("Predicted actions : ", state_space.parse_state_space_list(actions)) # build a model, train and get reward and accuracy from the network manager reward, previous_acc = manager.get_rewards( model_fn_cnn, state_space.parse_state_space_list(actions)) print("Rewards : ", reward, "Accuracy : ", previous_acc) with policy_sess.as_default(): total_reward += reward print("Total reward : ", total_reward) # actions and states are equivalent, save the state and reward state = actions controller.store_rollout(state, reward) # train the controller on the saved state and the discounted rewards loss = controller.train_step() print("Trial %d: Controller loss : %0.6f" % (trial + 1, loss)) # write the results of this trial into a file with open('train_history.csv', mode='a+') as f: data = [previous_acc, reward] data.extend(state_space.parse_state_space_list(state)) writer = csv.writer(f) writer.writerow(data) print() print("Total Reward : ", total_reward)
NUM_LAYERS = 4 # number of layers of the state space MAX_TRIALS = 200 # maximum number of models generated MAX_EPOCHS = 10 # maximum number of epochs to train CHILD_BATCHSIZE = 128 # batchsize of the child models EXPLORATION = 0.8 # high exploration for the first 1000 steps REGULARIZATION = 1e-3 # regularization strength CONTROLLER_CELLS = 32 # number of cells in RNN controller EMBEDDING_DIM = 20 # dimension of the embeddings for each state ACCURACY_BETA = 0.8 # beta value for the moving average of the accuracy CLIP_REWARDS = 0.0 # clip rewards in the [-0.05, 0.05] range RESTORE_CONTROLLER = True # restore controller to continue training # construct a state space state_space = StateSpace() # add states state_space.add_state(name='kernel', values=[1, 3]) state_space.add_state(name='filters', values=[16, 32, 64]) # print the state space being searched state_space.print_state_space() # prepare the training data for the NetworkManager (x_train, y_train), (x_test, y_test) = cifar10.load_data() x_train = x_train.astype('float32') / 255. x_test = x_test.astype('float32') / 255. y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10)
# NUM_LAYERS = 4 # number of layers of the state space NUM_LAYERS = 2 # number of layers of the state space MAX_TRIALS = 1000 # maximum number of models generated MAX_EPOCHS = 10 # maximum number of epochs to train CHILD_BATCHSIZE = 128 # batchsize of the child models EXPLORATION = 0.8 # high exploration for the first 1000 steps REGULARIZATION = 1e-3 # regularization strength CONTROLLER_CELLS = 32 # number of cells in RNN controller EMBEDDING_DIM = 20 # dimension of the embeddings for each state ACCURACY_BETA = 0.8 # beta value for the moving average of the accuracy CLIP_REWARDS = 0.0 # clip rewards in the [-0.05, 0.05] range RESTORE_CONTROLLER = True # restore controller to continue training # construct a state space state_space = StateSpace() # add states state_space.add_state(name='aggType', values=[0, 1, 2, 3, 4]) state_space.add_state(name='aggType', values=[ "sigmoid", "tanh", "relu", "linear", "softplus", "leaky_relu", "relu6" ]) # print the state space being searched state_space.print_state_space() previous_acc = 0.0 total_reward = 0.0
ACCURACY_BETA = 0.8 # beta value for the moving average of the accuracy CLIP_REWARDS = 0.0 # clip rewards in the [-0.05, 0.05] range EXPLORATION = 0.8 # high exploration for the first 1000 steps REGULARIZATION = 1e-3 # regularization strength CONTROLLER_CELLS = 60 # number of cells in RNN controller EMBEDDING_DIM = 20 # dimension of the embeddings for each state RESTORE_CONTROLLER = True # restore controller to continue training # clear the previous files remove_files() # construct a state space state_space = StateSpace() # add states # state_space.add_state(name='road', values=[0, 1, 2, 3, 4]) # state_space.add_state(name='time', values=[0, 1, 2]) # state_space.add_state(name='weather', values=[0, 1, 2, 3, 4, 5]) # state_space.add_state(name='scene-tunnel', values=[0, 1]) # state_space.add_state(name='scene-intersection', values=[0, 1]) # state_space.add_state(name='scene-construction', values=[0, 1]) # state_space.add_state(name='scene-rail', values=[0, 1]) # state_space.add_state(name='scene-toll', values=[0, 1]) # state_space.add_state(name='scene-viaduct', values=[0, 1]) # state_space.add_state(name='car', values=[0, 4, 8, 12, 16, 20, 24, 28, 32, 36]) # state_space.add_state(name='motor', values=[0, 2, 4, 6]) # state_space.add_state(name='person', values=[0, 5, 10, 15, 20, 25]) # state_space.add_state(name='truck', values=[0, 4, 8, 12])
policy_sess = tf.Session() K.set_session(policy_sess) NUM_LAYERS = 4 # number of layers of the state space MAX_TRIALS = 250 # maximum number of models generated MAX_EPOCHS = 10 # maximum number of epochs to train BATCHSIZE = 128 # batchsize EXPLORATION = 0.8 # high exploration for the first 1000 steps REGULARIZATION = 1e-3 # regularization strength CONTROLLER_CELLS = 32 # number of cells in RNN controller CLIP_REWARDS = False # clip rewards in the [-0.05, 0.05] range RESTORE_CONTROLLER = True # restore controller to continue training # construct a state space state_space = StateSpace() # add states state_space.add_state(name='kernel', values=[1, 3]) state_space.add_state(name='filters', values=[16, 32, 64]) # print the state space being searched state_space.print_state_space() # prepare the training data for the NetworkManager (x_train, y_train), (x_test, y_test) = cifar10.load_data() x_train = x_train.astype('float32') / 255. x_test = x_test.astype('float32') / 255. y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10)
IMG_CHANNEL = 1 IMG_SIZE = 28 BITWIDTH = 16 schedule_in = 2 S1 = 1 OPT_TIMEPERFORMANCE = 200000 DSP_RESOURCE = 220 OPT = 1 #G=nx.DiGraph() #DESIGN_PARA=DESIGN_PARA(IMG_SIZE,BITWIDTH,IMG_CHANNEL,DSP_RESOURCE) #SCHEDULE=SCHEDULE(schedule_in,S1,G,OPT,NUM_LAYERS) # construct a state space state_space = StateSpace() # add states state_space.add_state(name='kernel', values=[5, 7, 14]) state_space.add_state(name='filters', values=[9, 18, 36]) #state_space.add_state(name='kernel', values=[1,3]) #state_space.add_state(name='filters', values=[8,16,32,64]) #state_space.add_state(name='filters', values=[4, 8, 16, 24]) # print the state space being searched state_space.print_state_space() # print(state_space[0],"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~") # print(state_space[1],"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
NUM_LAYERS = 2 # number of layers of the state space MAX_TRIALS = 100 # maximum number of models generated, adjust by xtpan from 250 to 100 MAX_EPOCHS = 1 # maximum number of epochs to train, adjust by xtpan from 10 to 2 CHILD_BATCHSIZE = 512 # batchsize of the child models EXPLORATION = 0.7 # high exploration for the first 1000 steps REGULARIZATION = 1e-3 # regularization strength CONTROLLER_CELLS = 32 # number of cells in RNN controller EMBEDDING_DIM = 20 # dimension of the embeddings for each state ACCURACY_BETA = 0.8 # beta value for the moving average of the accuracy CLIP_REWARDS = 0.0 # clip rewards in the [-0.05, 0.05] range RESTORE_CONTROLLER = True # restore controller to continue training #TOP_K_CANDIDATE_ACTION = 5 # construct a state space state_space = StateSpace() # add states state_space.add_state(name='embedding', values=[50, 100, 200]) state_space.add_state(name='bidirection_lstm', values=[64, 128, 256]) state_space.add_state(name='filters', values=[16, 32, 64]) state_space.add_state(name='kernel', values=[1, 3]) # print the state space being searched state_space.print_state_space() x_train = [] y_train = [] x_test = [] y_test = [] label_size = 0
EMBEDDING_DIM = 20 # dimension of the embeddings for each state ACCURACY_BETA = 0.8 # beta value for the moving average of the accuracy CLIP_REWARDS = 0.0 # clip rewards in the [-0.05, 0.05] range RESTORE_CONTROLLER = False # restore controller to continue training MAX_SEQ_LENGTH = 30 MODEL_NAME = "textcnn" # init data_helper my_dh = dh.MyHelper(MAX_SEQ_LENGTH) my_dh.initialize() x_train, y_train, x_test, y_test = my_dh.read_input("../data/all_data.txt") # construct a state space state_space = StateSpace() # add states state_space.add_state(name='embedding', values=[100, 200, 300]) state_space.add_state(name='bidirection_lstm', values=[64, 128, 256]) #state_space.add_state(name='filters', values=[32, 64, 128, 256]) # Mi state_space.add_state(name='filters', values=[16, 32, 64]) # Fawcar state_space.add_state(name='kernel_height', values=[2, 3, 4, 5]) state_space.add_state(name='pool_weight', values=[2, 3, 4, 5]) #state_space.add_state(name='fc_size', values=[256, 512, 1024, 2048]) # Mi state_space.add_state(name='fc_size', values=[256, 512]) # Fawcar state_space.add_state(name="vocab_size", values=[my_dh.get_vocab_size()]) state_space.add_state(name="max_seq_length", values=[MAX_SEQ_LENGTH]) state_space.add_state(name="label_num", values=[len(my_dh.label2id.keys())]) # define model type; lstm / bilstm / lstm+bilstm / lenet state_space.add_state(name="model_type", values=[MODEL_NAME])