ConvDiagonalFB
Inherits From: FisherBlock
Defined in tensorflow/contrib/kfac/python/ops/fisher_blocks.py.
FisherBlock for 2-D convolutional layers using a diagonal approx.
Estimates the Fisher Information matrix's diagonal entries for a convolutional layer. Unlike NaiveDiagonalFB this uses the low-variance "sum of squares" estimator.
Let 'params' be a vector parameterizing a model and 'i' an arbitrary index into it. We are interested in Fisher(params)[i, i]. This is,
Consider a convoluational layer in this model with (unshared) filter matrix 'w'. For an example image 'x' that produces layer inputs 'a' and output preactivations 's',
where 'loc' is a single (x, y) location in an image.
This FisherBlock tracks Fisher(params)[i, i] for all indices 'i' corresponding to the layer's parameters 'w'.
num_registered_towers__init____init__(
layer_collection,
params,
strides,
padding,
data_format=None,
dilations=None
)
Creates a ConvDiagonalFB block.
layer_collection: The collection of all layers in the K-FAC approximate Fisher information matrix to which this FisherBlock belongs.params: The parameters (Tensor or tuple of Tensors) of this layer. If kernel alone, a Tensor of shape [kernel_height, kernel_width, in_channels, out_channels]. If kernel and bias, a tuple of 2 elements containing the previous and a Tensor of shape [out_channels].strides: The stride size in this layer (1-D Tensor of length 4).padding: The padding in this layer (e.g. "SAME").data_format: str or None. Format of input data.dilations: List of 4 ints or None. Rate for dilation along all dimensions.ValueError: if strides is not length-4.ValueError: if dilations is not length-4.ValueError: if channel is not last dimension.instantiate_factorsinstantiate_factors(
grads_list,
damping
)
Creates and registers the component factors of this Fisher block.
grads_list: A list gradients (each a Tensor or tuple of Tensors) with respect to the tensors returned by tensors_to_compute_grads() that are to be used to estimate the block.damping: The damping factor (float or Tensor).multiplymultiply(vector)
Multiplies the vector by the (damped) block.
vector: The vector (a Tensor or tuple of Tensors) to be multiplied.The vector left-multiplied by the (damped) block.
multiply_inversemultiply_inverse(vector)
Multiplies the vector by the (damped) inverse of the block.
vector: The vector (a Tensor or tuple of Tensors) to be multiplied.The vector left-multiplied by the (damped) inverse of the block.
multiply_matpowermultiply_matpower(
vector,
exp
)
Multiplies the vector by the (damped) matrix-power of the block.
vector: The vector (a Tensor or tuple of Tensors) to be multiplied.exp: A float representing the power to raise the block by before multiplying it by the vector.The vector left-multiplied by the (damped) matrix-power of the block.
register_additional_towerregister_additional_tower(
inputs,
outputs
)
register_inverseregister_inverse()
Registers a matrix inverse to be computed by the block.
register_matpowerregister_matpower(exp)
Registers a matrix power to be computed by the block.
exp: A float representing the power to raise the block by.tensors_to_compute_gradstensors_to_compute_grads()
Tensors to compute derivative of loss with respect to.
© 2018 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/contrib/kfac/fisher_blocks/ConvDiagonalFB