def inference(inputs, keep_prob, is_training=True): # initialization # h1_out = affine_transform(inputs, num_hidden_1, name="hidden_1") h1_out = utils.batch_norm_affine_transform(inputs, num_hidden_1, name="hidden_1", decay=decay, is_training=is_training) h1_out = tf.nn.relu(h1_out) h1_out = tf.nn.dropout(h1_out, keep_prob=keep_prob) # h2_out = utils.batch_norm_affine_transform(h1_out, num_hidden_2, name="hidden_2") h2_out = utils.batch_norm_affine_transform(h1_out, num_hidden_2, name="hidden_2", decay=decay, is_training=is_training) h2_out = tf.nn.relu(h2_out) h2_out = tf.nn.dropout(h2_out, keep_prob=keep_prob) logits = affine_transform(h2_out, bdnn_outputsize, name="output") logits = tf.sigmoid(logits) logits = tf.reshape(logits, [-1, int(bdnn_outputsize)]) return logits
def action_network(self, outputs): is_training = self.is_training with tf.variable_scope("action_network"): h1_out = tf.nn.relu( utils.batch_norm_affine_transform(outputs, action_hidden_1, decay=decay, name='action_hidden_1', seed=SEED, is_training=is_training)) h1_out = tf.nn.dropout(h1_out, keep_prob=self.keep_probability, seed=SEED) h2_out = tf.nn.relu( utils.batch_norm_affine_transform(h1_out, action_hidden_2, decay=decay, name='action_hidden_2', seed=SEED, is_training=is_training)) h2_out = tf.nn.dropout(h2_out, keep_prob=self.keep_probability, seed=SEED) return h2_out
def get_next_input(self, cell_output, reuse=None): raw_inputs = self.inputs is_training = self.is_training with tf.variable_scope("baseline", reuse=reuse): baseline = tf.sigmoid(affine_transform(((cell_output)), 1, name='baseline')) self.baselines.append(baseline) with tf.variable_scope("selection_network", reuse=reuse): mean_bp = smooth_softmax( utils.batch_norm_affine_transform(cell_output, int(bdnn_winlen), decay=decay, name='selection', is_training=is_training)) # mean_bp = softmax( # utils.batch_norm_affine_transform(cell_output, int(bdnn_winlen), decay=decay, name='selection', # is_training=is_training), beta) self.mean_bps.append(mean_bp) # rand_seq = tf.random_uniform(mean_bp.get_shape().as_list(), minval=0, maxval=1, seed=SEED) if is_training: sampled_bp = tf.multinomial(mean_bp, num_samples=1, seed=SEED) sampled_bp = utils.onehot_tensor(sampled_bp, bdnn_winlen) else: sampled_bp = mean_bp sampled_bp = tf.stop_gradient(sampled_bp) self.sampled_bps.append(sampled_bp) return self.get_glimpse(raw_inputs, mean_bp, reuse=True)
def inference(self, inputs, keep_prob, is_training=True): # initialization # h1_out = affine_transform(inputs, num_hidden_1, name="hidden_1") h1_out = utils.batch_norm_affine_transform(inputs, num_hidden_1, name="hidden_1", decay=decay, is_training=is_training) h1_out = tf.nn.relu(h1_out) h1_out = tf.nn.dropout(h1_out, keep_prob=keep_prob) # h2_out = utils.batch_norm_affine_transform(h1_out, num_hidden_2, name="hidden_2") h2_out = utils.batch_norm_affine_transform(h1_out, num_hidden_2, name="hidden_2", decay=decay, is_training=is_training) h2_out = tf.nn.relu(h2_out) h2_out = tf.nn.dropout(h2_out, keep_prob=keep_prob) logits = affine_transform(h2_out, 2, name="output") return logits
def get_glimpse(self, inputs, bp, reuse=None): is_training = self.is_training with tf.variable_scope("glimpse_net", reuse=reuse): glimpse_input = sw_sensor(inputs, bp) act_glimpse_hidden = tf.nn.relu( utils.batch_norm_affine_transform(glimpse_input, glimpse_hidden, decay=decay, name='glimpse_hidden', seed=SEED, is_training=is_training)) act_bp_hidden = tf.nn.relu(utils.batch_norm_affine_transform(bp, bp_hidden, decay=decay, name='bp_hidden', seed=SEED, is_training=is_training)) glimpse_feature = tf.nn.relu(utils.batch_norm_affine_transform(act_glimpse_hidden, glimpse_out, decay=decay, name='glimpse_out', seed=SEED, is_training=is_training) + utils.batch_norm_affine_transform(act_bp_hidden, bp_out, decay=decay, seed=SEED, name='bp_out', is_training=is_training)) return glimpse_feature