Python sonnet.BatchFlatten() Examples
The following are 26
code examples of sonnet.BatchFlatten().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
sonnet
, or try the search function
.
Example #1
Source File: dpf_kitti.py From differentiable-particle-filters with MIT License | 6 votes |
def custom_build(self, inputs): """A custom build method to wrap into a sonnet Module.""" outputs = snt.Conv2D(output_channels=16, kernel_shape=[7, 7], stride=[1, 1])(inputs) outputs = tf.nn.relu(outputs) outputs = snt.Conv2D(output_channels=16, kernel_shape=[5, 5], stride=[1, 2])(outputs) outputs = tf.nn.relu(outputs) outputs = snt.Conv2D(output_channels=16, kernel_shape=[5, 5], stride=[1, 2])(outputs) outputs = tf.nn.relu(outputs) outputs = snt.Conv2D(output_channels=16, kernel_shape=[5, 5], stride=[2, 2])(outputs) outputs = tf.nn.relu(outputs) outputs = tf.nn.dropout(outputs, self.placeholders['keep_prob']) outputs = snt.BatchFlatten()(outputs) outputs = snt.Linear(128)(outputs) outputs = tf.nn.relu(outputs) return outputs
Example #2
Source File: mnist_multi_gpu_sonnet.py From mnist-multi-gpu with Apache License 2.0 | 5 votes |
def custom_build(inputs, is_training, keep_prob): x_inputs = tf.reshape(inputs, [-1, 28, 28, 1]) """A custom build method to wrap into a sonnet Module.""" outputs = snt.Conv2D(output_channels=32, kernel_shape=4, stride=2)(x_inputs) outputs = snt.BatchNorm()(outputs, is_training=is_training) outputs = tf.nn.relu(outputs) outputs = tf.nn.max_pool(outputs, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME') outputs = snt.Conv2D(output_channels=64, kernel_shape=4, stride=2)(outputs) outputs = snt.BatchNorm()(outputs, is_training=is_training) outputs = tf.nn.relu(outputs) outputs = tf.nn.max_pool(outputs, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME') outputs = snt.Conv2D(output_channels=1024, kernel_shape=1, stride=1)(outputs) outputs = snt.BatchNorm()(outputs, is_training=is_training) outputs = tf.nn.relu(outputs) outputs = snt.BatchFlatten()(outputs) outputs = tf.nn.dropout(outputs, keep_prob=keep_prob) outputs = snt.Linear(output_size=10)(outputs) # _activation_summary(outputs) return outputs
Example #3
Source File: modules.py From attend_infer_repeat with GNU General Public License v3.0 | 5 votes |
def _build(self, inpt): flat = snt.BatchFlatten() mlp = MLP(self._n_hidden) seq = snt.Sequential([flat, mlp]) return seq(inpt)
Example #4
Source File: modules.py From attend_infer_repeat with GNU General Public License v3.0 | 5 votes |
def _embed(self, inpt): flatten = snt.BatchFlatten() mlp = MLP(self._n_hidden, n_out=self._n_param) seq = snt.Sequential([flatten, mlp]) return seq(inpt)
Example #5
Source File: models.py From football with Apache License 2.0 | 5 votes |
def gfootball_impala_cnn(): def network_fn(frame): # Convert to floats. frame = tf.to_float(frame) frame /= 255 with tf.variable_scope('convnet'): conv_out = frame conv_layers = [(16, 2), (32, 2), (32, 2), (32, 2)] for i, (num_ch, num_blocks) in enumerate(conv_layers): # Downscale. conv_out = snt.Conv2D(num_ch, 3, stride=1, padding='SAME')(conv_out) conv_out = tf.nn.pool( conv_out, window_shape=[3, 3], pooling_type='MAX', padding='SAME', strides=[2, 2]) # Residual block(s). for j in range(num_blocks): with tf.variable_scope('residual_%d_%d' % (i, j)): block_input = conv_out conv_out = tf.nn.relu(conv_out) conv_out = snt.Conv2D(num_ch, 3, stride=1, padding='SAME')(conv_out) conv_out = tf.nn.relu(conv_out) conv_out = snt.Conv2D(num_ch, 3, stride=1, padding='SAME')(conv_out) conv_out += block_input conv_out = tf.nn.relu(conv_out) conv_out = snt.BatchFlatten()(conv_out) conv_out = snt.Linear(256)(conv_out) conv_out = tf.nn.relu(conv_out) return conv_out return network_fn
Example #6
Source File: math_ops.py From stacked_capsule_autoencoders with Apache License 2.0 | 5 votes |
def flat_reduce(tensor, reduce_type='sum', final_reduce='mean'): """Flattens the tensor and reduces it.""" def _reduce(tensor, how, *args): return getattr(tf, 'reduce_{}'.format(how))(tensor, *args) # pylint:disable=not-callable tensor = snt.BatchFlatten()(tensor) tensor = _reduce(tensor, reduce_type, -1) if final_reduce is not None: tensor = _reduce(tensor, final_reduce) return tensor
Example #7
Source File: rnn.py From differentiable-particle-filters with MIT License | 5 votes |
def connect_modules(self, means, stds, state_mins, state_maxs, state_step_sizes): # tracking_info_full = tf.tile(((self.placeholders['s'] - means['s']) / stds['s'])[:, :1, :], [1, tf.shape(self.placeholders['s'])[1], 1]) tracking_info = tf.concat([((self.placeholders['s'] - means['s']) / stds['s'])[:, :1, :], tf.zeros_like(self.placeholders['s'][:,1:,:])], axis=1) flag = tf.concat([tf.ones_like(self.placeholders['s'][:,:1,:1]), tf.zeros_like(self.placeholders['s'][:,1:,:1])], axis=1) preproc_o = snt.BatchApply(self.encoder)((self.placeholders['o'] - means['o']) / stds['o']) # include tracking info if self.init_with_true_state: # preproc_o = tf.concat([preproc_o, tracking_info, flag], axis=2) preproc_o = tf.concat([preproc_o, tracking_info, flag], axis=2) # preproc_o = tf.concat([preproc_o, tracking_info_full], axis=2) preproc_a = snt.BatchApply(snt.BatchFlatten())(self.placeholders['a'] / stds['a']) preproc_ao = tf.concat([preproc_o, preproc_a], axis=-1) if self.model == '2lstm' or self.model == '2gru': lstm1_out, lstm1_final_state = tf.nn.dynamic_rnn(self.rnn1, preproc_ao, dtype=tf.float32) lstm2_out, lstm2_final_state = tf.nn.dynamic_rnn(self.rnn2, lstm1_out, dtype=tf.float32) belief_list = lstm2_out elif self.model == 'ff': belief_list = snt.BatchApply(self.ff_lstm_replacement)(preproc_ao) self.pred_states = snt.BatchApply(self.belief_decoder)(belief_list) self.pred_states = self.pred_states * stds['s'] + means['s']
Example #8
Source File: rnn.py From differentiable-particle-filters with MIT License | 5 votes |
def __init__(self, init_with_true_state=False, model='2lstm', **unused_kwargs): self.placeholders = {'o': tf.placeholder('float32', [None, None, 24, 24, 3], 'observations'), 'a': tf.placeholder('float32', [None, None, 3], 'actions'), 's': tf.placeholder('float32', [None, None, 3], 'states'), 'keep_prob': tf.placeholder('float32')} self.pred_states = None self.init_with_true_state = init_with_true_state self.model = model # build models # <-- observation self.encoder = snt.Sequential([ snt.nets.ConvNet2D([16, 32, 64], [[3, 3]], [2], [snt.SAME], activate_final=True, name='encoder/convnet'), snt.BatchFlatten(), lambda x: tf.nn.dropout(x, self.placeholders['keep_prob']), snt.Linear(128, name='encoder/Linear'), tf.nn.relu, ]) # <-- action if self.model == '2lstm': self.rnn1 = snt.LSTM(512) self.rnn2 = snt.LSTM(512) if self.model == '2gru': self.rnn1 = snt.GRU(512) self.rnn2 = snt.GRU(512) elif self.model == 'ff': self.ff_lstm_replacement = snt.Sequential([ snt.Linear(512), tf.nn.relu, snt.Linear(512), tf.nn.relu]) self.belief_decoder = snt.Sequential([ snt.Linear(256), tf.nn.relu, snt.Linear(256), tf.nn.relu, snt.Linear(3) ])
Example #9
Source File: problems.py From learning-to-learn with Apache License 2.0 | 5 votes |
def mnist(layers, # pylint: disable=invalid-name activation="sigmoid", batch_size=128, mode="train"): """Mnist classification with a multi-layer perceptron.""" if activation == "sigmoid": activation_op = tf.sigmoid elif activation == "relu": activation_op = tf.nn.relu else: raise ValueError("{} activation not supported".format(activation)) # Data. data = mnist_dataset.load_mnist() data = getattr(data, mode) images = tf.constant(data.images, dtype=tf.float32, name="MNIST_images") images = tf.reshape(images, [-1, 28, 28, 1]) labels = tf.constant(data.labels, dtype=tf.int64, name="MNIST_labels") # Network. mlp = snt.nets.MLP(list(layers) + [10], activation=activation_op, initializers=_nn_initializers) network = snt.Sequential([snt.BatchFlatten(), mlp]) def build(): indices = tf.random_uniform([batch_size], 0, data.num_examples, tf.int64) batch_images = tf.gather(images, indices) batch_labels = tf.gather(labels, indices) output = network(batch_images) return _xent_loss(output, batch_labels) return build
Example #10
Source File: goal_nav_agent.py From streetlearn with Apache License 2.0 | 5 votes |
def _torso(self, input_): """Processing of all the visual and language inputs to the LSTM core.""" # Extract the inputs last_action, env_output = input_ last_reward, _, _, observation = env_output frame = observation[self._idx_frame] goal = observation[self._idx_goal] goal = tf.to_float(goal) # Convert to image to floats and normalise. frame = tf.to_float(frame) frame = snt.FlattenTrailingDimensions(dim_from=3)(frame) frame /= 255.0 # Feed image through convnet. with tf.variable_scope('convnet'): # Convolutional layers. conv_out = self._convnet(frame) # Fully connected layer. conv_out = snt.BatchFlatten()(conv_out) conv_out = snt.Linear(256)(conv_out) conv_out = tf.nn.relu(conv_out) # Concatenate outputs of the visual and instruction pathways. if self._feed_action_and_reward: # Append clipped last reward and one hot last action. tf.logging.info('Append last reward clipped to: %f', self._max_reward) clipped_last_reward = tf.expand_dims( tf.clip_by_value(last_reward, -self._max_reward, self._max_reward), -1) tf.logging.info('Append last action (one-hot of %d)', self._num_actions) one_hot_last_action = tf.one_hot(last_action, self._num_actions) tf.logging.info('Append goal:') tf.logging.info(goal) action_and_reward = tf.concat([clipped_last_reward, one_hot_last_action], axis=1) else: action_and_reward = tf.constant([0], dtype=tf.float32) return conv_out, action_and_reward, goal
Example #11
Source File: codec.py From vae-seq with Apache License 2.0 | 5 votes |
def _build(self, inp): input_sizes = snt.nest.map(lambda inp_i: inp_i.get_shape()[1:], inp) self._merge_input_sizes(input_sizes) flatten = snt.BatchFlatten(preserve_dims=1) flat_inp = snt.nest.map(lambda inp_i: tf.to_float(flatten(inp_i)), inp) ret = util.concat_features(flat_inp) util.set_tensor_shapes(ret, self.output_size, add_batch_dims=1) return ret
Example #12
Source File: mnist_mlp.py From forge with GNU General Public License v3.0 | 5 votes |
def load(config, **inputs): imgs, labels = inputs['train_img'], inputs['train_label'] imgs = snt.BatchFlatten()(imgs) mlp = snt.nets.MLP([config.n_hidden, 10]) logits = mlp(imgs) labels = tf.cast(labels, tf.int32) loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)) pred_class = tf.argmax(logits, -1) acc = tf.reduce_mean(tf.to_float(tf.equal(tf.to_int32(pred_class), labels))) # put here everything that you might want to use later # for example when you load the model in a jupyter notebook artefects = { 'mlp': mlp, 'logits': logits, 'loss': loss, 'pred_class': pred_class, 'accuracy': acc } # put here everything that you'd like to be reported every N training iterations # as tensorboard logs AND on the command line stats = {'crossentropy': loss, 'accuracy': acc} # loss will be minimized with respect to the model parameters return loss, stats, artefects
Example #13
Source File: mnist_mlp.py From forge with GNU General Public License v3.0 | 5 votes |
def load(config, **inputs): imgs, labels = inputs['train_img'], inputs['train_label'] imgs = snt.BatchFlatten()(imgs) mlp = snt.nets.MLP([config.n_hidden, 10]) logits = mlp(imgs) labels = tf.cast(labels, tf.int32) loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)) pred_class = tf.argmax(logits, -1) acc = tf.reduce_mean(tf.to_float(tf.equal(tf.to_int32(pred_class), labels))) # put here everything that you might want to use later # for example when you load the model in a jupyter notebook artefects = { 'mlp': mlp, 'logits': logits, 'loss': loss, 'pred_class': pred_class, 'accuracy': acc } # put here everything that you'd like to be reported every N training iterations # as tensorboard logs AND on the command line stats = {'crossentropy': loss, 'accuracy': acc} # loss will be minimized with respect to the model parameters return loss, stats, artefects
Example #14
Source File: model_test.py From interval-bound-propagation with Apache License 2.0 | 5 votes |
def testPointlessReshape(self): def _build(z0): z = snt.Linear(10)(z0) z = snt.BatchFlatten()(z) # This is a no-op; no graph nodes created. return snt.Linear(2)(z) z = tf.constant([[1, 2, 3, 4]], dtype=tf.float32) wrapper = ibp.VerifiableModelWrapper(_build) logits = wrapper(z) # Expect the batch flatten to have been skipped. self.assertLen(wrapper.modules, 2) self.assertIsInstance(wrapper.modules[0], ibp.LinearFCWrapper) self.assertIsInstance(wrapper.modules[1], ibp.LinearFCWrapper) # Check propagation. self._propagation_test(wrapper, z, logits)
Example #15
Source File: model_test.py From interval-bound-propagation with Apache License 2.0 | 5 votes |
def testVerifiableModelWrapperDNN(self): predictor = _build_model() # Input. z = tf.constant([1, 2, 3, 4], dtype=tf.float32) z = tf.reshape(z, [1, 2, 2, 1]) wrapper = ibp.VerifiableModelWrapper(predictor) wrapper(z) # Verify basic wrapping. self.assertEqual(predictor, wrapper.wrapped_network) self.assertEqual(3, wrapper.output_size) self.assertEqual((1, 3), tuple(wrapper.logits.shape.as_list())) self.assertEqual(z, wrapper.inputs) # Build another input and test reuse. z2 = tf.constant([1, 2, 3, 4], dtype=tf.float32) z2 = tf.reshape(z, [1, 2, 2, 1]) logits = wrapper(z2, reuse=True) self.assertEqual(z, wrapper.inputs) self.assertNotEqual(z2, wrapper.inputs) # Check that the verifiable modules are constructed. self.assertLen(wrapper.input_wrappers, 1) self.assertLen(wrapper.modules, 6) self.assertIsInstance(wrapper.modules[0].module, snt.Conv2D) self.assertEqual(wrapper.modules[1].module, tf.nn.relu) self.assertIsInstance(wrapper.modules[2].module, snt.BatchFlatten) self.assertIsInstance(wrapper.modules[3].module, snt.Linear) self.assertEqual(wrapper.modules[4].module, tf.nn.relu) self.assertIsInstance(wrapper.modules[5].module, snt.Linear) # It's a sequential network, so all nodes (including input) have fanout 1. self.assertEqual(wrapper.fanout_of(wrapper.input_wrappers[0]), 1) for module in wrapper.modules: self.assertEqual(wrapper.fanout_of(module), 1) # Check propagation. self._propagation_test(wrapper, z2, logits)
Example #16
Source File: fastlin.py From interval-bound-propagation with Apache License 2.0 | 5 votes |
def _initial_symbolic_bounds(lb, ub): """Returns symbolic bounds for the given interval bounds.""" batch_size = tf.shape(lb)[0] input_shape = lb.shape[1:] zero = tf.zeros_like(lb) lb = snt.BatchFlatten()(lb) ub = snt.BatchFlatten()(ub) input_size = tf.shape(lb)[1] output_shape = tf.concat([[input_size], input_shape], axis=0) identity = tf.reshape(tf.eye(input_size), output_shape) identity = tf.expand_dims(identity, 0) identity = tf.tile(identity, [batch_size] + [1] * (len(input_shape) + 1)) expr = LinearExpression(w=identity, b=zero, lower=lb, upper=ub) return expr, expr
Example #17
Source File: verifiable_wrapper.py From interval-bound-propagation with Apache License 2.0 | 5 votes |
def __init__(self, module): if not isinstance(module, snt.BatchFlatten): raise ValueError('Cannot wrap {} with a BatchFlattenWrapper.'.format( module)) super(BatchFlattenWrapper, self).__init__(module, [-1])
Example #18
Source File: periodic_inv_cov_update_kfac_opt_test.py From kfac with Apache License 2.0 | 5 votes |
def test_train(self): image = tf.random_uniform(shape=(_BATCH_SIZE, 784), maxval=1.) labels = tf.random_uniform(shape=(_BATCH_SIZE,), maxval=10, dtype=tf.int32) labels_one_hot = tf.one_hot(labels, 10) model = snt.Sequential([snt.BatchFlatten(), snt.nets.MLP([128, 128, 10])]) logits = model(image) all_losses = tf.nn.softmax_cross_entropy_with_logits_v2( logits=logits, labels=labels_one_hot) loss = tf.reduce_mean(all_losses) layers = layer_collection.LayerCollection() optimizer = periodic_inv_cov_update_kfac_opt.PeriodicInvCovUpdateKfacOpt( invert_every=10, cov_update_every=1, learning_rate=0.03, cov_ema_decay=0.95, damping=100., layer_collection=layers, momentum=0.9, num_burnin_steps=0, placement_strategy="round_robin") _construct_layer_collection(layers, [logits], tf.trainable_variables()) train_step = optimizer.minimize(loss) counter = optimizer.counter max_iterations = 50 with self.test_session() as sess: sess.run(tf.global_variables_initializer()) coord = tf.train.Coordinator() tf.train.start_queue_runners(sess=sess, coord=coord) for iteration in range(max_iterations): sess.run([loss, train_step]) counter_ = sess.run(counter) self.assertEqual(counter_, iteration + 1.0)
Example #19
Source File: classifier_mnist.py From kfac with Apache License 2.0 | 5 votes |
def _build(self, inputs): if FLAGS.l2_reg: regularizers = {'w': lambda w: FLAGS.l2_reg*tf.nn.l2_loss(w), 'b': lambda w: FLAGS.l2_reg*tf.nn.l2_loss(w),} else: regularizers = None reshape = snt.BatchReshape([28, 28, 1]) conv = snt.Conv2D(2, 5, padding=snt.SAME, regularizers=regularizers) act = _NONLINEARITY(conv(reshape(inputs))) pool = tf.nn.pool(act, window_shape=(2, 2), pooling_type=_POOL, padding=snt.SAME, strides=(2, 2)) conv = snt.Conv2D(4, 5, padding=snt.SAME, regularizers=regularizers) act = _NONLINEARITY(conv(pool)) pool = tf.nn.pool(act, window_shape=(2, 2), pooling_type=_POOL, padding=snt.SAME, strides=(2, 2)) flatten = snt.BatchFlatten()(pool) linear = snt.Linear(32, regularizers=regularizers)(flatten) return snt.Linear(10, regularizers=regularizers)(linear)
Example #20
Source File: dpf_kitti.py From differentiable-particle-filters with MIT License | 4 votes |
def build_modules(self, min_obs_likelihood, proposer_keep_ratio, learn_gaussian_mle): """ :param min_obs_likelihood: :param proposer_keep_ratio: :return: None """ # MEASUREMENT MODEL # conv net for encoding the image self.encoder = snt.Sequential([ snt.nets.ConvNet2D([16, 16, 16, 16], [[7, 7], [5, 5], [5, 5], [5, 5]], [[1,1], [1, 2], [1, 2], [2, 2]], [snt.SAME], activate_final=True, name='encoder/convnet'), snt.BatchFlatten(), lambda x: tf.nn.dropout(x, self.placeholders['keep_prob']), snt.Linear(128, name='encoder/linear'), tf.nn.relu ]) # observation likelihood estimator that maps states and image encodings to probabilities self.obs_like_estimator = snt.Sequential([ snt.Linear(128, name='obs_like_estimator/linear'), tf.nn.relu, snt.Linear(128, name='obs_like_estimator/linear'), tf.nn.relu, snt.Linear(1, name='obs_like_estimator/linear'), tf.nn.sigmoid, lambda x: x * (1 - min_obs_likelihood) + min_obs_likelihood ], name='obs_like_estimator') # motion noise generator used for motion sampling if learn_gaussian_mle: self.mo_noise_generator = snt.nets.MLP([32, 32, 4], activate_final=False, name='mo_noise_generator') else: self.mo_noise_generator = snt.nets.MLP([32, 32, 2], activate_final=False, name='mo_noise_generator') # odometry model (if we want to learn it) if self.learn_odom: self.mo_transition_model = snt.nets.MLP([128, 128, 128, self.state_dim], activate_final=False, name='mo_transition_model') # particle proposer that maps encodings to particles (if we want to use it) if self.use_proposer: self.particle_proposer = snt.Sequential([ snt.Linear(128, name='particle_proposer/linear'), tf.nn.relu, lambda x: tf.nn.dropout(x, proposer_keep_ratio), snt.Linear(128, name='particle_proposer/linear'), tf.nn.relu, snt.Linear(128, name='particle_proposer/linear'), tf.nn.relu, snt.Linear(128, name='particle_proposer/linear'), tf.nn.relu, snt.Linear(4, name='particle_proposer/linear'), tf.nn.tanh, ]) self.noise_scaler1 = snt.Module(lambda x: x * tf.exp(10 * tf.get_variable('motion_sampler/noise_scaler1', initializer=np.array(0.0, dtype='float32')))) self.noise_scaler2 = snt.Module(lambda x: x * tf.exp(10 * tf.get_variable('motion_sampler/noise_scaler2', initializer=np.array(0.0, dtype='float32'))))
Example #21
Source File: model.py From interval-bound-propagation with Apache License 2.0 | 4 votes |
def _build(self, z0, is_training=True, test_local_stats=False, reuse=False): """Outputs logits.""" zk = z0 conv2d_id = 0 linear_id = 0 name = None for spec in self._layer_types: if spec[0] == 'conv2d': if linear_id > 0: raise ValueError('Convolutional layers must precede fully connected ' 'layers.') name = 'conv2d_{}'.format(conv2d_id) conv2d_id += 1 (_, (kernel_height, kernel_width), channels, padding, stride) = spec m = snt.Conv2D(output_channels=channels, kernel_shape=(kernel_height, kernel_width), padding=padding, stride=stride, use_bias=True, regularizers=self._regularizers, initializers=_create_conv2d_initializer( zk.get_shape().as_list()[1:], channels, (kernel_height, kernel_width)), name=name) zk = m(zk) elif spec[0] == 'linear': must_flatten = (linear_id == 0 and len(zk.shape) > 2) if must_flatten: zk = snt.BatchFlatten()(zk) name = 'linear_{}'.format(linear_id) linear_id += 1 output_size = spec[1] m = snt.Linear(output_size, regularizers=self._regularizers, initializers=_create_linear_initializer( np.prod(zk.get_shape().as_list()[1:]), output_size), name=name) zk = m(zk) elif spec[0] == 'batch_normalization': if name is None: raise ValueError('Batch normalization only supported after linear ' 'layers.') name += '_batch_norm' m = layers.BatchNorm(name=name) if reuse: if m.scope_name not in self._batch_norms: raise ValueError('Cannot set reuse to True without connecting the ' 'module once before.') m = self._batch_norms[m.scope_name] else: self._batch_norms[m.scope_name] = m zk = m(zk, is_training=is_training, test_local_stats=test_local_stats, reuse=reuse) elif spec[0] == 'activation': if spec[1] not in _ALLOWED_ACTIVATIONS: raise NotImplementedError( 'Only the following activations are supported {}'.format( list(_ALLOWED_ACTIVATIONS))) name = None m = getattr(tf.nn, spec[1]) zk = m(zk) return zk
Example #22
Source File: dpf.py From differentiable-particle-filters with MIT License | 4 votes |
def build_modules(self, min_obs_likelihood, proposer_keep_ratio): """ :param min_obs_likelihood: :param proposer_keep_ratio: :return: None """ # MEASUREMENT MODEL # conv net for encoding the image self.encoder = snt.Sequential([ snt.nets.ConvNet2D([16, 32, 64], [[3, 3]], [2], [snt.SAME], activate_final=True, name='encoder/convnet'), snt.BatchFlatten(), lambda x: tf.nn.dropout(x, self.placeholders['keep_prob']), snt.Linear(128, name='encoder/linear'), tf.nn.relu ]) # observation likelihood estimator that maps states and image encodings to probabilities self.obs_like_estimator = snt.Sequential([ snt.Linear(128, name='obs_like_estimator/linear'), tf.nn.relu, snt.Linear(128, name='obs_like_estimator/linear'), tf.nn.relu, snt.Linear(1, name='obs_like_estimator/linear'), tf.nn.sigmoid, lambda x: x * (1 - min_obs_likelihood) + min_obs_likelihood ], name='obs_like_estimator') # motion noise generator used for motion sampling self.mo_noise_generator = snt.nets.MLP([32, 32, self.state_dim], activate_final=False, name='mo_noise_generator') # odometry model (if we want to learn it) if self.learn_odom: self.mo_transition_model = snt.nets.MLP([128, 128, 128, self.state_dim], activate_final=False, name='mo_transition_model') # particle proposer that maps encodings to particles (if we want to use it) if self.use_proposer: self.particle_proposer = snt.Sequential([ snt.Linear(128, name='particle_proposer/linear'), tf.nn.relu, lambda x: tf.nn.dropout(x, proposer_keep_ratio), snt.Linear(128, name='particle_proposer/linear'), tf.nn.relu, snt.Linear(128, name='particle_proposer/linear'), tf.nn.relu, snt.Linear(128, name='particle_proposer/linear'), tf.nn.relu, snt.Linear(4, name='particle_proposer/linear'), tf.nn.tanh, ])
Example #23
Source File: primary.py From stacked_capsule_autoencoders with Apache License 2.0 | 4 votes |
def _build(self, x): batch_size = x.shape[0] img_embedding = self._encoder(x) splits = [self._n_caps_dims, self._n_features, 1] # 1 for presence n_dims = sum(splits) if self._encoder_type == 'linear': n_outputs = self._n_caps * n_dims h = snt.BatchFlatten()(img_embedding) h = snt.Linear(n_outputs)(h) else: h = snt.AddBias(bias_dims=[1, 2, 3])(img_embedding) if self._encoder_type == 'conv': h = snt.Conv2D(n_dims * self._n_caps, 1, 1)(h) h = tf.reduce_mean(h, (1, 2)) h = tf.reshape(h, [batch_size, self._n_caps, n_dims]) elif self._encoder_type == 'conv_att': h = snt.Conv2D(n_dims * self._n_caps + self._n_caps, 1, 1)(h) h = snt.MergeDims(1, 2)(h) h, a = tf.split(h, [n_dims * self._n_caps, self._n_caps], -1) h = tf.reshape(h, [batch_size, -1, n_dims, self._n_caps]) a = tf.nn.softmax(a, 1) a = tf.reshape(a, [batch_size, -1, 1, self._n_caps]) h = tf.reduce_sum(h * a, 1) else: raise ValueError('Invalid encoder type="{}".'.format( self._encoder_type)) h = tf.reshape(h, [batch_size, self._n_caps, n_dims]) pose, feature, pres_logit = tf.split(h, splits, -1) if self._n_features == 0: feature = None pres_logit = tf.squeeze(pres_logit, -1) if self._noise_scale > 0.: pres_logit += ((tf.random.uniform(pres_logit.shape) - .5) * self._noise_scale) pres = tf.nn.sigmoid(pres_logit) pose = math_ops.geometric_transform(pose, self._similarity_transform) return self.OutputTuple(pose, feature, pres, pres_logit, img_embedding)
Example #24
Source File: experiment.py From scalable_agent with Apache License 2.0 | 4 votes |
def _torso(self, input_): last_action, env_output = input_ reward, _, _, (frame, instruction) = env_output # Convert to floats. frame = tf.to_float(frame) frame /= 255 with tf.variable_scope('convnet'): conv_out = frame for i, (num_ch, num_blocks) in enumerate([(16, 2), (32, 2), (32, 2)]): # Downscale. conv_out = snt.Conv2D(num_ch, 3, stride=1, padding='SAME')(conv_out) conv_out = tf.nn.pool( conv_out, window_shape=[3, 3], pooling_type='MAX', padding='SAME', strides=[2, 2]) # Residual block(s). for j in range(num_blocks): with tf.variable_scope('residual_%d_%d' % (i, j)): block_input = conv_out conv_out = tf.nn.relu(conv_out) conv_out = snt.Conv2D(num_ch, 3, stride=1, padding='SAME')(conv_out) conv_out = tf.nn.relu(conv_out) conv_out = snt.Conv2D(num_ch, 3, stride=1, padding='SAME')(conv_out) conv_out += block_input conv_out = tf.nn.relu(conv_out) conv_out = snt.BatchFlatten()(conv_out) conv_out = snt.Linear(256)(conv_out) conv_out = tf.nn.relu(conv_out) instruction_out = self._instruction(instruction) # Append clipped last reward and one hot last action. clipped_reward = tf.expand_dims(tf.clip_by_value(reward, -1, 1), -1) one_hot_last_action = tf.one_hot(last_action, self._num_actions) return tf.concat( [conv_out, clipped_reward, one_hot_last_action, instruction_out], axis=1)
Example #25
Source File: dnc.py From dnc with Apache License 2.0 | 4 votes |
def _build(self, inputs, prev_state): """Connects the DNC core into the graph. Args: inputs: Tensor input. prev_state: A `DNCState` tuple containing the fields `access_output`, `access_state` and `controller_state`. `access_state` is a 3-D Tensor of shape `[batch_size, num_reads, word_size]` containing read words. `access_state` is a tuple of the access module's state, and `controller_state` is a tuple of controller module's state. Returns: A tuple `(output, next_state)` where `output` is a tensor and `next_state` is a `DNCState` tuple containing the fields `access_output`, `access_state`, and `controller_state`. """ prev_access_output = prev_state.access_output prev_access_state = prev_state.access_state prev_controller_state = prev_state.controller_state batch_flatten = snt.BatchFlatten() controller_input = tf.concat( [batch_flatten(inputs), batch_flatten(prev_access_output)], 1) controller_output, controller_state = self._controller( controller_input, prev_controller_state) controller_output = self._clip_if_enabled(controller_output) controller_state = tf.contrib.framework.nest.map_structure(self._clip_if_enabled, controller_state) access_output, access_state = self._access(controller_output, prev_access_state) output = tf.concat([controller_output, batch_flatten(access_output)], 1) output = snt.Linear( output_size=self._output_size.as_list()[0], name='output_linear')(output) output = self._clip_if_enabled(output) return output, DNCState( access_output=access_output, access_state=access_state, controller_state=controller_state)
Example #26
Source File: plain_agent.py From streetlearn with Apache License 2.0 | 4 votes |
def _torso(self, input_): """Processing of all the visual and language inputs to the LSTM core.""" # Extract the inputs last_action, env_output = input_ last_reward, _, _, observation = env_output if type(observation) == list: frame = observation[self._idx_frame] else: frame = observation # Convert to image to floats and normalise. frame = tf.to_float(frame) frame /= 255 # Feed image through convnet. with tf.variable_scope('convnet'): conv_out = frame for i, (num_ch, num_blocks) in enumerate([(16, 2), (32, 2), (32, 2)]): # Downscale. conv_out = snt.Conv2D(num_ch, 3, stride=1, padding='SAME')(conv_out) conv_out = tf.nn.pool( conv_out, window_shape=[3, 3], pooling_type='MAX', padding='SAME', strides=[2, 2]) # Residual block(s). for j in range(num_blocks): with tf.variable_scope('residual_%d_%d' % (i, j)): block_input = conv_out conv_out = tf.nn.relu(conv_out) conv_out = snt.Conv2D(num_ch, 3, stride=1, padding='SAME')(conv_out) conv_out = tf.nn.relu(conv_out) conv_out = snt.Conv2D(num_ch, 3, stride=1, padding='SAME')(conv_out) conv_out += block_input # Fully connected layer. conv_out = tf.nn.relu(conv_out) conv_out = snt.BatchFlatten()(conv_out) conv_out = snt.Linear(256)(conv_out) conv_out = tf.nn.relu(conv_out) # Concatenate outputs of the visual and instruction pathways. if self._feed_action_and_reward: # Append clipped last reward and one hot last action. tf.logging.info('Append last reward clipped to: %f', self._max_reward) clipped_last_reward = tf.expand_dims( tf.clip_by_value(last_reward, -self._max_reward, self._max_reward), -1) tf.logging.info('Append last action (one-hot of %d)', self._num_actions) one_hot_last_action = tf.one_hot(last_action, self._num_actions) core_input = tf.concat( [conv_out, clipped_last_reward, one_hot_last_action], axis=1) else: core_input = conv_out return core_input