启用带TFlite的Dropout



我在Keras中用Dropout训练了一个密集的全连接神经网络,现在想用TFlite部署它。为了从我们在预测期间保持dropout的模型中采样动作(我们使用该模型来优化上下文多武装强盗):

prediction = model(X, training=True)

问题是:有没有一种方法来保持辍学也在一个小模型?也许硬码辍学?

这样我们也可以从已部署的模型中采样操作。

我设法保持dropout。有两件事必须做。

  1. 在构建keras模型时设置Dropout层的训练标志(这一直使能Dropout)
x = Dropout(0.1)(x, training=True)
  1. 设置TFlite转换器标志
converter = tf.lite.TFLiteConverter.from_keras_model(actor.model)
converter.target_spec.supported_ops = [
tf.lite.OpsSet.TFLITE_BUILTINS,  # enable TensorFlow Lite ops.
tf.lite.OpsSet.SELECT_TF_OPS  # enable TensorFlow ops.
]
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

可悲的是,这增加了模型加载时间。

参考:https://www.tensorflow.org/lite/guide/ops_select

相关内容

  • 没有找到相关文章