首页 > 解决方案 > TensorFlow 神经网络在创建服务器后预测相同数据的不同答案

问题描述

我已经使用 TensorFlow 1.8.0 和 Eager Execution 训练了一个神经网络。训练后我保存了它,加载和预测没有问题。然后我制作了一个 python 服务器(使用烧瓶),它加载训练好的模型以接收带有 json 格式数据的 POST 请求,然后将其标准化并继续模型。但是现在每次我重新启动服务器时,神经网络都会以不同的概率给出不同的答案。我已经检查过:

这是代码的样子:

imports
tf.enable_eager_execution()

model = tf.keras.Sequential([
...
])
optimizer
root = tfe.Checkpoint(optimizer=optimizer, model=model, optimizer_step=tf.train.get_or_create_global_step())    
root.restore(tf.train.latest_checkpoint(checkpoint_directory))

@app.route('/calc', methods=['POST'])
def predict_data():
    read and parse json
    class_ids = ["false", "true"]
    predict_data = tf.convert_to_tensor([data_to_predict])
    predictions = model(predict_data)
    for i, logits in enumerate(predictions):
        class_idx = tf.argmax(logits).numpy()
        p = tf.nn.softmax(logits)[class_idx]
        name = class_ids[class_idx]
        return("{\"Result\":"+ name+",\"Probability\":"+str(float(p))+"}")

if __name__ == '__main__':
app.run(debug, port)

似乎某些权重以某种方式随机初始化,但问题是当我不使用服务器时,everythig 都必须这样做。

标签: pythontensorflowserverneural-network

解决方案


正如您所说,您需要设置种子,因此在 TensorFlow 中您可以尝试:

tf.set_random_seed(1234)

推荐阅读