上一篇文章中我们介绍了arg_scope函数,它在每一层嵌套中update当前字典中参数形成新的字典,并入栈。那么这些参数是怎么作用到代码块中的函数的呢?比如说如下情况:

with slim.arg_scope([slim.conv2d, slim.separable_conv2d],weights_initializer=tf.truncated_normal_initializer(stddev=weights_initializer_stddev),activation_fn=activation_fn,normalizer_fn=slim.batch_norm if use_batch_norm else None):with slim.arg_scope([slim.batch_norm], **batch_norm_params):slim.conv2d(features,num_classes,kernel_size=kernel_size,rate=rate,activation_fn=None,normalizer_fn=None,scope=scope))

  原理就是使用add_arg_scope函数装饰op,那么op就能查找栈中字典的参数并使用他们,主要代码和上篇文章很类似。

def func_with_args(*args, **kwargs):  current_scope = current_arg_scope()  current_args = kwargs  key_func = arg_scope_func_key(func)  if key_func in current_scope:    current_args = current_scope[key_func].copy()    current_args.update(kwargs)  return func(*args, **current_args)

  代码逻辑就是先得到当前字典current_arg_scope,此时为{‘conv2d: kargs, 'separable_2d':kargs, 'batch_norm': batch_norm_params}(这里kargs是我偷懒没把代码中initializer等誊写下来),current_args是代码块中参数,这里是features,num_classes等,key_func是’conv2d‘,循环就是如果在字典中有与之相关的参数,则把参数用到函数中。

结语

  写的好像有些简单,下次有灵感再好好改一下。      最后编辑于11:44:51 2018-07-30

转载于:https://www.cnblogs.com/zzy-tf/p/9389792.html

tf.contrib.slim add_arg_scope相关推荐

  1. tf.nn.conv2d和tf.contrib.slim.conv2d的区别

    转自:http://blog.sina.com.cn/s/blog_6ca0f5eb0102wsuu.html 文中摘要: " 在上述的API中,可以看出去除掉初始化的部分,那么两者并没有什 ...

  2. TensorFlow学习——tf.nn.conv2d和tf.contrib.slim.conv2d的区别

    在查看代码的时候,看到有代码用到卷积层是tf.nn.conv2d,也有的使用的卷积层是tf.contrib.slim.conv2d,这两个函数调用的卷积层是否一致,在查看了API的文档,以及slim. ...

  3. tf.contrib.slim arg_scope

    缘由 最近一直在看深度学习的代码,又一次看到了slim.arg_scope()的嵌套使用,具体代码如下: with slim.arg_scope([slim.conv2d, slim.separabl ...

  4. tf.contrib.slim常用方法

    slim是一个轻量级tensorflow库,封装了很多好用的api,常用方法如下: slim.arg_scope():为目标函数设置默认参数 slim.l2_regularizer() slim.co ...

  5. tensorflow兼容处理 tensorflow.compat.v1 tf.contrib

    20201130 问题提出: v1版本中tensorflow中contrib模块十分丰富,但是发展不可控,因此在v2版本中将这个模块集成到其他模块中去了.在学习tensorflow经常碰到tf.con ...

  6. 第十六节,使用函数封装库tf.contrib.layers

    目录 一 tf.contrib.layers中的具体函数介绍 1.tf.contrib.layers.conv2d()函数的定义如下: 2.tf.contrib.layers.max_pool2d() ...

  7. 重磅 | TensorFlow 2.0即将发布,所有tf.contrib将被弃用

    作者 | 阿司匹林 出品 | AI科技大本营(公众号ID:rgznai100) 上周,谷歌刚刚发布了 TensorFlow 1.10.0 版本(详见<TensorFlow 版本 1.10.0 发 ...

  8. tf.contrib.layers.fully_connected详解

    博主 https://www.jianshu.com/p/673fd07954e9 tf.contrib.layers.fully_connected(F, num_outputs,activatio ...

  9. TensorFlow高层次机器学习API (tf.contrib.learn)

    TensorFlow高层次机器学习API (tf.contrib.learn) 1.tf.contrib.learn.datasets.base.load_csv_with_header 加载csv格 ...

最新文章

  1. android 加载h5页面部分机型滑动卡顿回弹_网易爆款H5 的交互方法参考
  2. 频繁模式(frequent pattern)
  3. python使用方法-六、python 方法的使用
  4. linux下编译安装MySQL5.6新版本
  5. 华为云占用443端口_关于XAMPP默认端口80和443被占用的问题
  6. mysql 行级锁 索引_mysql 行级锁 索引唯一值
  7. 用三张图看透 I/O,学习区分同异步阻塞
  8. win11组策略如何恢复默认设置 windows11组策略恢复默认设置的步骤方法
  9. OpenGL游戏程序设计——————关于这本书
  10. pb模型文件与.pbtxt配置不匹配导致OpenCV调用dnn模块出错(Mask R-CNN为例)
  11. 三星手机不能连接无线网络连接服务器,手机已连接wife但无法访问互联网
  12. 前装车联网常见术语解释
  13. unix 创建html文件路径,Btrfs 创建目录和文件的操作
  14. 64位 window 在notepad++中添加HexEditor工具
  15. laravel-excel导出并写入图片
  16. 网页制作-第一周-任务1_1网页和网站的概念
  17. 微信开放平台开发常见错误(长期更新)
  18. [渝粤教育] 中国地质大学 Java语言程序设计 复习题
  19. JS判断对象是否为空(个人常用)
  20. 国产台式电子计算机,国产十大台式电子管名机6——东方红82-Y型收音机(一)

热门文章

  1. iptables 防火墙(上)
  2. 牛客小白月赛2 D 虚虚实实 【欧拉图】【连通图】
  3. STL sort解析
  4. matplotlib包画基本的图
  5. Mac系统下安装PIL
  6. Excel 公式(细节若干)
  7. linux学习网站分享
  8. 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(二)
  9. 大型主机CICS中间件基础
  10. 十一、Shell 文件包含