首页 > 解决方案 > .infer() 嵌入等效于 layersModel

问题描述

我正在使用 TensorFlow.js,我有兴趣获取嵌入而不是预训练模型的 logits,正如 MobileNet 的https://github.com/tensorflow/tfjs-models/tree/master/mobilenet中所述( '获取嵌入')

例如,加载经典的 MobileNet 模型后const model = await mobilenet.load(),您可以使用model.infer(image, 'conv_preds')它,它运行良好,您可以进行迁移学习。

但是,infer 方法不适用于我使用加载的离线模型loadLayersModel()。在环顾四周(例如)之后,我尝试访问图层的输出get_layer但没有成功。

我是否需要创建和导出一个新模型,该模型输出我感兴趣的图层,然后我将其加载为新模型layersModel并使用?难道没有别的办法了吗?

任何意见,将不胜感激

标签: tensorflowkerastensorflow.js

解决方案


尝试这个

async function loadMobilenet() { 
const mobilenet = await tf.loadLayersModel('https://storage.googleapis.com/tfjs-models/tfjs/mobilenet_v1_0.25_224/model.json');
      const layer = mobilenet.getLayer('conv_pw_13_relu');
   return tf.model({inputs: mobilenet.inputs, outputs: layer.output}); }

获取嵌入:

const activation = mobilenet.predict(img);

推荐阅读