gpt4 book ai didi

python - tensorflow如何忽略未定义的标志

转载 作者:太空狗 更新时间:2023-10-30 00:09:11 25 4
gpt4 key购买 nike

我将我的 tensorflow 模型包装在一个简单的 flask 服务器中,并为 flask 服务器添加了 gunicorn wsgi。当我运行 gunicorn 并试图发送一个请求来调用我已经导入到 flask 服务器的 train 函数时,我从命令行参数解析中得到一个错误:

absl.flags._exceptions.UnrecognizedFlagError: Unknown command line flag 'b'

我知道当 gunicorn 绑定(bind)地址参数时会传递此标志,因为我没有针对 tensorflow 命名为“b”的标志。所以我的问题是 tensorflow 如何忽略 tf.app.run() 函数不会提示的这些未定义标志?

仅供引用,这是我的服务器结构:

wsgi.py:

from simple_server import app

if __name__ == "__main__":
app.run()

simple_server.py:

from my_tf_model import my_train

@app.route('/call_train', methods=['POST'])
def call_train():
if request.method == 'POST':
training_data = request.json
my_train(training_data, param2)
return('Trained!')

my_tf_model.py:

tf.app.flags.DEFINE_integer('model_version',1, 'version number of the model.')
tf.app.flags.DEFINE_string('work_dir', '', 'Working directory.')
FLAGS = tf.app.flags.FLAGS

def my_train(param1, param2):
# Train Algorithm
export_path_base = FlAGS.work_dir
# Exporting model code

def main(argv):

my_train(param1, param2)

if __name__ == "__main__":
tf.app.run()

更新:

我正在使用 tensorflow 1.5.xpython 3.6.0,我对 gunicorn 使用的命令是:

gunicorn -b 0.0.0.0:5000 -t 30 wsgi:app

最佳答案

我通过在 tensorflow 模型中定义这些标志解决了我的问题:my_tf_model.py

tf.app.flags.DEFINE_string('bind', '', 'Server address')
tf.app.flags.DEFINE_integer('timeout', 30, 'Server timeout')

然后将我的 gunicorn 命令行更改为使用双破折号样式的命令行:

gunicorn --bind 0.0.0.0:5000 --timeout 30 wsgi:app

但我认为应该有一些其他方式而不是这种 hack 来解决全局使用的标志。

关于python - tensorflow如何忽略未定义的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48592296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com