python - 是否有轻量级的 Python 模块来加载预装的 ML 模块并执行预测?

标签 python machine-learning keras neural-network raspberry-pi2

我正在实现一个机器学习模块,该模块应该在 Raspberry Pi 中运行,目前在不同的服务之间共享。 我的想法是仅在设备中存储负责检索 ML 模块的输入并执行预测的代码,以及包含已使用 Keras 安装的神经网络模型的文件。 换句话说,如果我的目的只是对经过训练的模型执行预测,而不是训练新模型,我希望避免安装所有 Keras/Tensorflow 包和依赖项。 有没有办法做到这一点?是否有任何轻量级库允许加载神经网络模型(具有所有权重和偏差设置)并在给定输入的情况下执行预测?

我现在能做的就是在 Raspberry Pi 中加载一个包含模型、权重和偏差的“.h5”文件,但我仍然必须通过 Keras 声明模型的构建函数。

from tensorflow.keras.models import load_model
from tensorflow.keras.wrappers.scikit_learn import KerasRegressor
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

def NN_model():
'''
Definition of the Neural Network model
'''
model = Sequential()
model.add(Dense(7, input_dim=6, kernel_initializer='normal', activation='relu'))
model.add(Dense(15, kernel_initializer='normal', activation='relu'))
model.add(Dense(24, kernel_initializer='normal'))
# Compile model
model.compile(loss='mean_squared_error', optimizer='adam')
return model

'''
Load NN model and use it to predict the radiation values
for the next 24 hours, hour by hour
'''
regr = KerasRegressor(build_fn=NN_model, epochs=1000, batch_size=5, verbose=0)
regr.model = load_model('saved_model.h5')
pred=regr.predict(input_row)

由于拟合的神经网络只是权重和偏差(以及激活函数)的问题,我希望一旦确定了这些参数,我就不需要整个 Tensforflow 和 Keras 环境来将输出映射到我向神经网络提供的输入。

我想要的是这样的:

import lightweight_module as lm
regression_model = lm.load_model('saved_model.h5')
prediction=regression_model.predict(inputs)

最佳答案

您可以做的是修剪您的神经网络,同时保持相同的准确性。它消除了不同神经元之间所有不需要的连接,这些连接不会学到任何重要的东西。它不仅降低了神经网络的复杂性,还大大减少了所需的存储空间,并减少了推理时间。在 Keras 中,我不知道有任何这样的模块(尽管我认为人们已经制作了自己的版本),但是像 pytorch 和 caffe 这样的模块有一些 AlexNets 和 VGGNets 的实现,它们可以将 NN 模型的大小减少 49 倍。您可以在这里找到一个这样的实现。

https://github.com/felzek/AlexNet-A-Practical-Implementation/blob/master/testModel.py

关于python - 是否有轻量级的 Python 模块来加载预装的 ML 模块并执行预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56260035/

相关文章:

python - 用户存在但无法使用 simpleJWT 和 Django Admin 进行身份验证

Python OOO设计多个类

python - 如何启用Dataset pipeline的分布式读取和消费

python - 导入错误 : cannot import name TimeDistributedDense in Keras

python - 即使我使用相同的层模块构建完全相同的模型,Tensorflow 和 Keras 显示的结果略有不同

python - Keras 验证损失计算不正确

python - 在 matplotlib 中获得倒序累积直方图的技巧

python - 向后差异编码如何用于测试集?

python - 电子竞技比赛预测器(机器学习)

python - 如何增强问答游戏的多项选择功能?