TensorFlow.js Node环境下如何本地加载Universal Sentence Encoder模型?
解决TensorFlow.js本地加载Universal Sentence Encoder模型的问题
要避免每次运行脚本都下载525MB的USE模型,你可以通过以下步骤从本地加载模型:
1. 获取本地模型文件
首次运行你的脚本时,TensorFlow.js会自动将模型缓存到本地,路径通常在:~/.cache/tensorflowjs/models/
找到名为universal-sentence-encoder的文件夹,将其完整复制到你的项目目录下(比如命名为use-model)。
2. 修改加载代码
USE属于Graph模型,而非Layers模型,因此不能用tf.loadLayersModel加载。你需要通过use.load()的modelUrl参数指定本地模型路径,有两种实现方式:
方式一:直接使用本地文件路径
const tf = require('@tensorflow/tfjs-node'); const use = require('@tensorflow-models/universal-sentence-encoder'); use.load({ modelUrl: 'file://./use-model/model.json' }) .then(model => { const sentences = ['Hello.', 'How are you?']; model.embed(sentences) .then(embeddings => embeddings.print(true)); });
方式二:使用tf.io.fileSystem处理路径
const tf = require('@tensorflow/tfjs-node'); const use = require('@tensorflow-models/universal-sentence-encoder'); async function loadLocalUSE() { // 创建本地文件处理器 const modelHandler = tf.io.fileSystem('./use-model/model.json'); // 加载本地模型 const model = await use.load({ modelUrl: modelHandler }); const sentences = ['Hello.', 'How are you?']; const embeddings = await model.embed(sentences); embeddings.print(true); } loadLocalUSE();
注意事项
- 确保
use-model文件夹包含model.json和所有权重分片文件(通常是.bin或shard后缀的文件),缺一不可。 - 路径需根据实际情况调整:Linux/macOS绝对路径格式为
file:///Users/xxx/use-model/model.json,Windows格式为file://C:/Users/xxx/use-model/model.json。
内容的提问来源于stack exchange,提问作者CodeSoft
相关产品推荐
相关产品推荐

