Python 显式地将tf变量添加到keras模型

Python 显式地将tf变量添加到keras模型,python,tensorflow,keras,Python,Tensorflow,Keras,我一直在尝试在keras模型中添加一个外部tf.Variable(这似乎不像任务那么简单)。在这种情况下,建议将变量直接添加到现有图层。除此之外,我对如何在这种情况下更新它还有一些疑问,我尝试为这个添加实现一个简单的脚本,但它似乎不起作用 import tensorflow as tf from tensorflow.keras import layers from tensorflow.keras import models from tensorflow.keras.optimizers i

我一直在尝试在keras模型中添加一个外部
tf.Variable
(这似乎不像任务那么简单)。在这种情况下,建议将变量直接添加到现有图层。除此之外,我对如何在这种情况下更新它还有一些疑问,我尝试为这个添加实现一个简单的脚本,但它似乎不起作用

import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras import models
from tensorflow.keras.optimizers import Adam

input_shape = (100, 120, 3)
image_input = layers.Input(input_shape)

x = image_input
x = layers.Conv2D(32, 3, strides=(2, 2), padding='same', name='conv_1')(x)
x = layers.Conv2D(32, 3, strides=(2, 2), padding='same', name='conv_2')(x)
output = layers.Conv2D(32, 3, strides=(2, 2), padding='same', name='conv_3')(x)

w = tf.Variable((10,), dtype=tf.float32)
model = models.Model(inputs=[image_input], outputs=[output], name='efficientdet')
print(model.summary())

model.layers[-1].trainable_weights.extend([w])
optimizer = Adam(lr=1e-3)
model.compile(optimizer=optimizer, loss='categorical_crossentropy')
print(model.summary())
没有错误,但实际模型似乎不受附加变量的影响

艾米,我错过了什么?有人知道如何在tf.keras中实现这一点吗

版本:
tf.keras
2.2.4-tf,
tf
1.15

编辑:


我问了一个相关的问题,在这种情况下,我声明了一组这样的变量将在损失函数中使用。在本例中,它们的初始化似乎存在一些问题,我试图在我拥有的主模型中定义它们。因此,在注释中询问的变量将被传递给一个类,该类中还包含一个loss函数。实际变量根本不需要是可训练的(实际上它不应该是可训练的)。但这里我要处理的事实是,我不能将其添加到模型本身。

这个外部变量的范围是什么?它要进行什么样的操作?