由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - tf还是很混乱
相关主题
lightroom请科普下双路deep learning有谁懂 php 的?问个问题(有包子)
请xiaoju和digua来讲讲COM技术吧Theano, Spark ML, Microsoft’s CNTK, and Google’s TensorFlow
keras or tensorflowC++11 大家有用过吗?
做rest大大牛们来说说Help!! variable scope ????
some C++ interview questions请教C数组定义问题
魏老师,你很激动,来,我们做个项目管理Resnet没有max-pooling,为啥能比cnn好?
tensorflow用小的batch size GPU吃不饱怎么破?再问机器学习。。。用keras分类
有熟悉CUDA的吗?不胜感谢赐教有什么中等规模的项目适合系统学习的?
相关话题的讨论汇总
话题: tf话题: scope话题: norm话题: batch话题: gpu
进入Programming版参与讨论
1 (共1页)
w***g
发帖数: 5958
1
学习了一晚上,总结一下
- slim似乎已经完蛋了。
- 现在high-level API是tf.layers。
- 但是tf.layers和tf.contrib.framework.arg_scope不兼容,所以还是得用tf.
contrib.layers。
- batch_norm在multiple gpu上似乎没有一个干净的解决方案。
- tf.variable_scope可以设default initializer,
但是用不用这个initializer看各个layer实现的喜好。比如,conv2d的weights和bias
是不服从这个默认值的。batch_norm的moving_mean和beta不服从,但是batch_norm的
moving_variance服从。这些东西文档里是没有的,得靠自己理解。
都是些什么乱七八糟的。最近发现官方slim的resnet干不过github上的鸡毛项目。
所以打算自己把常见的几个model撸一遍。然后就发现前面的路好艰难。
w*****r
发帖数: 197
2
前几天刚把一个train.py改成了Multi gpu版本。按tf的教程例子,gpu还是单独算梯度
,然后导到cpu求平均,在appy回去
跨gpu做bn很重要吗?
w***g
发帖数: 5958
3
我前两天做了同样的事。然后碰到batch_norm就不知道怎么办了。
有人很aggresive,所有的layer之后全加batch_norm。
影响太大。

【在 w*****r 的大作中提到】
: 前几天刚把一个train.py改成了Multi gpu版本。按tf的教程例子,gpu还是单独算梯度
: ,然后导到cpu求平均,在appy回去
: 跨gpu做bn很重要吗?

l*******m
发帖数: 1096
4
arg_scope基本上也被抛弃了,太容易有bugs. 还是应该用 tf.layers.
其他frameworks也各自有问题,he kaiming 的最新的一片文章居然用了tf

:学习了一晚上,总结一下
w***g
发帖数: 5958
5
我觉得arg_scope很有用,那怎么办?

:arg_scope基本上也被抛弃了,太容易有bugs. 还是应该用 tf.layers.
w*****r
发帖数: 197
6
貌似我有重大理解错误啊。。。
我的理解是:同一个layer在不同gpu里面,tf的op的名字是不一样的(不同的name
scope)
,每个gpu里面,你都可以随便加bn,互不影响,只是不能跨gpu罢了。
刚刚穿凿了一下,貌似所有trainable的parameters都要发在cpu上。。。
难道不是这样?

【在 w***g 的大作中提到】
: 我前两天做了同样的事。然后碰到batch_norm就不知道怎么办了。
: 有人很aggresive,所有的layer之后全加batch_norm。
: 影响太大。

l*******m
发帖数: 1096
7
arg_scope还在呀,tf.contrib.layers也在,只是最新的high level API不用arg_
scope了。把自己写的func放在里面更复杂。我以前也用arg_scope, 一个bug撸了两个
月才找到,现在又回到class了。
当然这本质是深学进入软件工程的一个问题,深学没有一个有效的utest的方法, 需要
e2e的验证。小数据集还好,大的如imagenet, 复现一个state of the art, 如果没有
大厂的计算资源,撸一次要几天或星期,几次就绝望了. 网络可能没写对,training
参数,还有data Aug。完全搞对十分不如容易。就像你说的,slim那帮人搞了两年了,
resnet还是训练不好,都是炼金术。

:我觉得arg_scope很有用,那怎么办?
w***g
发帖数: 5958
8
tf的机制是这样的:一个variable声明到什么设备上,就定在什么设备上了。
然后声明在别的设备上的操作要用这个variable会自动拷过去。
所以多gpu的机制就是
- 在CPU或者第一个GPU上构造网络。所有的参数都会分配到这个设备上。
- 设置variable scope reuse
- 然后在别的设备上构造同样的网络。op会重新命名,但是所有的variable会reuse,
也就是引用第一个设备上的那套参数。
- 所以其实所有可训练参数只有一个版本。更新的时候也只要更新这个版本就行。
- 但是gradient所有的GPU都有自己的版本,需要merge。
batch_norm有moving average和variance。这个不是用gradient训练的。
我也不知道是什么机制。其实把graph打印出来查看可以看到具体情况。

【在 w*****r 的大作中提到】
: 貌似我有重大理解错误啊。。。
: 我的理解是:同一个layer在不同gpu里面,tf的op的名字是不一样的(不同的name
: scope)
: ,每个gpu里面,你都可以随便加bn,互不影响,只是不能跨gpu罢了。
: 刚刚穿凿了一下,貌似所有trainable的parameters都要发在cpu上。。。
: 难道不是这样?

w***g
发帖数: 5958
9
就是这么回事。那种大数据我根本不敢碰。生命只有一次。

【在 l*******m 的大作中提到】
: arg_scope还在呀,tf.contrib.layers也在,只是最新的high level API不用arg_
: scope了。把自己写的func放在里面更复杂。我以前也用arg_scope, 一个bug撸了两个
: 月才找到,现在又回到class了。
: 当然这本质是深学进入软件工程的一个问题,深学没有一个有效的utest的方法, 需要
: e2e的验证。小数据集还好,大的如imagenet, 复现一个state of the art, 如果没有
: 大厂的计算资源,撸一次要几天或星期,几次就绝望了. 网络可能没写对,training
: 参数,还有data Aug。完全搞对十分不如容易。就像你说的,slim那帮人搞了两年了,
: resnet还是训练不好,都是炼金术。
:
: :我觉得arg_scope很有用,那怎么办?

m****o
发帖数: 182
10
试一下selu?
https://arxiv.org/pdf/1706.02515
据说秒杀现阶段所有的activation function,连batch norm都变得可有可无。

【在 w***g 的大作中提到】
: tf的机制是这样的:一个variable声明到什么设备上,就定在什么设备上了。
: 然后声明在别的设备上的操作要用这个variable会自动拷过去。
: 所以多gpu的机制就是
: - 在CPU或者第一个GPU上构造网络。所有的参数都会分配到这个设备上。
: - 设置variable scope reuse
: - 然后在别的设备上构造同样的网络。op会重新命名,但是所有的variable会reuse,
: 也就是引用第一个设备上的那套参数。
: - 所以其实所有可训练参数只有一个版本。更新的时候也只要更新这个版本就行。
: - 但是gradient所有的GPU都有自己的版本,需要merge。
: batch_norm有moving average和variance。这个不是用gradient训练的。

相关主题
魏老师,你很激动,来,我们做个项目管理有谁懂 php 的?问个问题(有包子)
tensorflow用小的batch size GPU吃不饱怎么破?Theano, Spark ML, Microsoft’s CNTK, and Google’s TensorFlow
有熟悉CUDA的吗?不胜感谢赐教C++11 大家有用过吗?
进入Programming版参与讨论
s*****V
发帖数: 21731
11
TF我搞了半天也是稀里糊涂,还以为是自己笨,看到大牛也有同感,心里终于平衡了。

bias

【在 w***g 的大作中提到】
: 学习了一晚上,总结一下
: - slim似乎已经完蛋了。
: - 现在high-level API是tf.layers。
: - 但是tf.layers和tf.contrib.framework.arg_scope不兼容,所以还是得用tf.
: contrib.layers。
: - batch_norm在multiple gpu上似乎没有一个干净的解决方案。
: - tf.variable_scope可以设default initializer,
: 但是用不用这个initializer看各个layer实现的喜好。比如,conv2d的weights和bias
: 是不服从这个默认值的。batch_norm的moving_mean和beta不服从,但是batch_norm的
: moving_variance服从。这些东西文档里是没有的,得靠自己理解。

L****8
发帖数: 3938
12
cool

【在 m****o 的大作中提到】
: 试一下selu?
: https://arxiv.org/pdf/1706.02515
: 据说秒杀现阶段所有的activation function,连batch norm都变得可有可无。

x****u
发帖数: 44466
13
为啥不用keras?

bias

【在 w***g 的大作中提到】
: 学习了一晚上,总结一下
: - slim似乎已经完蛋了。
: - 现在high-level API是tf.layers。
: - 但是tf.layers和tf.contrib.framework.arg_scope不兼容,所以还是得用tf.
: contrib.layers。
: - batch_norm在multiple gpu上似乎没有一个干净的解决方案。
: - tf.variable_scope可以设default initializer,
: 但是用不用这个initializer看各个layer实现的喜好。比如,conv2d的weights和bias
: 是不服从这个默认值的。batch_norm的moving_mean和beta不服从,但是batch_norm的
: moving_variance服从。这些东西文档里是没有的,得靠自己理解。

w***g
发帖数: 5958
14
但是这个东西没有imagenet或者别的比较有名的
benchmark的分数啊。

【在 L****8 的大作中提到】
: cool
g*******u
发帖数: 3948
15
好像tf自己也发展了一些高级函数 和keras类似,并且 keras现在也是tf的了
整体感觉 就是tf的 高级函数了。两者既有融合又有点区别 但是感觉整合为一的样子
比较大

【在 x****u 的大作中提到】
: 为啥不用keras?
:
: bias

h**c
发帖数: 1979
16
Keras这种东西的意义是啥?费老大劲在别人的API上又包装一层API?
x****u
发帖数: 44466
17
keras的api变化比底层小就是卖点,现在keras和tf都是G家的了

【在 h**c 的大作中提到】
: Keras这种东西的意义是啥?费老大劲在别人的API上又包装一层API?
1 (共1页)
进入Programming版参与讨论
相关主题
有什么中等规模的项目适合系统学习的?some C++ interview questions
IBM 弄出个DDL,16天缩短到7小时,很暴力魏老师,你很激动,来,我们做个项目管理
Keras 现在支持mxnet了tensorflow用小的batch size GPU吃不饱怎么破?
从数据压缩角度理解CNN有熟悉CUDA的吗?不胜感谢赐教
lightroom请科普下双路deep learning有谁懂 php 的?问个问题(有包子)
请xiaoju和digua来讲讲COM技术吧Theano, Spark ML, Microsoft’s CNTK, and Google’s TensorFlow
keras or tensorflowC++11 大家有用过吗?
做rest大大牛们来说说Help!! variable scope ????
相关话题的讨论汇总
话题: tf话题: scope话题: norm话题: batch话题: gpu