これを行う方法はさまざまです。純粋に、テンソルフローを使用することはあまり柔軟ではありませんが、比較的簡単です。この方法の欠点は、グラフを再構築して、モデルを復元するコード内の変数を初期化する必要があることです。 tensorflow skflow/contrib learnに示されている方法がありますが、これはよりエレガントですが、現時点では機能していないようで、ドキュメントは古くなっています。
フラスコのREST展開テンソルフローモデルにGETまたはPOSTパラメータを指定する方法を示すgithub hereに簡単な例をまとめました。
メインコードは、POST/GETデータに基づいて、辞書をとる関数で、その後です:
@app.route('/model', methods=['GET', 'POST'])
@parse_postget
def apply_model(d):
tf.reset_default_graph()
with tf.Session() as session:
n = 1
x = tf.placeholder(tf.float32, [n], name='x')
y = tf.placeholder(tf.float32, [n], name='y')
m = tf.Variable([1.0], name='m')
b = tf.Variable([1.0], name='b')
y = tf.add(tf.mul(m, x), b) # fit y_i = m * x_i + b
y_act = tf.placeholder(tf.float32, [n], name='y_')
error = tf.sqrt((y - y_act) * (y - y_act))
train_step = tf.train.AdamOptimizer(0.05).minimize(error)
feed_dict = {x: np.array([float(d['x_in'])]), y_act: np.array([float(d['y_star'])])}
saver = tf.train.Saver()
saver.restore(session, 'linear.chk')
y_i, _, _ = session.run([y, m, b], feed_dict)
return jsonify(output=float(y_i))
狭い質問では、セーブロードモデルの後にFlaskで結果を返す作業例がほしい – chro