Python tensorflow.layers() Examples
The following are 30
code examples of tensorflow.layers().
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
tensorflow
, or try the search function
.
Example #1
Source File: convnet_builder.py From tf-imagenet with Apache License 2.0 | 6 votes |
def _conv2d_impl(self, input_layer, num_channels_in, filters, kernel_size, strides, padding, kernel_initializer): if self.use_tf_layers: return conv_layers.conv2d(input_layer, filters, kernel_size, strides, padding, self.channel_pos, kernel_initializer=kernel_initializer, use_bias=False) else: weights_shape = [kernel_size[0], kernel_size[1], num_channels_in, filters] # We use the name 'conv2d/kernel' so the variable has the same name as its # tf.layers equivalent. This way, if a checkpoint is written when # self.use_tf_layers == True, it can be loaded when # self.use_tf_layers == False, and vice versa. weights = self.get_variable('conv2d/kernel', weights_shape, self.variable_dtype, self.dtype, initializer=kernel_initializer) if self.data_format == 'NHWC': strides = [1] + strides + [1] else: strides = [1, 1] + strides return tf.nn.conv2d(input_layer, weights, strides, padding, data_format=self.data_format)
Example #2
Source File: convnet_builder.py From parallax with Apache License 2.0 | 6 votes |
def _conv2d_impl(self, input_layer, num_channels_in, filters, kernel_size, strides, padding, kernel_initializer): if self.use_tf_layers: return conv_layers.conv2d(input_layer, filters, kernel_size, strides, padding, self.channel_pos, kernel_initializer=MockGlorotInitializer() if FLAGS.deterministic else kernel_initializer, use_bias=False) else: weights_shape = [kernel_size[0], kernel_size[1], num_channels_in, filters] # We use the name 'conv2d/kernel' so the variable has the same name # as its tf.layers equivalent. This way, if a checkpoint is written # when self.use_tf_layers == True, it can be loaded when # self.use_tf_layers == False, and vice versa. weights = self.get_variable('conv2d/kernel', weights_shape, self.variable_dtype, self.dtype, initializer=kernel_initializer) if self.data_format == 'NHWC': strides = [1] + strides + [1] else: strides = [1, 1] + strides return tf.nn.conv2d(input_layer, weights, strides, padding, data_format=self.data_format)
Example #3
Source File: emily.py From BERT with Apache License 2.0 | 6 votes |
def stacked_lstm(self, inputs, states, hidden_size, output_size, nlayers): """Stacked LSTM layers with FC layers as input and output embeddings. Args: inputs: input tensor states: a list of internal lstm states for each layer hidden_size: number of lstm units output_size: size of the output nlayers: number of lstm layers Returns: net: output of the network skips: a list of updated lstm states for each layer """ net = inputs net = tfl.dense( net, hidden_size, activation=None, name="af1") for i in range(nlayers): net, states[i] = common_video.basic_lstm( net, states[i], hidden_size, name="alstm%d"%i) net = tfl.dense( net, output_size, activation=tf.nn.tanh, name="af2") return net, states
Example #4
Source File: svg_lp.py From training_results_v0.5 with Apache License 2.0 | 6 votes |
def rnn_model(self, hidden_size, nlayers, rnn_type, name): """Stacked RNN cell constructor. Args: hidden_size: number of lstm units nlayers: number of lstm layers rnn_type: type of RNN cell to use name: RNN name Returns: stacked_rnn: stacked RNN cell """ layers_units = [hidden_size] * nlayers if rnn_type == "lstm": rnn_cell = tf.contrib.rnn.LSTMCell elif rnn_type == "gru": rnn_cell = tf.contrib.rnn.GRUCell else: rnn_cell = tf.contrib.rnn.RNNCell cells = [rnn_cell(units, name=name) for units in layers_units] stacked_rnn = tf.contrib.rnn.MultiRNNCell(cells) return stacked_rnn
Example #5
Source File: sv2p.py From training_results_v0.5 with Apache License 2.0 | 6 votes |
def reward_prediction_mid( self, input_images, input_reward, action, latent, mid_outputs): """Builds a reward prediction network from intermediate layers.""" encoded = [] for i, output in enumerate(mid_outputs): enc = output enc = tfl.conv2d(enc, 64, [3, 3], strides=(1, 1), activation=tf.nn.relu) enc = tfl.conv2d(enc, 32, [3, 3], strides=(2, 2), activation=tf.nn.relu) enc = tfl.conv2d(enc, 16, [3, 3], strides=(2, 2), activation=tf.nn.relu) enc = tfl.flatten(enc) enc = tfl.dense(enc, 64, activation=tf.nn.relu, name="rew_enc_%d" % i) encoded.append(enc) x = encoded x = tf.stack(x, axis=1) x = tfl.flatten(x) x = tfl.dense(x, 256, activation=tf.nn.relu, name="rew_dense1") x = tfl.dense(x, 128, activation=tf.nn.relu, name="rew_dense2") return x
Example #6
Source File: layers.py From Counterfactual-StoryRW with MIT License | 6 votes |
def layer_normalize(inputs, scope=None, **kwargs): """Applies layer normalization. Normalizes over the last dimension. Args: inputs: A tensor with 2 or more dimensions, where the first dimension must be `batch_size`. scope (optional): variable scope. Returns: A tensor with the same shape and data dtype as `inputs`. """ return tf.contrib.layers.layer_norm( inputs=inputs, begin_norm_axis=-1, begin_params_axis=-1, scope=scope, **kwargs )
Example #7
Source File: basic_stochastic.py From training_results_v0.5 with Apache License 2.0 | 6 votes |
def update_internal_states_early(self, internal_states, frames): """Update the internal states early in the network in GRU-like way.""" batch_size = common_layers.shape_list(frames[0])[0] internal_state = internal_states[0][0][:batch_size, :, :, :] state_activation = tf.concat([internal_state, frames[0]], axis=-1) state_gate_candidate = tf.layers.conv2d( state_activation, 64, (3, 3), padding="SAME", name="state_conv") state_gate, state_candidate = tf.split(state_gate_candidate, 2, axis=-1) state_gate = tf.nn.sigmoid(state_gate) state_candidate = tf.tanh(state_candidate) internal_state = internal_state * state_gate internal_state += state_candidate * (1.0 - state_gate) max_batch_size = max(64, self.hparams.batch_size) diff_batch_size = max_batch_size - batch_size internal_state = tf.pad( internal_state, [[0, diff_batch_size], [0, 0], [0, 0], [0, 0]]) return [[internal_state]]
Example #8
Source File: convnet_builder.py From deeplearning-benchmark with Apache License 2.0 | 6 votes |
def _conv2d_impl(self, input_layer, num_channels_in, filters, kernel_size, strides, padding, kernel_initializer): if self.use_tf_layers: return conv_layers.conv2d(input_layer, filters, kernel_size, strides, padding, self.channel_pos, kernel_initializer=kernel_initializer, use_bias=False) else: weights_shape = [kernel_size[0], kernel_size[1], num_channels_in, filters] # We use the name 'conv2d/kernel' so the variable has the same name as its # tf.layers equivalent. This way, if a checkpoint is written when # self.use_tf_layers == True, it can be loaded when # self.use_tf_layers == False, and vice versa. weights = self.get_variable('conv2d/kernel', weights_shape, self.variable_dtype, self.dtype, initializer=kernel_initializer) if self.data_format == 'NHWC': strides = [1] + strides + [1] else: strides = [1, 1] + strides return tf.nn.conv2d(input_layer, weights, strides, padding, data_format=self.data_format)
Example #9
Source File: emily.py From training_results_v0.5 with Apache License 2.0 | 6 votes |
def lstm_gaussian(self, inputs, states, hidden_size, output_size, nlayers): """Stacked LSTM layers with FC layer as input and gaussian as output. Args: inputs: input tensor states: a list of internal lstm states for each layer hidden_size: number of lstm units output_size: size of the output nlayers: number of lstm layers Returns: mu: mean of the predicted gaussian logvar: log(var) of the predicted gaussian skips: a list of updated lstm states for each layer """ net = inputs net = tfl.dense(net, hidden_size, activation=None, name="bf1") for i in range(nlayers): net, states[i] = common_video.basic_lstm( net, states[i], hidden_size, name="blstm%d"%i) mu = tfl.dense(net, output_size, activation=None, name="bf2mu") logvar = tfl.dense(net, output_size, activation=None, name="bf2log") return mu, logvar, states
Example #10
Source File: layers.py From Counterfactual-StoryRW with MIT License | 6 votes |
def call(self, inputs, mode=None): # pylint: disable=arguments-differ training = is_train_mode(mode) outputs = inputs for layer in self._layers: if isinstance(layer, tf.layers.Dropout) or \ isinstance(layer, tf.layers.BatchNormalization): outputs = layer(outputs, training=training) else: outputs = layer(inputs) inputs = outputs if not self.built or not self._vars_built: self._collect_weights() self._vars_built = True return outputs
Example #11
Source File: common_layers.py From BERT with Apache License 2.0 | 6 votes |
def gated_linear_unit_layer(x, name=None): """Gated linear unit layer. Paper: Language Modeling with Gated Convolutional Networks. Link: https://arxiv.org/abs/1612.08083 x = Wx * sigmoid(W'x). Args: x: A tensor name: A string Returns: A tensor of the same shape as x. """ with tf.variable_scope(name, default_name="glu_layer", values=[x]): depth = shape_list(x)[-1] x = layers().Dense(depth * 2, activation=None)(x) x, gating_x = tf.split(x, 2, axis=-1) return x * tf.nn.sigmoid(gating_x)
Example #12
Source File: layers.py From Counterfactual-StoryRW with MIT License | 6 votes |
def __init__(self, layers, trainable=True, name=None, **kwargs): super(SequentialLayer, self).__init__( trainable=trainable, name=name, **kwargs) if len(layers) == 0: raise ValueError("'layers' must be a non-empty list.") self._layers = [] for layer in layers: if isinstance(layer, tf.layers.Layer): self._layers.append(layer) else: self._layers.append(get_layer(hparams=layer)) # Keep tracks of whether trainable variables have been created self._vars_built = False
Example #13
Source File: emily.py From training_results_v0.5 with Apache License 2.0 | 6 votes |
def stacked_lstm(self, inputs, states, hidden_size, output_size, nlayers): """Stacked LSTM layers with FC layers as input and output embeddings. Args: inputs: input tensor states: a list of internal lstm states for each layer hidden_size: number of lstm units output_size: size of the output nlayers: number of lstm layers Returns: net: output of the network skips: a list of updated lstm states for each layer """ net = inputs net = tfl.dense( net, hidden_size, activation=None, name="af1") for i in range(nlayers): net, states[i] = common_video.basic_lstm( net, states[i], hidden_size, name="alstm%d"%i) net = tfl.dense( net, output_size, activation=tf.nn.tanh, name="af2") return net, states
Example #14
Source File: layers.py From Counterfactual-StoryRW with MIT License | 6 votes |
def get_pooling_layer_hparams(hparams): """Creates pooling layer hparams `dict` usable for :func:`get_layer`. If the :attr:`hparams` sets `'pool_size'` to `None`, the layer will be changed to the respective reduce-pooling layer. For example, :class:`tf.layers.MaxPooling1D <layers/MaxPooling1D>` is replaced with :class:`~texar.core.MaxReducePooling1D`. """ if isinstance(hparams, HParams): hparams = hparams.todict() new_hparams = copy.copy(hparams) kwargs = new_hparams.get('kwargs', None) if kwargs and kwargs.get('pool_size', None) is None: pool_type = hparams['type'] new_hparams['type'] = _POOLING_TO_REDUCE.get(pool_type, pool_type) kwargs.pop('pool_size', None) kwargs.pop('strides', None) kwargs.pop('padding', None) return new_hparams
Example #15
Source File: layers.py From Counterfactual-StoryRW with MIT License | 6 votes |
def _compute_concat_output_shape(input_shape, axis): """Infers the output shape of concat given the input shape. The code is adapted from the ConcatLayer of lasagne (https://github.com/Lasagne/Lasagne/blob/master/lasagne/layers/merge.py) Args: input_shape (list): A list of shapes, each of which is in turn a list or TensorShape. axis (int): Axis of the concat operation. Returns: list: Output shape of concat. """ # The size of each axis of the output shape equals the first # input size of respective axis that is not `None` input_shape = [tf.TensorShape(s).as_list() for s in input_shape] output_shape = [next((s for s in sizes if s is not None), None) for sizes in zip(*input_shape)] axis_sizes = [s[axis] for s in input_shape] concat_axis_size = None if any(s is None for s in axis_sizes) \ else sum(axis_sizes) output_shape[axis] = concat_axis_size return output_shape
Example #16
Source File: convnet.py From kfac with Apache License 2.0 | 6 votes |
def max_pool_layer(layer_id, inputs, kernel_size, stride): """Build a max-pooling layer. Args: layer_id: int. Integer ID for this layer's variables. inputs: Tensor of shape [num_examples, width, height, in_channels]. Each row corresponds to a single example. kernel_size: int. Width and height to pool over per input channel. The kernel is assumed to be square. stride: int. Step size between pooling operations. Returns: Tensor of shape [num_examples, width/stride, height/stride, out_channels]. Result of applying max pooling to 'inputs'. """ # TODO(b/67004004): Delete this function and rely on tf.layers exclusively. with tf.variable_scope("pool_%d" % layer_id): return tf.nn.max_pool( inputs, [1, kernel_size, kernel_size, 1], [1, stride, stride, 1], padding="SAME", name="pool")
Example #17
Source File: emily.py From BERT with Apache License 2.0 | 6 votes |
def lstm_gaussian(self, inputs, states, hidden_size, output_size, nlayers, name): """Stacked LSTM layers with FC layer as input and gaussian as output. Args: inputs: input tensor states: a list of internal lstm states for each layer hidden_size: number of lstm units output_size: size of the output nlayers: number of lstm layers name: the lstm name for scope definition Returns: mu: mean of the predicted gaussian logvar: log(var) of the predicted gaussian skips: a list of updated lstm states for each layer """ net = inputs net = tfl.dense(net, hidden_size, activation=None, name="%sf1"%name) for i in range(nlayers): net, states[i] = common_video.basic_lstm( net, states[i], hidden_size, name="%slstm%d"%(name, i)) mu = tfl.dense(net, output_size, activation=None, name="%sf2mu"%name) logvar = tfl.dense(net, output_size, activation=None, name="%sf2log"%name) return mu, logvar, states
Example #18
Source File: basic_stochastic.py From BERT with Apache License 2.0 | 6 votes |
def update_internal_states_early(self, internal_states, frames): """Update the internal states early in the network in GRU-like way.""" batch_size = common_layers.shape_list(frames[0])[0] internal_state = internal_states[0][0][:batch_size, :, :, :] state_activation = tf.concat([internal_state, frames[0]], axis=-1) state_gate_candidate = tf.layers.conv2d( state_activation, 2 * self.hparams.recurrent_state_size, (3, 3), padding="SAME", name="state_conv") state_gate, state_candidate = tf.split(state_gate_candidate, 2, axis=-1) state_gate = tf.nn.sigmoid(state_gate) state_candidate = tf.tanh(state_candidate) internal_state = internal_state * state_gate internal_state += state_candidate * (1.0 - state_gate) max_batch_size = max(_MAX_BATCH, self.hparams.batch_size) diff_batch_size = max_batch_size - batch_size internal_state = tf.pad( internal_state, [[0, diff_batch_size], [0, 0], [0, 0], [0, 0]]) return [[internal_state]]
Example #19
Source File: sv2p.py From BERT with Apache License 2.0 | 6 votes |
def reward_prediction_mid( self, input_images, input_reward, action, latent, mid_outputs): """Builds a reward prediction network from intermediate layers.""" encoded = [] for i, output in enumerate(mid_outputs): enc = output enc = tfl.conv2d(enc, 64, [3, 3], strides=(1, 1), activation=tf.nn.relu) enc = tfl.conv2d(enc, 32, [3, 3], strides=(2, 2), activation=tf.nn.relu) enc = tfl.conv2d(enc, 16, [3, 3], strides=(2, 2), activation=tf.nn.relu) enc = tfl.flatten(enc) enc = tfl.dense(enc, 64, activation=tf.nn.relu, name="rew_enc_%d" % i) encoded.append(enc) x = encoded x = tf.stack(x, axis=1) x = tfl.flatten(x) x = tfl.dense(x, 256, activation=tf.nn.relu, name="rew_dense1") x = tfl.dense(x, 128, activation=tf.nn.relu, name="rew_dense2") return x
Example #20
Source File: common_layers.py From BERT with Apache License 2.0 | 6 votes |
def double_discriminator(x, filters1=128, filters2=None, kernel_size=8, strides=4, pure_mean=False): """A convolutional discriminator with 2 layers and concatenated output.""" if filters2 is None: filters2 = 4 * filters1 with tf.variable_scope("discriminator"): batch_size = shape_list(x)[0] net = layers().Conv2D( filters1, kernel_size, strides=strides, padding="SAME", name="conv1")(x) if pure_mean: net1 = tf.reduce_mean(net, [1, 2]) else: net1 = mean_with_attention(net, "mean_with_attention1") tf.reshape(net, [batch_size, -1]) net = tf.nn.relu(net) net = layers().Conv2D( filters2, kernel_size, strides=strides, padding="SAME", name="conv2")(x) if pure_mean: net2 = tf.reduce_mean(net, [1, 2]) else: net2 = mean_with_attention(net, "mean_with_attention2") return tf.concat([net1, net2], axis=-1)
Example #21
Source File: convnet_builder.py From benchmarks with The Unlicense | 6 votes |
def _conv2d_impl(self, input_layer, num_channels_in, filters, kernel_size, strides, padding, kernel_initializer): if self.use_tf_layers: return conv_layers.conv2d(input_layer, filters, kernel_size, strides, padding, self.channel_pos, kernel_initializer=kernel_initializer, use_bias=False) else: weights_shape = [kernel_size[0], kernel_size[1], num_channels_in, filters] # We use the name 'conv2d/kernel' so the variable has the same name as its # tf.layers equivalent. This way, if a checkpoint is written when # self.use_tf_layers == True, it can be loaded when # self.use_tf_layers == False, and vice versa. weights = self.get_variable('conv2d/kernel', weights_shape, self.variable_dtype, self.dtype, initializer=kernel_initializer) if self.data_format == 'NHWC': strides = [1] + strides + [1] else: strides = [1, 1] + strides return tf.nn.conv2d(input_layer, weights, strides, padding, data_format=self.data_format)
Example #22
Source File: tflayer.py From petridishnn with MIT License | 6 votes |
def monkeypatch_tf_layers(): if get_tf_version_tuple() < (1, 4): if not hasattr(tf.layers, 'Dense'): from tensorflow.python.layers.core import Dense tf.layers.Dense = Dense from tensorflow.python.layers.normalization import BatchNormalization tf.layers.BatchNormalization = BatchNormalization from tensorflow.python.layers.convolutional import Conv2DTranspose, Conv2D tf.layers.Conv2DTranspose = Conv2DTranspose tf.layers.Conv2D = Conv2D from tensorflow.python.layers.pooling import MaxPooling2D, AveragePooling2D tf.layers.MaxPooling2D = MaxPooling2D tf.layers.AveragePooling2D = AveragePooling2D
Example #23
Source File: mnist_eager.py From dockerfiles with Apache License 2.0 | 6 votes |
def __init__(self, data_format): """Creates a model for classifying a hand-written digit. Args: data_format: Either 'channels_first' or 'channels_last'. 'channels_first' is typically faster on GPUs while 'channels_last' is typically faster on CPUs. See https://www.tensorflow.org/performance/performance_guide#data_formats """ super(MNISTModel, self).__init__(name='') if data_format == 'channels_first': self._input_shape = [-1, 1, 28, 28] else: assert data_format == 'channels_last' self._input_shape = [-1, 28, 28, 1] self.conv1 = self.track_layer( tf.layers.Conv2D(32, 5, data_format=data_format, activation=tf.nn.relu)) self.conv2 = self.track_layer( tf.layers.Conv2D(64, 5, data_format=data_format, activation=tf.nn.relu)) self.fc1 = self.track_layer(tf.layers.Dense(1024, activation=tf.nn.relu)) self.fc2 = self.track_layer(tf.layers.Dense(10)) self.dropout = self.track_layer(tf.layers.Dropout(0.5)) self.max_pool2d = self.track_layer( tf.layers.MaxPooling2D( (2, 2), (2, 2), padding='SAME', data_format=data_format))
Example #24
Source File: common_video.py From BERT with Apache License 2.0 | 5 votes |
def inject_additional_input(layer, inputs, name, mode="concat"): """Injects the additional input into the layer. Args: layer: layer that the input should be injected to. inputs: inputs to be injected. name: TF scope name. mode: how the infor should be added to the layer: "concat" concats as additional channels. "multiplicative" broadcasts inputs and multiply them to the channels. "multi_additive" broadcasts inputs and multiply and add to the channels. Returns: updated layer. Raises: ValueError: in case of unknown mode. """ layer_shape = common_layers.shape_list(layer) input_shape = common_layers.shape_list(inputs) zeros_mask = tf.zeros(layer_shape, dtype=tf.float32) if mode == "concat": emb = encode_to_shape(inputs, layer_shape, name) layer = tf.concat(values=[layer, emb], axis=-1) elif mode == "multiplicative": filters = layer_shape[-1] input_reshaped = tf.reshape(inputs, [-1, 1, 1, input_shape[-1]]) input_mask = tf.layers.dense(input_reshaped, filters, name=name) input_broad = input_mask + zeros_mask layer *= input_broad elif mode == "multi_additive": filters = layer_shape[-1] input_reshaped = tf.reshape(inputs, [-1, 1, 1, input_shape[-1]]) input_mul = tf.layers.dense(input_reshaped, filters, name=name + "_mul") layer *= tf.nn.sigmoid(input_mul) input_add = tf.layers.dense(input_reshaped, filters, name=name + "_add") layer += input_add else: raise ValueError("Unknown injection mode: %s" % mode) return layer
Example #25
Source File: convnet.py From kfac with Apache License 2.0 | 5 votes |
def conv_layer(layer_id, inputs, kernel_size, out_channels): """Builds a convolutional layer with ReLU non-linearity. Args: layer_id: int. Integer ID for this layer's variables. inputs: Tensor of shape [num_examples, width, height, in_channels]. Each row corresponds to a single example. kernel_size: int. Width and height of the convolution kernel. The kernel is assumed to be square. out_channels: int. Number of output features per pixel. Returns: preactivations: Tensor of shape [num_examples, width, height, out_channels]. Values of the layer immediately before the activation function. activations: Tensor of shape [num_examples, width, height, out_channels]. Values of the layer immediately after the activation function. params: Tuple of (kernel, bias), parameters for this layer. """ # TODO(b/67004004): Delete this function and rely on tf.layers exclusively. layer = tf.layers.Conv2D( out_channels, kernel_size=[kernel_size, kernel_size], kernel_initializer=tf.random_normal_initializer(stddev=0.01), padding="SAME", name="conv_%d" % layer_id) preactivations = layer(inputs) activations = tf.nn.relu(preactivations) # layer.weights is a list. This converts it a (hashable) tuple. return preactivations, activations, (layer.kernel, layer.bias)
Example #26
Source File: basic_deterministic.py From training_results_v0.5 with Apache License 2.0 | 5 votes |
def middle_network(self, layer, internal_states): # Run a stack of convolutions. x = layer kernel1 = (3, 3) filters = common_layers.shape_list(x)[-1] for i in range(self.hparams.num_hidden_layers): with tf.variable_scope("layer%d" % i): y = tf.nn.dropout(x, 1.0 - self.hparams.residual_dropout) y = tf.layers.conv2d(y, filters, kernel1, activation=common_layers.belu, strides=(1, 1), padding="SAME") if i == 0: x = y else: x = common_layers.layer_norm(x + y) return x, internal_states
Example #27
Source File: basic_recurrent.py From training_results_v0.5 with Apache License 2.0 | 5 votes |
def middle_network(self, layer, internal_states): lstm_func = common_video.conv_lstm_2d hp = self.hparams lstm_states = internal_states if lstm_states is None: lstm_states = [None] * hp.num_lstm_layers # LSTM layers x = layer for j in range(hp.num_lstm_layers): x, lstm_states[j] = lstm_func(x, lstm_states[j], hp.num_lstm_filters) return x, lstm_states
Example #28
Source File: common_layers.py From BERT with Apache License 2.0 | 5 votes |
def __init__(self, layer, data_init=False, **kwargs): if not isinstance(layer, tf.keras.layers.Layer): raise ValueError( "Please initialize `WeightNorm` layer with a " "`Layer` instance. You passed: {input}".format(input=layer)) super(WeightNorm, self).__init__(layer, **kwargs) self._track_trackable(layer, name="layer")
Example #29
Source File: convnet.py From kfac with Apache License 2.0 | 5 votes |
def fc_layer(layer_id, inputs, output_size): """Builds a fully connected layer. Args: layer_id: int. Integer ID for this layer's variables. inputs: Tensor of shape [num_examples, input_size]. Each row corresponds to a single example. output_size: int. Number of output dimensions after fully connected layer. Returns: preactivations: Tensor of shape [num_examples, output_size]. Values of the layer immediately before the activation function. activations: Tensor of shape [num_examples, output_size]. Values of the layer immediately after the activation function. params: Tuple of (weights, bias), parameters for this layer. """ # TODO(b/67004004): Delete this function and rely on tf.layers exclusively. layer = tf.layers.Dense( output_size, kernel_initializer=tf.random_normal_initializer(), name="fc_%d" % layer_id) preactivations = layer(inputs) activations = tf.nn.tanh(preactivations) # layer.weights is a list. This converts it a (hashable) tuple. return preactivations, activations, (layer.kernel, layer.bias)
Example #30
Source File: convnet_builder.py From parallax with Apache License 2.0 | 5 votes |
def batch_norm(self, input_layer=None, decay=0.999, scale=False, epsilon=0.001): """Adds a Batch Normalization layer.""" if input_layer is None: input_layer = self.top_layer else: self.top_size = None name = 'batchnorm' + str(self.counts['batchnorm']) self.counts['batchnorm'] += 1 with tf.variable_scope(name) as scope: if self.use_tf_layers: bn = tf.contrib.layers.batch_norm( input_layer, decay=decay, scale=scale, epsilon=epsilon, is_training=self.phase_train, fused=True, data_format=self.data_format, scope=scope) else: bn = self._batch_norm_without_layers(input_layer, decay, scale, epsilon) self.top_layer = bn self.top_size = bn.shape[3] if self.data_format == 'NHWC' else bn.shape[ 1] self.top_size = int(self.top_size) return bn