簡體   English   中英

如何將 cnn 網絡的 tflite 文件拆分為每一層的 tflite 文件?

[英]How to split a tflite file for cnn network into tflite files for each layer?

我目前正在嘗試找到一種方法來在 Android Stuio (java) 上運行時為 CNN 網絡的每一層獲取中間特性。 實際上,我在下面的鏈接中找到了一些相關的問題和答案。

如何從特定層獲取輸出張量?

從上面的鏈接,我認為按層划分模型將是解決我的任務的唯一方法。 但是,目前還沒有將.tffile 拆分為多個.tffiles 的解決方案。

更准確地說,

  • 我擁有的文件:mobilefacenet 網絡的 tflite 文件
  • 我必須制作的文件:mobilefacenet 每一層的 tflite 文件

如果您能告訴我執行上述任務的確切 python 代碼,我將不勝感激。 非常感謝!

下面的代碼是我的 android studio java 代碼中與這個問題相關的部分。

/** Model loader **/
@SuppressWarnings("deprecation")
private void loadModel() {
    try {
        //model name
        String modelFile = "mobile_face_net.tflite";
        tfLite = new Interpreter(loadModelFile(MainActivity.this, modelFile));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private MappedByteBuffer loadModelFile(AppCompatActivity activity, String MODEL_FILE) throws IOException {
    AssetFileDescriptor fileDescriptor = activity.getAssets().openFd(MODEL_FILE);
    FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
    FileChannel fileChannel = inputStream.getChannel();
    long startOffset = fileDescriptor.getStartOffset();
    long declaredLength = fileDescriptor.getDeclaredLength();
    return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);
}
tfLite.runForMultipleInputsOutputs(inputArray, outputMap); //Run model

有一種更簡單的方法可以逐層輸出。 來自 python 的 API 是這個選項

experimental_preserve_all_tensors

interpreter = tf.lite.Interpreter(
    model_path="test.tflite",
    experimental_preserve_all_tensors=True)

現在你可以在這個解釋器上逐層檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM