TensorFlow函数:tf.layers.SeparableConv2D

2018-08-02 10:40 更新

tf.layers.SeparableConv2D函数

SeparableConv2D类

定义在:tensorflow/python/layers/convolutional.py.

深度(depthwise)可分离的2D卷积.

该层执行深度(depthwise)卷积,分别对通道起作用,然后是混合通道的逐点卷积.如果use_bias为True且提供了偏置初始化设定项,则会向输出添加偏置向量.然后它可选地应用激活函数来产生最终输出.

参数:

  • filters:一个整数,用于表示输出空间的维数(即卷积中的滤波器数).
  • kernel_size:一个元组或2个整数的列表,指定过滤器的空间维度,可以是单个整数,以指定所有空间维度的相同值.
  • strides:一个元组或2个正整数的列表,指定卷积的步幅,可以是单个整数,以指定所有空间维度的相同值,指定任何stride值!= 1与指定任何dilation_rate值!= 1都不相容.
  • padding:一个"valid"或"same"(不区分大小写).
  • data_format:一个字符串,可以是channels_last(默认)或channels_first,表示输入中维度的顺序;channels_last对应于具有形状(batch, height, width, channels)的输入,而channels_first对应于具有形状(batch, channels, height, width)的输入.
  • dilation_rate:2个整数的整数或元组/列表,指定用于扩张卷积的扩张率;可以是单个整数,以指定所有空间维度的相同值;目前,指定任何dilation_rate值!= 1与指定任何步幅值!= 1都不相容.
  • depth_multiplier:每个输入通道的深度卷积输出通道数,深度卷积输出通道的总数将等于:num_filters_in * depth_multiplier.
  • activation:激活功能,将其设置为“None”以保持线性激活.
  • use_bias:Boolean,判断该层是否使用偏差.
  • depthwise_initializer:深度卷积内核的初始化程序.
  • pointwise_initializer:逐点卷积内核的初始化程序.
  • bias_initializer:偏置向量的初始化器;如果为None,将使用默认初始值设定项.
  • depthwise_regularizer:深度卷积内核的可选正则化器.
  • pointwise_regularizer:针对逐点卷积内核的可选正则化器.
  • bias_regularizer:偏置矢量的可选正则化器.
  • activity_regularizer:输出的可选正则化函数.
  • depthwise_constraint:可选投影函数,在由Optimizer更新后应用于深度内核(例如,用于范数约束或层权重的值约束).该函数必须将未投影的变量作为输入,并且必须返回投影变量(必须具有相同的形状).在进行异步分布式培训时,使用约束是不安全的.
  • pointwise_constraint:由Optimizer更新后应用于逐点内核的可选投影函数.
  • bias_constraint:由Optimizer更新后应用于偏差的可选投影函数.
  • trainable:Boolean,如果为True,还将变量添加到图集合GraphKeys.TRAINABLE_VARIABLES(请参阅参考资料tf.Variable).
  • name:字符串,图层的名称.

属性

  • activity_regularizer

    可选的正则化函数用于该层的输出.

  • dtype
  • graph
  • input

    检索图层的输入张量.

    仅适用于图层只有一个输入的情况,即它是否连接到一个输入图层.

    返回:

    输入张量或输入张量列表.

    可能引发的异常:

    • AttributeError:如果图层连接到多个输入图层.
    • RuntimeError:如果在Eager模式下调用.
    • AttributeError:如果未找到入站节点.
  • input_shape

    检索图层的输入形状.

    仅适用于图层只有一个输入,即它是否连接到一个输入层,或者所有输入具有相同形状的情况.

    返回:

    输入形状,作为整数形状元组(或形状元组列表,每个输入张量一个元组).

    可能引发的异常:

    • AttributeError:如果图层没有定义的input_shape.
    • RuntimeError:如果在Eager模式下调用.
  • losses

    与此相关的损失Layer.

    请注意,在急切执行时,获取此属性会计算正规则.使用图形执行时,已经创建了变量正则化运算,并且只是在这里返回.

    返回:

    张量列表.

  • name
  • non_trainable_variables
  • non_trainable_weights
  • output

    检索图层的输出张量.

    仅适用于图层只有一个输出,即它是否连接到一个输入层.

    返回:

    输出张量或输出张量列表.

    可能引发的异常:

    • AttributeError:如果图层连接到多个输入图层.
    • RuntimeError:如果在Eager模式下调用.
  • output_shape

    检索图层的输出形状.

    仅适用于图层具有一个输出,或者所有输出具有相同形状的情况.

    返回:

    输出形状,作为整数形状元组(或形状元组列表,每个输出张量一个元组).

    可能引发的异常:

    • AttributeError:如果图层没有定义的输出形状.
    • RuntimeError:如果在Eager模式下调用.
  • scope_name
  • trainable_variables
  • trainable_weights
  • updates
  • variables

    返回所有图层变量/权重的列表.

    返回:

    变量列表.

  • weights

    返回所有图层变量/权重的列表.

    返回:

    变量列表.

方法

  • __init__
    __init__(
        filters,
        kernel_size,
        strides=(1, 1),
        padding='valid',
        data_format='channels_last',
        dilation_rate=(1, 1),
        depth_multiplier=1,
        activation=None,
        use_bias=True,
        depthwise_initializer=None,
        pointwise_initializer=None,
        bias_initializer=tf.zeros_initializer(),
        depthwise_regularizer=None,
        pointwise_regularizer=None,
        bias_regularizer=None,
        activity_regularizer=None,
        depthwise_constraint=None,
        pointwise_constraint=None,
        bias_constraint=None,
        trainable=True,
        name=None,
        **kwargs
    )

    初始化自我.

  • __call__
    __call__(
        inputs,
        *args,
        **kwargs
    )

    包装call,应用前处理和后处理步骤.

    参数:

    • inputs:输入张量.
    • *args:要传递给self.call的其他位置参数.
    • **kwargs:要传递给self.call的其他关键字参数.注意:kwarg scope保留供图层使用.

    返回:

    输出张量.

    注意:- 如果图层的call方法采用scope关键字参数,则此参数将自动设置为当前变量范围.- 如果图层的call方法采用mask参数(如某些Keras图层那样),则其默认值将设置为inputs前一层生成的蒙版(如果input确实来自生成相应蒙版的图层,即它是否来自具有掩蔽支持的Keras层).

    可能引发的异常:

    • ValueError:如果图层的call方法返回None(无效值).
  • __deepcopy__
    __deepcopy__(memo)
  • add_loss
    add_loss(
        losses,
        inputs=None
    )

    添加损失张量,可能取决于图层输入.

    一些损失(例如,活动正则化损失)可能取决于调用层时传递的输入.因此,当在不同的输入a和b上重用同一层时,在layer.losses中的一些条目可以取决于a并且另外一些取决于b.此方法自动跟踪依赖性.

    该get_losses_for方法允许检索与特定输入集相关的损失.

    请注意,急切执行时不支持add_loss.相反,可以通过add_variable添加变量正则化器.不直接支持活动正规化(但可以从Layer.call()中返回此类损失).

    参数:

    • losses:损失张量,或张量/列表的张量.
    • inputs:如果传递了除None以外的任何内容,则表示损失是以某些层的输入为条件的,因此它们只应在这些输入可用的地方运行.例如,活动正规化损失就是这种情况.如果None通过,则假定损失是无条件的,并且将应用于层的所有数据流(例如,权重正则化损失).

    可能引发的异常:

    • RuntimeError:如果在Eager模式下调用.
  • add_update
    add_update(
        updates,
        inputs=None
    )

    添加更新操作,可能依赖于图层输入.

    权重更新(例如,BatchNormalization层中移动均值和方差的更新)可能取决于调用图层时传递的输入.因此,当在不同的输入a和b上重用同一层时,在layer.updates中的一些条目可以取决于a而另外一些取决于b.此方法自动跟踪依赖性.

    该get_updates_for方法允许检索与特定输入集相关的更新.

    在Eager模式下忽略此调用.

    参数:

    • updates:更新操作,或更新操作的列表/元组.
    • inputs:如果传递了除None之外的任何内容,则表示更新是以某些层的输入为条件的,因此它们只应在这些输入可用的地方运行.例如,BatchNormalization更新就是这种情况.如果为None,则无条件地考虑更新,并且您有责任确保它们可能具有的任何依赖性在运行时可用.步数计数器可能属于此类别.
  • add_variable
    add_variable(
        name,
        shape,
        dtype=None,
        initializer=None,
        regularizer=None,
        trainable=True,
        constraint=None,
        partitioner=None
    )

    该方法向图层添加新变量,或获取现有变量;返回它.

    参数:

    • name: 变量的名称.
    • shape:变量的形状.
    • dtype:变量的类型,默认为self.dtype或float32.
    • initializer:初始化程序实例(可调用).
    • regularizer:regularrizer实例(可调用).
    • trainable:变量是否应该是图层的“trainable_variables”(例如,变量,偏差)或“non_trainable_variables”(例如,BatchNorm mean,stddev)的一部分.注意,如果当前变量范围被标记为不可训练,则忽略此参数,并且任何添加的变量也标记为不可训练.
    • constraint:约束实例(可调用).
    • partitioner:(可选)分区程序实例(可调用).如果提供,则在创建请求的变量时,它将根据partitioner分成多个分区.在这种情况下,返回一个PartitionedVariable实例.可用的分区包括tf.fixed_size_partitioner和tf.variable_axis_size_partitioner.

    返回:

    创建的变量.通常是一个Variable或一个ResourceVariable实例.如果partitioner不是None,则返回PartitionedVariable实例.

    可能引发的异常:

    • RuntimeError:如果使用分区变量正则化调用并且启用了急切执行.
  • apply
    apply(
        inputs,
        *args,
        **kwargs
    )

    在输入上应用图层.

    这只是包装self.__call__.

    参数:

    • inputs:输入张量.
    • *args:要传递给self.call的其他位置参数.
    • **kwargs:要传递给self.call的其他关键字参数.

    返回:

    输出张量.

  • build
    build(input_shape)

    创建图层的变量.

  • call
    call(inputs)

    图层的逻辑就在这里.

    参数:

    • inputs:输入张量.
    • **kwargs:其他关键字参数.

    返回:

    输出张量.

  • compute_output_shape
    compute_output_shape(input_shape)

    在给定输入形状的情况下计算图层的输出形状.

    参数:

    • input_shape:一个TensorShape(可能是嵌套的元组).它不需要完全定义(例如,批量大小可能是未知的).

    返回:

    一个TensorShape(可能是嵌套的元组).

    可能引发的异常:

    • TypeError:如果input_shape不是TensorShape(可能是嵌套的元组).
    • ValueError:如果input_shape不完整或与图层不兼容.
  • count_params
    count_params()

    计算组成权重的标量总数.

    返回:

    整数计数.

    可能引发的异常:

    • ValueError:如果尚未构建图层(在这种情况下,其权重尚未定义).
  • get_input_at
    get_input_at(node_index)

    检索给定节点处的层的输入张量.

    参数:

    • node_index:Integer,从中检索属性的节点的索引.例如,node_index=0将对应于第一次调用图层.

    返回:

    张量(如果图层有多个输入,则为张量列表).

    可能引发的异常:

    • RuntimeError:如果在Eager模式下调用.
  • get_input_shape_at
    get_input_shape_at(node_index)

    检索给定节点处的图层的输入形状.

    参数:

    • node_index:Integer,从中检索属性的节点的索引.例如,node_index=0将对应于第一次调用图层.

    返回:

    形状元组(如果图层有多个输入,则为形状元组​​列表).

    可能引发的异常:

    • RuntimeError:如果在Eager模式下调用.
  • get_losses_for
    get_losses_for(inputs)

    检索与特定输入集相关的损失.

    参数:

    • inputs:输入张量或输入张量的列表/元组.

    返回:

    依赖于inputs的层的损失张量列表.

    可能引发的异常:

    • RuntimeError:如果在Eager模式下调用.
  • get_output_at
    get_output_at(node_index)

    检索给定节点处的图层的输出张量.

    参数:

    • node_index:Integer,从中检索属性的节点的索引.例如,node_index=0将对应于第一次调用图层.

    返回:

    张量(如果图层有多个输出,则为张量列表).

    可能引发的异常:

    • RuntimeError:如果在Eager模式下调用.
  • get_output_shape_at
    get_output_shape_at(node_index)

    检索给定节点处图层的输出形状.

    参数:

    • node_index:Integer,从中检索属性的节点的索引.例如,node_index=0将对应于第一次调用图层.

    返回:

    形状元组(如果图层具有多个输出,则为形状元组​​列表).

    可能引发的异常:

    • RuntimeError:如果在Eager模式下调用.
  • get_updates_for
    get_updates_for(inputs)

    检索与特定输入集相关的更新.

    参数:

    • inputs:输入张量或输入张量的列表/元组.

    返回:

    依赖于inputs的层的更新操作列表.

    可能引发的异常:

    • RuntimeError:如果在Eager模式下调用.
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号