• tensorflow中的slim函数集合


    参考   tensorflow中的slim函数集合 - 云+社区 - 腾讯云

    目录

    slim.get_model_variables()

    slim.get_trainable_variables()

    slim.learning.train()

    slim.fully_connected()

    slim.softmax()

    slim.get_model_variables()

    slim.get_or_create_global_step()

    slim.arg_scope()

    slim.variance_scaling_initializer()

    slim.l2_regularizer()

    slim.flatten()

    slim.max_pool2d()


    slim.get_model_variables()

    1. def get_model_variables(scope=None, suffix=None):
    2. return get_variables(scope, suffix, ops.GraphKeys.MODEL_VARIABLES)

    获取按范围和/或后缀过滤的模型变量列表。

    参数:

    • 作用域:筛选要返回的变量的可选作用域。
    • 后缀:用于过滤要返回的变量的可选后缀。

    返回值:

    • 集合中具有范围和后缀的变量列表。

    slim.get_trainable_variables()

    1. def get_trainable_variables(scope=None, suffix=None):
    2. return get_variables(scope, suffix, ops.GraphKeys.TRAINABLE_VARIABLES)

    获取按范围和/或后缀过滤可训练变量列表。

    参数:

    • 作用域:筛选要返回的变量的可选作用域。
    • 后缀:用于过滤要返回的变量的可选后缀。

    返回值:

    • 具有范围和后缀的可训练集合中的变量列表。

    slim.learning.train()

    1. slim.learning.train(train_op, logdir, train_step_fn=train_step,
    2. train_step_kwargs=_USE_DEFAULT,
    3. log_every_n_steps=1, graph=None, master='',
    4. is_chief=True, global_step=None,
    5. number_of_steps=None, init_op=_USE_DEFAULT,
    6. init_feed_dict=None, local_init_op=_USE_DEFAULT,
    7. init_fn=None, ready_op=_USE_DEFAULT,
    8. summary_op=_USE_DEFAULT,
    9. save_summaried_secs=600,
    10. summary_writer=_USE_DEFAULT,
    11. startup_delay_steps=0, saver=None,
    12. save_interval_secs=600, sync_optimizer=None,
    13. session_config=None, session_wrapper=None,
    14. trace_every_n_steps=None,
    15. ignore_live_threads=False)

    参数众多,其中重要的有:

    • train_op,指定优化算法
    • logdir,指定训练数据保存文件夹
    • save_summaries_secs,指定每隔多少秒更新一次日志文件(对应 tensorboard 刷新一次的时间)
    • save_interval_secs,指定每隔多少秒保存一次模型

    slim.fully_connected()

    1. def fully_connected(inputs,
    2. num_outputs,
    3. activation_fn=nn.relu,
    4. normalizer_fn=None,
    5. normalizer_params=None,
    6. weights_initializer=initializers.xavier_initializer(),
    7. weights_regularizer=None,
    8. biases_initializer=init_ops.zeros_initializer(),
    9. biases_regularizer=None,
    10. reuse=None,
    11. variables_collections=None,
    12. outputs_collections=None,
    13. trainable=True,
    14. scope=None)
    添加一个完全连接的层。“fully_connected”创建一个名为“weights”的变量,表示一个完全连接的权重矩阵,该矩阵乘以“输入”,生成一个隐藏单元的“张量”。如果提供了' normalizer_fn '(例如' batch_norm '),则应用它。否则,如果‘normalizer_fn’为None,并且提供了一个‘biases_initializer’,那么就会创建一个‘bias’变量,并添加隐藏的单元。最后,如果“activation_fn”不是“None”,那么它也应用于隐藏单元。注意:如果“输入”的秩大于2,那么“输入”在初始矩阵乘以“权重”之前是平坦的。
    

    参数:

    • inputs:至少秩为2的张量,最后一个维度为静态值;即。' [batch_size, depth] ', ' [None, None, None, channels] '。
    • num_output:整数或长,层中输出单元的数量。
    • activation_fn:激活函数。默认值是一个ReLU函数。显式地将其设置为None以跳过它并保持线性激活。
    • normalizer_fn:用来代替“偏差”的归一化函数。如果提供“normalizer_fn”,则忽略“biases_initializer”和“biases_regularizer”,并且不会创建或添加“bias”。对于no正常化器函数,默认设置为None
    • normalizer_params:规范化函数参数。
    • weights_initializer:权值的初始化器。
    • weights_regularizer:可选的权重正则化器。
    • biases_initializer:用于偏差的初始化器。如果没有人跳过偏见。
    • biases_regularizer:可选的偏差调整器。
    • reuse:是否应该重用层及其变量。为了能够重用层范围,必须给出。
    • variables_collections:所有变量的可选集合列表,或包含每个变量的不同集合列表的字典。
    • outputs_collections:用于添加输出的集合。
    • trainable:如果“True”还将变量添加到图形集合“GraphKeys”中。TRAINABLE_VARIABLES”(见tf.Variable)。
    • scope:variable_scope的可选作用域。

    返回值:

    • 表示一系列运算结果的张量变量。

    可能产生的异常:

    • ValueError: If x has rank less than 2 or if its last dimension is not set.

    slim.softmax()

    softmax(logits, scope=None)

    对n维logit张量的第n维执行softmax。对于二维logits,这可以归结为tf.n .softmax。第n个维度需要具有指定数量的元素(类的数量)。

    参数:

    • logits: N维张量,其中N > 1。
    • scope:variable_scope的可选作用域。

    返回值:

    • 一个形状和类型与logits相同的“张量”。

    slim.get_model_variables()

    1. def get_model_variables(scope=None, suffix=None):
    2. return get_variables(scope, suffix, ops.GraphKeys.MODEL_VARIABLES)

    获取按范围和/或后缀过滤的模型变量列表。

    参数:

    • scope:筛选要返回的变量的可选作用域
    • suffix:用于过滤要返回的变量的可选后缀

    返回值:

    • 集合中具有范围和后缀的变量列表

    slim.get_or_create_global_step()

    get_or_create_global_step()

    返回并创建(必要时)全局阶跃张量。

    参数:

    • graph:用来创建全局阶跃张量的图。如果丢失,使用默认的图。

    返回值:

    • 全局阶跃张量

    slim.arg_scope()

    1. def arg_scope(list_ops_or_scope, **kwargs):
    2. if isinstance(list_ops_or_scope, dict):
    3. # Assumes that list_ops_or_scope is a scope that is being reused.
    4. if kwargs:
    5. raise ValueError('When attempting to re-use a scope by suppling a'
    6. 'dictionary, kwargs must be empty.')
    7. current_scope = list_ops_or_scope.copy()
    8. try:
    9. _get_arg_stack().append(current_scope)
    10. yield current_scope
    11. finally:
    12. _get_arg_stack().pop()
    13. else:
    14. # Assumes that list_ops_or_scope is a list/tuple of ops with kwargs.
    15. if not isinstance(list_ops_or_scope, (list, tuple)):
    16. raise TypeError('list_ops_or_scope must either be a list/tuple or reused '
    17. 'scope (i.e. dict)')
    18. try:
    19. current_scope = current_arg_scope().copy()
    20. for op in list_ops_or_scope:
    21. key = arg_scope_func_key(op)
    22. if not has_arg_scope(op):
    23. raise ValueError('%s is not decorated with @add_arg_scope',
    24. _name_op(op))
    25. if key in current_scope:
    26. current_kwargs = current_scope[key].copy()
    27. current_kwargs.update(kwargs)
    28. current_scope[key] = current_kwargs
    29. else:
    30. current_scope[key] = kwargs.copy()
    31. _get_arg_stack().append(current_scope)
    32. yield current_scope
    33. finally:
    34. _get_arg_stack().pop()

    存储给定list_ops集合的默认参数。

    参数:

    • list_ops_or_scope:为包含当前范围的字典设置参数范围的操作的列表或元组。当list_ops_or_scope是dict时,kwargs必须为空。当list_ops_or_scope是一个列表或元组时,其中的每个op都需要用@add_arg_scope修饰才能工作。
    • **kwargs: keyword=value,它将为list_ops中的每个操作定义默认值。所有的ops都需要接受给定的一组参数。**kwargs:current_scope是{op: {arg: value}}的字典。

    返回值:

    • yield:current_scope是{op: {arg: value}}的字典

    可能产生的异常:

    • TypeError: if list_ops is not a list or a tuple.
    • ValueError: if any op in list_ops has not be decorated with @add_arg_scope.

    slim.variance_scaling_initializer()

    1. def xavier_initializer(uniform=True, seed=None, dtype=dtypes.float32):
    2. if not dtype.is_floating:
    3. raise TypeError('Cannot create initializer for non-floating point type.')
    4. if mode not in ['FAN_IN', 'FAN_OUT', 'FAN_AVG']:
    5. raise TypeError('Unknown mode %s [FAN_IN, FAN_OUT, FAN_AVG]', mode)

    返回对权重执行“Xavier”初始化的初始化器。此函数实现权重初始化,从:

    Xavier Glorot和yobengio(2010):[了解深度前馈神经网络训练的难点]。(http://www.jmlr.org/programedings/papers/v9/glorot10a/glorot10a.pdf)

    这个初始化器的设计目的是在所有层中保持梯度的比例大致相同。在均匀分布中,这个范围是' x = sqrt(6。/ (in + out);正态分布的标准差为√2。/ (in + out))’。

    参数:

    • factor:浮动。一个乘法因素
    • mode:字符串。“FAN_IN”、“FAN_OUT’,‘FAN_AVG’
    • uniform:是否使用均匀或正态分布随机初始化
    • seed:一个Python整数。用于创建随机种子。看到“特遣部队。set_random_seed”行为
    • dtype:数据类型。只支持浮点类型

    返回值:

    • 生成单位方差张量的初始化器

    可能产生的异常:

    • ValueError: if `dtype` is not a floating point type.
    • TypeError: if `mode` is not in ['FAN_IN', 'FAN_OUT', 'FAN_AVG'].

    slim.l2_regularizer()

    1. def l2_regularizer(scale, scope=None):
    2. if isinstance(scale, numbers.Integral):
    3. raise ValueError('scale cannot be an integer: %s' % (scale,))
    4. if isinstance(scale, numbers.Real):
    5. if scale < 0.:
    6. raise ValueError('Setting a scale less than 0 on a regularizer: %g.' %
    7. scale)
    8. if scale == 0.:
    9. logging.info('Scale of 0 disables regularizer.')
    10. return lambda _: None

    返回一个函数,该函数可用于对权重应用L2正则化。较小的L2值有助于防止训练数据过度拟合。

    参数:

    • scale:标量乘法器“张量”。0.0禁用正则化器
    • scope:可选的作用域名称

    返回值:

    • 一个带有“l2(权重)”签名的函数,它应用l2正则化

    可能产生的异常:

    • ValueError: If scale is negative or if scale is not a float.

    slim.flatten()

    在保持batch_size的同时,将输入压扁。假设第一个维度表示批处理。

    1. def flatten(inputs, outputs_collections=None, scope=None):
    2. with ops.name_scope(scope, 'Flatten', [inputs]) as sc:
    3. inputs = ops.convert_to_tensor(inputs)
    4. outputs = core_layers.flatten(inputs)
    5. return utils.collect_named_outputs(outputs_collections, sc, outputs)

    参数:

    • inputs:一个大小张量[batch_size,…]
    • outputs_collections:用于添加输出的集合
    • scope:name_scope的可选作用域

    返回值:

    • 一个具有形状[batch_size, k]的平坦张量。

    可能产生的异常:

    • ValueError: If inputs rank is unknown or less than 2.

    slim.max_pool2d()

    1. def max_pool2d(inputs,
    2. kernel_size,
    3. stride=2,
    4. padding='VALID',
    5. data_format=DATA_FORMAT_NHWC,
    6. outputs_collections=None,
    7. scope=None):
    8. if data_format not in (DATA_FORMAT_NCHW, DATA_FORMAT_NHWC):
    9. raise ValueError('data_format has to be either NCHW or NHWC.')
    10. with ops.name_scope(scope, 'MaxPool2D', [inputs]) as sc:
    11. inputs = ops.convert_to_tensor(inputs)
    12. df = ('channels_first'
    13. if data_format and data_format.startswith('NC') else 'channels_last')
    14. layer = pooling_layers.MaxPooling2D(
    15. pool_size=kernel_size,
    16. strides=stride,
    17. padding=padding,
    18. data_format=df,
    19. _scope=sc)
    20. outputs = layer.apply(inputs)
    21. return utils.collect_named_outputs(outputs_collections, sc, outputs)

    添加了一个2D最大池化操作,它假设池化是按每张图像完成的,但不是按批处理或通道完成的。

    参数:

    • inputs:一个形状' [batch_size, height, width, channels] '的4-D张量,如果' data_format '是' NHWC ',那么' [batch_size, channels, height, width] '如果' data_format '是' NCHW '
    • kernel_size:计算op的池内核的长度2:[kernel_height, kernel_width]的列表。如果两个值相同,则可以是int
    • stride:一个长度为2的列表:[stride_height, stride_width]。如果两个步骤相同,则可以是int。注意,目前这两个步骤必须具有相同的值
    • padding:填充方法,要么“有效”,要么“相同”
    • data_format:一个字符串。支持' NHWC '(默认值)和' NCHW '
    • outputs_collections:将输出添加到其中的集合
    • scope:name_scope的可选作用域

    返回值:

    • 表示池操作结果的“张量”

    可能产生的异常:

    • ValueError: If `data_format` is neither `NHWC` nor `NCHW`.
    • ValueError: If 'kernel_size' is not a 2-D list

  • 相关阅读:
    表格与表单
    面试经典150题——Day35
    #FreeRTOS中断管理简介
    SpringBoot如何集成Mybatis呢?
    【522. 最长特殊序列 II】
    AI人工智能老师大模型讲师叶梓 OneLLM:开创性的多模态大型语言模型技术
    openpnp - 74路西门子飞达控制板(主控板STM32_NUCLEO-144)实现
    Flink基础概念入门
    如何使用Docker构建前端项目
    高科技案例研究微软设备事业部 | 达索系统百世慧®
  • 原文地址:https://blog.csdn.net/weixin_36670529/article/details/100128220