Python 如何缩短预训练模型的加载时间?
使用ResNet50加载“Imagenet”的权重时,每次加载权重几乎需要10-11秒。 有没有办法缩短装载时间 代码: 所用时间在8-11秒之间。 如果它在3-4秒内加载模型并进行分类,我会很好Python 如何缩短预训练模型的加载时间?,python,keras,deep-learning,resnet,transfer-learning,Python,Keras,Deep Learning,Resnet,Transfer Learning,使用ResNet50加载“Imagenet”的权重时,每次加载权重几乎需要10-11秒。 有没有办法缩短装载时间 代码: 所用时间在8-11秒之间。 如果它在3-4秒内加载模型并进行分类,我会很好 提前感谢您可以这样做,即在特定会话中加载模型,然后每当您想要使用模型时,只需设置该特定会话,然后在需要时调用predict: app = Flask(__name__) sess = tf.Session(config=tf_config) graph = tf.get_default_graph()
提前感谢您可以这样做,即在特定会话中加载模型,然后每当您想要使用模型时,只需设置该特定会话,然后在需要时调用predict:
app = Flask(__name__)
sess = tf.Session(config=tf_config)
graph = tf.get_default_graph()
# IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras!
# Otherwise, their weights will be unavailable in the threads after the
session there has been set
set_session(sess)
model = InceptionV3(weights="imagenet")
@app.route('/object_rec', methods=['POST'])
def object_rec():
global sess
global graph
with graph.as_default():
set_session(sess)
model.predict(...)
if __name__ == '__main__':
app.run(host='0.0.0.0',port=6000,debug=True)
您应该在函数外部实例化模型,以便只加载一次~对于像ResNet这样的大型模型来说,10秒并不令人惊讶。是的,但是在函数之外调用模型是行不通的。事实上,我正在使用flask将代码转换为API,因此当我实例化在函数外部加载的模型时,会给我一个tensor错误。我根据一个tf+flask错误更新了答案,发现这样做会给我一个错误:ValueError:tensor tensor(“fc1000/Softmax:0”,shape=(?,1000),dtype=float32)不是这个图的元素。当我在object_rec()内部调用这个get_model()时,它每次都会重新加载。你不会在object_req内部加载它,而是像我写的那样在外部加载它。要解决此问题,请尝试app.run(…,threaded=False)我得到相同的错误:ValueError:Tensor Tensor(“fc1000/Softmax:0”,shape=(?,1000),dtype=float32)不是此图的元素。仍然存在相同的错误:ValueError:Tensor Tensor(“fc1000/Softmax:0”,shape=(?,1000),dtype=float32)不是此图的元素。是否正在开发、部署?这取决于您正在使用的配置
app = Flask(__name__)
sess = tf.Session(config=tf_config)
graph = tf.get_default_graph()
# IMPORTANT: models have to be loaded AFTER SETTING THE SESSION for keras!
# Otherwise, their weights will be unavailable in the threads after the
session there has been set
set_session(sess)
model = InceptionV3(weights="imagenet")
@app.route('/object_rec', methods=['POST'])
def object_rec():
global sess
global graph
with graph.as_default():
set_session(sess)
model.predict(...)
if __name__ == '__main__':
app.run(host='0.0.0.0',port=6000,debug=True)