我在某个范围内创建了一些变量,如下所示:
with tf.variable_scope("my_scope"):
createSomeVariables()
...
Run Code Online (Sandbox Code Playgroud)
然后我想获取"my_scope"中所有变量的列表,这样我就可以将它传递给优化器.这样做的正确方法是什么?
我有一些相当大的批量大小,我想采取多个渐变步骤.虽然我可以使用python for循环轻松完成此操作,但我想可能有一个更有效的方法,不涉及在每次迭代时将数据传输到gpu.我已经尝试将列车操作多次放入获取列表中,但我不确定它实际上是多次运行(运行时完全相同).
我正在使用 distutils 构建一个扩展模块,不幸的是,它使用一堆我不想要的参数调用编译器。具体来说,它使用CFLAGS
/usr/lib64/python2.7/config/Makefile 中定义的变量,该变量也由
>>> from distutils import sysconfig
>>> print(sysconfig.get_config_vars()['CFLAGS'])
-fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv
Run Code Online (Sandbox Code Playgroud)
这个问题的答案是行不通的;CFLAGS=""
从命令行设置会导致 gcc 被调用
-DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv
Run Code Online (Sandbox Code Playgroud)
好像OPT
makefile中为空,但实际上设置OPT=""
没有效果。有什么方法可以告诉 distutils 不要添加这些标志吗?我知道我可以通过添加自己的标志来覆盖其中的大部分(手动取消定义宏,如-DNDEBUG
with-UNDEBUG
和覆盖-O2
with -O0
),但这真的很丑陋,肯定应该有更好的方法。
我一直在得到一些奇怪的类型类错误,形式为"没有实例(测试a0)来自表达式类型签名".这是我能提出的最简单的违规代码版本:
class Test a where
test :: a
foo = test
Run Code Online (Sandbox Code Playgroud)
添加类型没有帮助:
foo = test :: Test a => a
Run Code Online (Sandbox Code Playgroud)
但是,添加Test实例会使其编译:
instance Test Int where
test = 0
Run Code Online (Sandbox Code Playgroud)
这不是真的可以接受,因为我想在其他地方宣布我的实例.
最后,传递-XNoMonomorphismRestriction
给ghc(i)也允许它编译.虽然现在已经足够好了,但我不明白这个扩展的作用是什么,为什么有必要,或潜在的缺点.
我有两个独立的tensorflow进程,一个是训练模型并写出graph_def tensorflow.python.client.graph_util.convert_variables_to_constants
,另一个是读取graph_def tensorflow.import_graph_def
.我希望第二个进程在第一个进程更新时定期重新加载graph_def.不幸的是,即使我关闭当前会话并创建一个新会话,似乎每次我读取graph_def仍会使用旧的.我也曾尝试包裹import_graph_def call
带sess.graph.as_default()
,但没有成功.这是我当前的graph_def加载代码:
if self.sess is not None:
self.sess.close()
self.sess = tf.Session()
graph_def = tf.GraphDef()
with open(self.graph_path, 'rb') as f:
graph_def.ParseFromString(f.read())
with self.sess.graph.as_default():
tf.import_graph_def(graph_def, name='')
Run Code Online (Sandbox Code Playgroud)