Я использую tenorflow.js (узел) как способ предварительной обработки файлов изображений для тензоров.
const tf = require('@tensorflow/tfjs');
require("@tensorflow/tfjs-node")
const mobilenetModule = require('@tensorflow-models/mobilenet');
const knnClassifier = require('@tensorflow-models/knn-classifier');
const { loadImage, createCanvas } = require('canvas')
Когда я создаю классификатор, он сохраняет объект класса Tensor в виде пары ключ: значение.После создания этого объекта я его разветвляю и записываю в файл, чтобы использовать его позже.
{ '0':
Tensor {
kept: true,
isDisposedInternal: false,
shape: [ 5, 1024 ],
dtype: 'float32',
size: 5120,
strides: [ 1024 ],
dataId: {},
id: 1333,
rankType: '2',
scopeId: 728 },
'1':
Tensor {
kept: true,
isDisposedInternal: false,
shape: [ 5, 1024 ],
dtype: 'float32',
size: 5120,
strides: [ 1024 ],
dataId: {},
id: 2394,
rankType: '2',
scopeId: 1356 } }
fs.writeFileSync("test", util.inspect(classifier.getClassifierDataset(), false, 2, false))
Когда я анализирую эту строку, поскольку она не является стандартным JSON, .parse () метод находит ошибку с файлом
(node:14780) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected token ' in JSON at position 2
Как преобразовать строку этого формата обратно в объект того же точного формата?
РЕДАКТИРОВАТЬ:
Решено: Преобразование моего тензора в массив
Сохранение этого тензора в виде строки
Извлечение этой строки из сохраненного местоположения
Воссоздать Тензор
let tensorArr = tensor.arraySync()
fs.writeFileSync("test", JSON.stringify(tensorArr))
let test = JSON.parse(classifierFile)
tf.tensor(test)
Рекомендовать Tennflow-модель KnnClassifier сделать это автоматически с их .getClassifierDataset