本文整理汇总了Python中tflearn.utils.get_incoming_shape函数的典型用法代码示例。如果您正苦于以下问题:Python get_incoming_shape函数的具体用法?Python get_incoming_shape怎么用?Python get_incoming_shape使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了get_incoming_shape函数的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: time_distributed
def time_distributed(incoming, fn, args=None, scope=None):
""" Time Distributed.
This layer applies a function to every timestep of the input tensor. The
custom function first argument must be the input tensor at every timestep.
Additional parameters for the custom function may be specified in 'args'
argument (as a list).
Examples:
```python
# Applying a fully_connected layer at every timestep
x = time_distributed(input_tensor, fully_connected, [64])
# Using a conv layer at every timestep with a scope
x = time_distributed(input_tensor, conv_2d, [64, 3], scope='tconv')
```
Input:
(3+)-D Tensor [samples, timestep, input_dim].
Output:
(3+)-D Tensor [samples, timestep, output_dim].
Arguments:
incoming: `Tensor`. The incoming tensor.
fn: `function`. A function to apply at every timestep. This function
first parameter must be the input tensor per timestep. Additional
parameters may be specified in 'args' argument.
args: `list`. A list of parameters to use with the provided function.
scope: `str`. A scope to give to each timestep tensor. Useful when
sharing weights. Each timestep tensor scope will be generated
as 'scope'-'i' where i represents the timestep id. Note that your
custom function will be required to have a 'scope' parameter.
Returns:
A Tensor.
"""
if not args: args = list()
assert isinstance(args, list), "'args' must be a list."
if not isinstance(incoming, tf.Tensor):
incoming = tf.transpose(tf.stack(incoming), [1, 0, 2])
input_shape = utils.get_incoming_shape(incoming)
timestep = input_shape[1]
x = tf.unstack(incoming, axis=1)
if scope:
x = [fn(x[i], scope=scope+'-'+str(i), *args)
for i in range(timestep)]
else:
x = [fn(x[i], *args) for i in range(timestep)]
try:
x = map(lambda t: tf.reshape(t, [-1, 1]+utils.get_incoming_shape(t)[1:]), x)
except:
x = list(map(lambda t: tf.reshape(t, [-1, 1]+utils.get_incoming_shape(t)[1:]), x))
return tf.concat(1, x)
示例2: flatten
def flatten(incoming, name="Flatten"):
""" Flatten.
Flatten the incoming Tensor.
Input:
(2+)-D `Tensor`.
Output:
2-D `Tensor` [batch, flatten_dims].
Arguments:
incoming: `Tensor`. The incoming tensor.
"""
input_shape = utils.get_incoming_shape(incoming)
assert len(input_shape) > 1, "Incoming Tensor shape must be at least 2-D"
dims = int(np.prod(input_shape[1:]))
return reshape(incoming, [-1, dims], name)
示例3: flatten
def flatten(incoming, name="Flatten"):
""" Flatten.
Flatten the incoming Tensor.
Input:
(2+)-D `Tensor`.
Output:
2-D `Tensor` [batch, flatten_dims].
Arguments:
incoming: `Tensor`. The incoming tensor.
"""
input_shape = utils.get_incoming_shape(incoming)
assert len(input_shape) > 1, "Incoming Tensor shape must be at least 2-D"
dims = int(np.prod(input_shape[1:]))
x = reshape(incoming, [-1, dims], name)
# Track output tensor.
tf.add_to_collection(tf.GraphKeys.LAYER_TENSOR + '/' + name, x)
return x
示例4: fully_connected
def fully_connected(incoming, n_units, activation='linear', bias=True,
weights_init='truncated_normal', bias_init='zeros',
regularizer=None, weight_decay=0.001, trainable=True,
restore=True, reuse=False, scope=None,
name="FullyConnected"):
""" Fully Connected.
A fully connected layer.
Input:
(2+)-D Tensor [samples, input dim]. If not 2D, input will be flatten.
Output:
2D Tensor [samples, n_units].
Arguments:
incoming: `Tensor`. Incoming (2+)D Tensor.
n_units: `int`, number of units for this layer.
activation: `str` (name) or `function` (returning a `Tensor`).
Activation applied to this layer (see tflearn.activations).
Default: 'linear'.
bias: `bool`. If True, a bias is used.
weights_init: `str` (name) or `Tensor`. Weights initialization.
(see tflearn.initializations) Default: 'truncated_normal'.
bias_init: `str` (name) or `Tensor`. Bias initialization.
(see tflearn.initializations) Default: 'zeros'.
regularizer: `str` (name) or `Tensor`. Add a regularizer to this
layer weights (see tflearn.regularizers). Default: None.
weight_decay: `float`. Regularizer decay parameter. Default: 0.001.
trainable: `bool`. If True, weights will be trainable.
restore: `bool`. If True, this layer weights will be restored when
loading a model.
reuse: `bool`. If True and 'scope' is provided, this layer variables
will be reused (shared).
scope: `str`. Define this layer scope (optional). A scope can be
used to share variables between layers. Note that scope will
override name.
name: A name for this layer (optional). Default: 'FullyConnected'.
Attributes:
scope: `Scope`. This layer scope.
W: `Tensor`. Variable representing units weights.
b: `Tensor`. Variable representing biases.
"""
input_shape = utils.get_incoming_shape(incoming)
assert len(input_shape) > 1, "Incoming Tensor shape must be at least 2-D"
n_inputs = int(np.prod(input_shape[1:]))
# Build variables and inference.
with tf.variable_op_scope([incoming], scope, name, reuse=reuse) as scope:
name = scope.name
W_init = weights_init
if isinstance(weights_init, str):
W_init = initializations.get(weights_init)()
W_regul = None
if regularizer:
W_regul = lambda x: losses.get(regularizer)(x, weight_decay)
W = va.variable('W', shape=[n_inputs, n_units], regularizer=W_regul,
initializer=W_init, trainable=trainable,
restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, W)
b = None
if bias:
if isinstance(bias, str):
bias_init = initializations.get(bias_init)()
b = va.variable('b', shape=[n_units], initializer=bias_init,
trainable=trainable, restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, b)
inference = incoming
# If input is not 2d, flatten it.
if len(input_shape) > 2:
inference = tf.reshape(inference, [-1, n_inputs])
inference = tf.matmul(inference, W)
if b: inference = tf.nn.bias_add(inference, b)
if isinstance(activation, str):
inference = activations.get(activation)(inference)
elif hasattr(activation, '__call__'):
inference = activation(inference)
else:
raise ValueError("Invalid Activation.")
# Track activations.
tf.add_to_collection(tf.GraphKeys.ACTIVATIONS, inference)
# Add attributes to Tensor to easy access weights.
inference.scope = scope
inference.W = W
inference.b = b
# Track output tensor.
tf.add_to_collection(tf.GraphKeys.LAYER_TENSOR + '/' + name, inference)
return inference
示例5: highway
def highway(incoming, n_units, activation='linear', transform_dropout=None,
weights_init='truncated_normal', bias_init='zeros',
regularizer=None, weight_decay=0.001, trainable=True,
restore=True, reuse=False, scope=None,
name="FullyConnectedHighway"):
""" Fully Connected Highway.
A fully connected highway network layer, with some inspiration from
[https://github.com/fomorians/highway-fcn](https://github.com/fomorians/highway-fcn).
Input:
(2+)-D Tensor [samples, input dim]. If not 2D, input will be flatten.
Output:
2D Tensor [samples, n_units].
Arguments:
incoming: `Tensor`. Incoming (2+)D Tensor.
n_units: `int`, number of units for this layer.
activation: `str` (name) or `function` (returning a `Tensor`).
Activation applied to this layer (see tflearn.activations).
Default: 'linear'.
transform_dropout: `float`: Keep probability on the highway transform gate.
weights_init: `str` (name) or `Tensor`. Weights initialization.
(see tflearn.initializations) Default: 'truncated_normal'.
bias_init: `str` (name) or `Tensor`. Bias initialization.
(see tflearn.initializations) Default: 'zeros'.
regularizer: `str` (name) or `Tensor`. Add a regularizer to this
layer weights (see tflearn.regularizers). Default: None.
weight_decay: `float`. Regularizer decay parameter. Default: 0.001.
trainable: `bool`. If True, weights will be trainable.
restore: `bool`. If True, this layer weights will be restored when
loading a model
reuse: `bool`. If True and 'scope' is provided, this layer variables
will be reused (shared).
scope: `str`. Define this layer scope (optional). A scope can be
used to share variables between layers. Note that scope will
override name.
name: A name for this layer (optional). Default: 'FullyConnectedHighway'.
Attributes:
scope: `Scope`. This layer scope.
W: `Tensor`. Variable representing units weights.
W_t: `Tensor`. Variable representing units weights for transform gate.
b: `Tensor`. Variable representing biases.
b_t: `Tensor`. Variable representing biases for transform gate.
Links:
[https://arxiv.org/abs/1505.00387](https://arxiv.org/abs/1505.00387)
"""
input_shape = utils.get_incoming_shape(incoming)
assert len(input_shape) > 1, "Incoming Tensor shape must be at least 2-D"
n_inputs = int(np.prod(input_shape[1:]))
# Build variables and inference.
with tf.variable_op_scope([incoming], scope, name, reuse=reuse) as scope:
name = scope.name
W_init = weights_init
if isinstance(weights_init, str):
W_init = initializations.get(weights_init)()
W_regul = None
if regularizer:
W_regul = lambda x: losses.get(regularizer)(x, weight_decay)
W = va.variable('W', shape=[n_inputs, n_units], regularizer=W_regul,
initializer=W_init, trainable=trainable,
restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, W)
if isinstance(bias_init, str):
bias_init = initializations.get(bias_init)()
b = va.variable('b', shape=[n_units], initializer=bias_init,
trainable=trainable, restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, b)
# Weight and bias for the transform gate
W_T = va.variable('W_T', shape=[n_inputs, n_units],
regularizer=None, initializer=W_init,
trainable=trainable, restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, W_T)
b_T = va.variable('b_T', shape=[n_units],
initializer=tf.constant_initializer(-1),
trainable=trainable, restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, b_T)
# If input is not 2d, flatten it.
if len(input_shape) > 2:
incoming = tf.reshape(incoming, [-1, n_inputs])
if isinstance(activation, str):
activation = activations.get(activation)
elif hasattr(activation, '__call__'):
activation = activation
else:
raise ValueError("Invalid Activation.")
H = activation(tf.matmul(incoming, W) + b)
T = tf.sigmoid(tf.matmul(incoming, W_T) + b_T)
#.........这里部分代码省略.........
示例6: single_unit
def single_unit(incoming, activation='linear', bias=True, trainable=True,
restore=True, reuse=False, scope=None, name="Linear"):
""" Single Unit.
A single unit (Linear) Layer.
Input:
1-D Tensor [samples]. If not 2D, input will be flatten.
Output:
1-D Tensor [samples].
Arguments:
incoming: `Tensor`. Incoming Tensor.
activation: `str` (name) or `function`. Activation applied to this
layer (see tflearn.activations). Default: 'linear'.
bias: `bool`. If True, a bias is used.
trainable: `bool`. If True, weights will be trainable.
restore: `bool`. If True, this layer weights will be restored when
loading a model.
reuse: `bool`. If True and 'scope' is provided, this layer variables
will be reused (shared).
scope: `str`. Define this layer scope (optional). A scope can be
used to share variables between layers. Note that scope will
override name.
name: A name for this layer (optional). Default: 'Linear'.
Attributes:
W: `Tensor`. Variable representing weight.
b: `Tensor`. Variable representing bias.
"""
input_shape = utils.get_incoming_shape(incoming)
n_inputs = int(np.prod(input_shape[1:]))
# Build variables and inference.
with tf.variable_op_scope([incoming], scope, name, reuse=reuse) as scope:
name = scope.name
W = va.variable('W', shape=[n_inputs],
initializer=tf.constant_initializer(np.random.randn()),
trainable=trainable, restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, W)
b = None
if bias:
b = va.variable('b', shape=[n_inputs],
initializer=tf.constant_initializer(np.random.randn()),
trainable=trainable, restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, b)
inference = incoming
# If input is not 2d, flatten it.
if len(input_shape) > 1:
inference = tf.reshape(inference, [-1])
inference = tf.mul(inference, W)
if b: inference = tf.add(inference, b)
if isinstance(activation, str):
inference = activations.get(activation)(inference)
elif hasattr(activation, '__call__'):
inference = activation(inference)
else:
raise ValueError("Invalid Activation.")
# Track activations.
tf.add_to_collection(tf.GraphKeys.ACTIVATIONS, inference)
# Add attributes to Tensor to easy access weights.
inference.scope = scope
inference.W = W
inference.b = b
# Track output tensor.
tf.add_to_collection(tf.GraphKeys.LAYER_TENSOR + '/' + name, inference)
return inference
示例7: regression
def regression(incoming, placeholder=None, optimizer='adam',
loss='categorical_crossentropy', metric='default',
learning_rate=0.001, dtype=tf.float32, batch_size=64,
shuffle_batches=True, to_one_hot=False, n_classes=None,
trainable_vars=None, restore=True, op_name=None, name=None):
""" Regression.
The regression layer is used in TFLearn to apply a regression (linear or
logistic) to the provided input. It requires to specify a TensorFlow
gradient descent optimizer 'optimizer' that will minimize the provided
loss function 'loss' (which calculate the errors). A metric can also be
provided, to evaluate the model performance.
A 'TrainOp' is generated, holding all information about the optimization
process. It is added to TensorFlow collection 'tf.GraphKeys.TRAIN_OPS'
and later used by TFLearn 'models' classes to perform the training.
An optional placeholder 'placeholder' can be specified to use a custom
TensorFlow target placeholder instead of creating a new one. The target
placeholder is added to the 'tf.GraphKeys.TARGETS' TensorFlow
collection, so that it can be retrieved later.
Additionaly, a list of variables 'trainable_vars' can be specified,
so that only them will be updated when applying the backpropagation
algorithm.
Input:
2-D Tensor Layer.
Output:
2-D Tensor Layer (Same as input).
Arguments:
incoming: `Tensor`. Incoming 2-D Tensor.
placeholder: `Tensor`. This regression target (label) placeholder.
If 'None' provided, a placeholder will be added automatically.
You can retrieve that placeholder through graph key: 'TARGETS',
or the 'placeholder' attribute of this function's returned tensor.
optimizer: `str` (name), `Optimizer` or `function`. Optimizer to use.
Default: 'adam' (Adaptive Moment Estimation).
loss: `str` (name) or `function`. Loss function used by this layer
optimizer. Default: 'categorical_crossentropy'.
metric: `str`, `Metric` or `function`. The metric to be used.
Default: 'default' metric is 'accuracy'. To disable metric
calculation, set it to 'None'.
learning_rate: `float`. This layer optimizer's learning rate.
dtype: `tf.types`. This layer placeholder type. Default: tf.float32.
batch_size: `int`. Batch size of data to use for training. tflearn
supports different batch size for every optimizers. Default: 64.
shuffle_batches: `bool`. Shuffle or not this optimizer batches at
every epoch. Default: True.
to_one_hot: `bool`. If True, labels will be encoded to one hot vectors.
'n_classes' must then be specified.
n_classes: `int`. The total number of classes. Only required when using
'to_one_hot' option.
trainable_vars: list of `Variable`. If specified, this regression will
only update given variable weights. Else, all trainale variable
are going to be updated.
restore: `bool`. If False, variables related to optimizers such
as moving averages will not be restored when loading a
pre-trained model.
op_name: A name for this layer optimizer (optional).
Default: optimizer op name.
name: A name for this layer's placeholder scope.
Attributes:
placeholder: `Tensor`. Placeholder for feeding labels.
"""
input_shape = utils.get_incoming_shape(incoming)
if placeholder is None:
pscope = "TargetsData" if not name else name
with tf.name_scope(pscope):
placeholder = tf.placeholder(shape=input_shape, dtype=dtype, name="Y")
tf.add_to_collection(tf.GraphKeys.TARGETS, placeholder)
if to_one_hot:
if n_classes is None:
raise Exception("'n_classes' is required when using 'to_one_hot'.")
placeholder = core.one_hot_encoding(placeholder, n_classes)
step_tensor = None
# Building Optimizer
if isinstance(optimizer, str):
_opt = optimizers.get(optimizer)(learning_rate)
op_name = op_name if op_name else type(_opt).__name__
_opt.build()
optimizer = _opt.get_tensor()
elif isinstance(optimizer, optimizers.Optimizer):
op_name = op_name if op_name else type(optimizer).__name__
if optimizer.has_decay:
step_tensor = tf.Variable(0., name="Training_step",
trainable=False)
optimizer.build(step_tensor)
optimizer = optimizer.get_tensor()
elif hasattr(optimizer, '__call__'):
try:
#.........这里部分代码省略.........
示例8: fully_connected
def fully_connected(incoming, n_units, activation='linear', bias=True,
weights_init='truncated_normal', bias_init='zeros',
regularizer=None, weight_decay=0.001, trainable=True,
restore=True, name="FullyConnected"):
""" Fully Connected.
A fully connected layer.
Input:
(2+)-D Tensor [samples, input dim]. If not 2D, input will be flatten.
Output:
2D Tensor [samples, n_units].
Arguments:
incoming: `Tensor`. Incoming (2+)D Tensor.
n_units: `int`, number of units for this layer.
activation: `str` (name) or `Tensor`. Activation applied to this layer.
(see tflearn.activations). Default: 'linear'.
bias: `bool`. If True, a bias is used.
weights_init: `str` (name) or `Tensor`. Weights initialization.
(see tflearn.initializations) Default: 'truncated_normal'.
bias_init: `str` (name) or `Tensor`. Bias initialization.
(see tflearn.initializations) Default: 'zeros'.
regularizer: `str` (name) or `Tensor`. Add a regularizer to this
layer weights (see tflearn.regularizers). Default: None.
weight_decay: `float`. Regularizer decay parameter. Default: 0.001.
trainable: `bool`. If True, weights will be trainable.
restore: `bool`. If True, this layer weights will be restored when
loading a model
name: A name for this layer (optional). Default: 'FullyConnected'.
Attributes:
scope: `Scope`. This layer scope.
W: `Tensor`. Variable representing units weights.
b: `Tensor`. Variable representing biases.
"""
input_shape = utils.get_incoming_shape(incoming)
n_inputs = int(np.prod(input_shape[1:]))
# Build variables and inference.
with tf.name_scope(name) as scope:
W_init = weights_init
if isinstance(weights_init, str):
W_init = initializations.get(weights_init)()
W_regul = None
if regularizer:
W_regul = lambda x: losses.get(regularizer)(x, weight_decay)
W = va.variable(scope + 'W', shape=[n_inputs, n_units],
regularizer=W_regul, initializer=W_init,
trainable=trainable, restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + scope, W)
b = None
if bias:
b_init = initializations.get(bias_init)()
b = va.variable(scope + 'b', shape=[n_units],
initializer=b_init, trainable=trainable,
restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + scope, b)
inference = incoming
# If input is not 2d, flatten it.
if len(input_shape) > 2:
inference = tf.reshape(inference, [-1, n_inputs])
inference = tf.matmul(inference, W)
if b: inference = tf.nn.bias_add(inference, b)
inference = activations.get(activation)(inference)
# Track activations.
tf.add_to_collection(tf.GraphKeys.ACTIVATIONS, inference)
# Add attributes to Tensor to easy access weights.
inference.scope = scope
inference.W = W
inference.b = b
return inference
示例9: single_unit
def single_unit(incoming, activation='linear', bias=True, trainable=True,
restore=True, name="Linear"):
""" Single Unit.
A single unit (Linear) Layer.
Input:
1-D Tensor [samples]. If not 2D, input will be flatten.
Output:
1-D Tensor [samples].
Arguments:
incoming: `Tensor`. Incoming Tensor.
activation: `str` (name) or `Tensor`. Activation applied to this layer.
(see tflearn.activations). Default: 'linear'.
bias: `bool`. If True, a bias is used.
trainable: `bool`. If True, weights will be trainable.
restore: `bool`. If True, this layer weights will be restored when
loading a model.
name: A name for this layer (optional). Default: 'Dense'.
Attributes:
W: `Tensor`. Variable representing weight.
b: `Tensor`. Variable representing bias.
"""
input_shape = utils.get_incoming_shape(incoming)
n_inputs = int(np.prod(input_shape[1:]))
# Build variables and inference.
with tf.name_scope(name) as scope:
W = va.variable(scope + 'W', shape=[n_inputs],
initializer=tf.constant_initializer(np.random.randn()),
trainable=trainable, restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + scope, W)
b = None
if bias:
b = va.variable(scope + 'b', shape=[n_inputs],
initializer=tf.constant_initializer(np.random.randn()),
trainable=trainable, restore=restore)
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + scope, b)
inference = incoming
# If input is not 2d, flatten it.
if len(input_shape) > 1:
inference = tf.reshape(inference, [-1])
inference = tf.mul(inference, W)
if b: inference = tf.add(inference, b)
inference = activations.get(activation)(inference)
# Track activations.
tf.add_to_collection(tf.GraphKeys.ACTIVATIONS, inference)
# Add attributes to Tensor to easy access weights.
inference.scope = scope
inference.W = W
inference.b = b
return inference
示例10: regression
def regression(incoming, placeholder=None, optimizer='adam',
loss='categorical_crossentropy', metric='default',
learning_rate=0.001, dtype=tf.float32, batch_size=64,
shuffle_batches=True, trainable_vars=None, op_name=None,
name=None):
""" Regression.
Input:
2-D Tensor Layer.
Output:
2-D Tensor Layer (Same as input).
Arguments:
incoming: `Tensor`. Incoming 2-D Tensor.
placeholder: `Tensor`. This regression target (label) placeholder.
If 'None' provided, a placeholder will be added automatically.
You can retrieve that placeholder through graph key: 'TARGETS',
or the 'placeholder' attribute of this function's returned tensor.
optimizer: `str` (name) or `Optimizer`. Optimizer to use.
Default: 'sgd' (Stochastic Descent Gradient).
loss: `str` (name) or `Tensor`. Loss function used by this layer
optimizer. Default: 'categorical_crossentropy'.
metric: `str`, `Metric` or `Tensor`. The metric to be used.
Default: 'default' metric is 'accuracy'. To disable metric
calculation, set it to 'None'.
learning_rate: `float`. This layer optimizer's learning rate.
dtype: `tf.types`. This layer placeholder type. Default: tf.float32.
batch_size: `int`. Batch size of data to use for training. tflearn
supports different batch size for every optimizers. Default: 64.
shuffle_batches: `bool`. Shuffle or not this optimizer batches at
every epoch. Default: True.
trainable_vars: list of `Variable`. If specified, this regression will
only update given variable weights. Else, all trainale variable
are going to be updated.
op_name: A name for this layer optimizer (optional).
Default: optimizer op name.
name: A name for this layer's placeholder scope.
Attributes:
placeholder: `Tensor`. Placeholder for feeding labels.
"""
input_shape = utils.get_incoming_shape(incoming)
if not placeholder:
pscope = "TargetsData" if not name else name
with tf.name_scope(pscope):
pshape = [None, input_shape[-1]]
if len(input_shape) == 1:
pshape = [None]
placeholder = tf.placeholder(shape=pshape, dtype=dtype, name="Y")
tf.add_to_collection(tf.GraphKeys.TARGETS, placeholder)
step_tensor = None
# Building Optimizer
if isinstance(optimizer, str):
_opt = optimizers.get(optimizer)(learning_rate)
op_name = op_name if op_name else type(_opt).__name__
_opt.build()
optimizer = _opt.get_tensor()
elif isinstance(optimizer, optimizers.Optimizer):
op_name = op_name if op_name else type(optimizer).__name__
if optimizer.has_decay:
step_tensor = tf.Variable(0., name="Training_step",
trainable=False)
optimizer.build(step_tensor)
optimizer = optimizer.get_tensor()
elif not isinstance(optimizer, tf.train.Optimizer):
raise ValueError("Invalid Optimizer type.")
inputs = tf.get_collection(tf.GraphKeys.INPUTS)
#inputs = tf.concat(0, utils.get_tensor_parents_placeholders(incoming))
# Building metric
# No auto accuracy for linear regression
if len(input_shape) == 1 and metric == 'default':
metric = None
if metric is not None:
# Default metric is accuracy
if metric == 'default': metric = 'accuracy'
if isinstance(metric, str):
metric = metrics.get(metric)()
metric.build(incoming, placeholder, inputs)
metric = metric.get_tensor()
elif isinstance(metric, metrics.Metric):
metric.build(incoming, placeholder, inputs)
metric = metric.get_tensor()
elif not isinstance(metric, tf.Tensor):
ValueError("Invalid Metric type.")
# Building other ops (loss, training ops...)
if isinstance(loss, str):
loss = objectives.get(loss)(incoming, placeholder)
elif not isinstance(loss, tf.Tensor):
raise ValueError("Invalid Loss type.")
tr_vars = trainable_vars
#.........这里部分代码省略.........
示例11: conv_2d_BN
def conv_2d_BN(incoming, nb_filter, filter_size, strides=1, padding='same',
activation='linear', bias=True, weights_init='xavier',
bias_init='zeros', regularizer=None, weight_decay=0.001,
trainable=True, restore=True, reuse=False, scope=None,
name="Conv2D", batch_norm=False):
""" Convolution 2D.
Input:
4-D Tensor [batch, height, width, in_channels].
Output:
4-D Tensor [batch, new height, new width, nb_filter].
Arguments:
incoming: `Tensor`. Incoming 4-D Tensor.
nb_filter: `int`. The number of convolutional filters.
filter_size: `int` or `list of int`. Size of filters.
strides: 'int` or list of `int`. Strides of conv operation.
Default: [1 1 1 1].
padding: `str` from `"same", "valid"`. Padding algo to use.
Default: 'same'.
activation: `str` (name) or `function` (returning a `Tensor`).
Activation applied to this layer (see tflearn.activations).
Default: 'linear'.
bias: `bool`. If True, a bias is used.
weights_init: `str` (name) or `Tensor`. Weights initialization.
(see tflearn.initializations) Default: 'truncated_normal'.
bias_init: `str` (name) or `Tensor`. Bias initialization.
(see tflearn.initializations) Default: 'zeros'.
regularizer: `str` (name) or `Tensor`. Add a regularizer to this
layer weights (see tflearn.regularizers). Default: None.
weight_decay: `float`. Regularizer decay parameter. Default: 0.001.
trainable: `bool`. If True, weights will be trainable.
restore: `bool`. If True, this layer weights will be restored when
loading a model.
reuse: `bool`. If True and 'scope' is provided, this layer variables
will be reused (shared).
scope: `str`. Define this layer scope (optional). A scope can be
used to share variables between layers. Note that scope will
override name.
name: A name for this layer (optional). Default: 'Conv2D'.
batch_norm: If true, add batch normalization with default TFLearn
parameters before the activation layer
Attributes:
scope: `Scope`. This layer scope.
W: `Variable`. Variable representing filter weights.
b: `Variable`. Variable representing biases.
"""
input_shape = utils.get_incoming_shape(incoming)
assert len(input_shape) == 4, "Incoming Tensor shape must be 4-D"
filter_size = utils.autoformat_filter_conv2d(filter_size,
input_shape[-1],
nb_filter)
strides = utils.autoformat_kernel_2d(strides)
padding = utils.autoformat_padding(padding)
# Variable Scope fix for older TF
try:
vscope = tf.variable_scope(scope, default_name=name, values=[incoming],
reuse=reuse)
except Exception:
vscope = tf.variable_op_scope([incoming], scope, name, reuse=reuse)
with vscope as scope:
name = scope.name
W_init = weights_init
if isinstance(weights_init, str):
W_init = initializations.get(weights_init)()
W_regul = None
if regularizer:
W_regul = lambda x: losses.get(regularizer)(x, weight_decay)
W = vs.variable('W', shape=filter_size, regularizer=W_regul,
initializer=W_init, trainable=trainable,
restore=restore)
# Track per layer variables
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, W)
b = None
if bias:
if isinstance(bias_init, str):
bias_init = initializations.get(bias_init)()
b = vs.variable('b', shape=nb_filter, initializer=bias_init,
trainable=trainable, restore=restore)
# Track per layer variables
tf.add_to_collection(tf.GraphKeys.LAYER_VARIABLES + '/' + name, b)
inference = tf.nn.conv2d(incoming, W, strides, padding)
if b: inference = tf.nn.bias_add(inference, b)
if batch_norm:
inference = batch_normalization(inference)
if isinstance(activation, str):
if activation == 'softmax':
shapes = inference.get_shape()
inference = activations.get(activation)(inference)
elif hasattr(activation, '__call__'):
inference = activation(inference)
else:
raise ValueError("Invalid Activation.")
#.........这里部分代码省略.........