首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在tf.contrib.layers中指定权重时,是否有constant_initializer的替代方案

在tf.contrib.layers中指定权重时,是否有constant_initializer的替代方案
EN

Stack Overflow用户
提问于 2019-05-18 00:34:04
回答 1查看 119关注 0票数 1

我想将权重传递给tensorflow.contrib.layers.conv2d。这些层具有参数weights_initializer。当通过weights_initializer=tf.constant_initializer(tensor)传递张量时,张量作为节点被额外添加到图中,导致模型的大小增加。

是否有权重初始化的替代方案?

我知道tf.nn.conv2d接受权重作为参数。然而,我正在使用的当前模型使用的是contrib-layer。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-18 01:04:56

如果您想要将权重初始化为某个常量,但又不想将该常量存储在图形中,则可以使用占位符并在初始化时为其提供一个值。只要有这样的东西:

代码语言:javascript
复制
weight_init = tf.placeholder(tf.float32, <shape>)
# As a parameter to your layer
weights_initializer=lambda *a, **k: weight_init

注意,weight_init的形状必须与权重张量的大小相匹配。然后,在初始化时:

代码语言:javascript
复制
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op, feed_dict={weight_init: <initial weight value>})

或者,您可以不使用初始化器,而不是调用初始化op,而是使用weight变量的load方法。为此,您必须首先访问该变量:

代码语言:javascript
复制
with tf.Session() as sess:
    weight_var.load(<initial weight value>, session=sess)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56190355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档