张量流神经网络预测恢复后的不同值

2024-04-24 22:38:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用TensorFlow1.8.0和急切执行训练了一个神经网络。训练后,我保存了它,在cmd中加载和预测时没有问题。然后,我制作了一个python服务器(使用flask),它加载经过训练的模型,以接收带有json格式数据的POST请求,该格式后来被标准化并进入模型。但每次我重启服务器,神经网络都会给出不同概率的不同答案。 有些权重是以某种方式随机初始化的,但问题是,当我不使用服务器时,一切都按它所必须的方式运行。你知道吗

有人建议我使用:

tf.set_random_seed(1234)

它确实有助于随机回答,但网络上的预测与我训练它时得到的预测不同。我改变了设置随机种子每次都有不同的结果,所以我想我只需要给出正确的论点设置随机种子网络会像我训练的那样运行。你知道吗

那我怎么知道该写什么呢设置随机种子或者它的工作方式和我理解的完全不同?还是有别的问题?你知道吗

代码如下所示:

imports
tf.enable_eager_execution()

tf.set_random_seed(5)
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)

Tags: name模型服务器jsondatamodeltf方式