【问题标题】:ValueError: None values not supportedValueError:不支持无值
【发布时间】:2016-08-17 12:33:28
【问题描述】:

我构建了一个自定义的 Keras 层,它有两种类型的权重,可学习的和不可学习的。在build(self, input_shape)

我将两个权重矩阵 Wt 和 Wu 相加,如下所示。

self.trainable_weights = [self.Wt]
self.non_trainable_weights = [self.Wu]
self.non_trainable_weights[0].eval(K.get_session()) # why?

call(self, x, mask=None) 我愿意:

gwt = K.gather(self.Wt, x)
gwu = K.gather(self.Wu, x)
return gwu + gwt

我的后端是 TensorFlow。

只有当我为不可训练的权重调用 eval 时,该代码才有效。如果我忽略它,我会得到一个 ValueError: None values not supported. 对于可训练的权重,我不必调用 eval

无论eval 的效果是什么,有没有更好的方法来达到同样的效果?

【问题讨论】:

    标签: tensorflow keras


    【解决方案1】:

    您是否尝试获取 x 指示的索引处的权重值?

    Tensorflow 以符号方式存储变量;直到运行时在会话的图表上评估它们时,它们才真正具有值。因此,为了获得权重,您必须先评估它们才能加载它们的值。

    【讨论】:

    • 感谢您的回答。难道没有更好的方法来加载值,而不是调用eval?例如,可训练权重中的矩阵无需调用即可使用,但不可训练权重中的矩阵不能(请参阅我的小编辑)。
    • 我不确定。它一定与 Wt 和 Wu 的初始化方式有关,这可能在代码的其他地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2016-05-25
    • 2020-02-14
    • 2016-01-07
    • 2017-11-12
    相关资源
    最近更新 更多