簡體   English   中英

如何使用 tensorflow.js 創建參差不齊的張量

[英]How to create ragged tensors with tensorflow.js

我似乎無法弄清楚如何使用 tensorflow.js 創建一個參差不齊的張量。 我也無法在 api 文檔中找到任何內容。

我正在制作一個簡單的貓與狗 AI,並擁有不同大小的圖像。 我正在使用fs.readFileSync來獲取緩沖區,使用toJson方法,然后使用該對象上的data屬性在我的訓練數據中用作向量。 由於圖像不同,每個向量的大小不同,因此需要不規則的張量。 我已經嘗試在我的形狀中使用nullNaN沒有結果。

我對 tensorflow 也很陌生,所以歡迎提出任何建議。

這是我的代碼:

const tensorflow = require('@tensorflow/tfjs')
const fs = require('fs')

exports.ImagePredict = function (test, ...dataSets) {
  const images = {}

  for(const i of dataSets) {
    images[i.name] = []
    for(const x of i.data) {
      images[i.name].push(fs.readFileSync(x).toJSON().data)
    }

    images[i.name] = tensorflow.tensor(images[i.name], [images[i.name].length, null])
  }

  return images
}

console.log(exports.ImagePredict(null, {name: 'Cat', data: ['../Sets/PetImages/Cat/1.jpg', '../Sets/PetImages/Cat/2.jpg', '../Sets/PetImages/Cat/3.jpg']}))

我希望該函數返回一個參差不齊的張量,但它卻拋出了這個錯誤:

throw new Error(typeof msg === 'string' ? msg : msg());
        ^

Error: Element arr[1] should have 16868 elements, but has 26997 elements
    at Object.assert (C:\Users\Miles\Desktop\AI\tensorflow.js\node_modules\@tensorflow\tfjs-core\dist\util.js:48:15)
    at deepAssertShapeConsistency (C:\Users\Miles\Desktop\AI\tensorflow.js\node_modules\@tensorflow\tfjs-core\dist\tensor_util_env.js:34:12)
    at deepAssertShapeConsistency (C:\Users\Miles\Desktop\AI\tensorflow.js\node_modules\@tensorflow\tfjs-core\dist\tensor_util_env.js:38:9)
    at Object.inferShape (C:\Users\Miles\Desktop\AI\tensorflow.js\node_modules\@tensorflow\tfjs-core\dist\tensor_util_env.js:20:9)
    at Object.tensor (C:\Users\Miles\Desktop\AI\tensorflow.js\node_modules\@tensorflow\tfjs-core\dist\ops\tensor_ops.js:23:43)
    at Object.exports.ImagePredict (C:\Users\Miles\Desktop\AI\tensorflow.js\index.js:13:33)
    at Object.<anonymous> (C:\Users\Miles\Desktop\AI\tensorflow.js\index.js:19:21)
    at Module._compile (internal/modules/cjs/loader.js:736:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:747:10)
    at Module.load (internal/modules/cjs/loader.js:628:32)

目前,tfjs 不支持參差不齊的張量。 如果您的圖像具有不同的形狀,請考慮裁剪它們或調整它們的大小以使其具有模型的 inputShape 形狀。 實際上后者是大多數分類模型中的常見處理

暫無
暫無

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

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