我不知道如何在作为服务器运行的Django应用程序中“保留”我的Keras模型的图形/会话。
我已经构建了Keras顺序模型DeepModel
,它可以作为独立的Python模块正常工作。但是现在我想将其嵌入到Django应用程序中,在该应用程序中我为模型定义了以下处理程序:
# instantiated by Django app
class DeepModelManager:
def __init__(self, params):
self.graph = tf.Graph()
self.sess = tf.Session()
K.set_session(self.sess)
with self.sess.as_default():
self.instance = DeepModel(params)
self.model = self.instance.build()
optimizer = Adam()
loss = "categorical_crossentropy"
metrics = ["accuracy"]
self.model.compile(loss=loss, optimizer=optimizer, metrics=metrics)
def train(self):
X = ...
y = ...
K.set_session(self.sess)
with self.sess.as_default():
H = self.model.fit(X, y, epochs=20)
该过程以下列方式工作:
DeepModelManager
(作为views
模块变量),该实例实例化/构建/编译Keras DeepModel
train
函数,即模型拟合但是只要运行train
方法,我就会不断收到错误消息
ValueError: Tensor("training/Adam/Const:0", shape=(), dtype=float32) must be from the same graph as Tensor("sub:0", shape=(), dtype=float32).
我怀疑这是由于在模型初始化和训练之间以某种方式清除了TensorFlow会话(或图形)。这就是为什么我尝试使用tf.Session()
和tf.Graph()
(在独立DeepModel
版本中,我没有碰它)的原因,但是它没有帮助。