从Tensorflow/keras中的另一层输出中初始化一层的重量



我正在尝试实现"学习分割所有内容"的论文,我需要使用权重传递功能的输出来设置分段网络中的一层的权重。p>使用图层中的重量转移中最后一层的输出。keras中的输出类型为" tensorflow.python.framework.ops.ops.tensor",而权重应初始化为numpy阵列。知道我如何设置权重?

从我从纸上获得的东西,重量应连接到此转换层的输出,例如它是X。因此,您想要的不是创建"权重",然后初始化使用tf.sign或任何其他方法使用此输出X的权重,因为这不会是可区分的。,您想要的是 connect the Outption X直接用作权重工作另一个图。

问题是您无法通过keras层甚至tf.layers做到这一点。自己的权重,而您不想要,您想使用此输出X,因为权重没有创建新的权重。因此,您可以做的是轻松地重新实现您想要的任何图层,并直接使用X作为此层中的权重,这将使梯度可以通过此X。

权重通常存储在变量中。tf.assign操作可用于将值(表示为张量(分配给变量。您可以在会话测试中看到一些使用tf.sign的基本示例。它名称为state_ops.assign()

请注意,与其他TensorFlow操作一样,它不会立即更新变量的值(除非您使用急切的执行(。它返回张量,当对评估(例如通过session.run()(进行评估时,将更新变量。

从您的问题中,我怀疑您可能对TensorFlow计算模型不清楚。Tensor类型是仅当计算实际运行(通过session.run()(时才会产生的某些值的符号表示。您无法真正谈论"将张量转换为numpy阵列",因为您无法真正将" FOO操作的结果"转换为混凝土浮子。您必须运行计算以计算"操作Foo的结果"才能知道具体数字。tf.assign在此符号空间中工作。使用它时,您是在说:"无论该张量的值(某些层的输出(是在我运行计算时,都将其分配给此变量"。

最新更新