加载 csv 以在 tensorflow.js 中执行推理

Loading a csv to perform inference in tensorflow.js

我尝试了多种解析 csv 的方法。我有一个 csv 文件。我想从数据中获取数组。 Pandas相当于

pd.read_csv('csv_file.csv').values  # returns [100, 14] dim array

我试过 papa parse 来解析 csv 文件。

let parsed_data = papa.parse(file, 
         {
         header: true ,
         newline: '\n',
         dynamicTyping: true,
         complete:function(results)
           {
                data = results.data; 
           }}
);

这个returns一个[100,1]暗数组。 我尝试了 tf.data.csv 但它似乎不起作用

async function parse_data(){
  csvDataset = tf.data.csv(data_path,
    {
      hasHeader: true
    }
  );
  console.log(csvDataset);
};

Console.log returns Object { size: null, input: {…}

我想进行推理,类似这样(Python 等效)

model.predict(tf.tensor(pd.read_csv('csv').values))

tf.data.csv returns 一个 tf.csv.Dataset 这是一个异步迭代器。可以检索数据以创建张量。有人问过类似的问题 here

const csvUrl =
'https://storage.googleapis.com/tfjs-examples/multivariate-linear-regression/data/boston-housing-train.csv';

async function run() {

  const csvDataset = tf.data.csv(
    csvUrl, {
      columnConfigs: {
        medv: {
          isLabel: true
        }
      }
    });

  const numOfFeatures = (await csvDataset.columnNames()).length - 1;

  // Prepare the Dataset for training.
  const flattenedDataset =
    csvDataset
    .map(({xs, ys}) =>
      {
        // Convert xs(features) and ys(labels) from object form (keyed by
        // column name) to array form.
        return {xs:Object.values(xs), ys:Object.values(ys)};
      })
    //.batch(10);

const it = await flattenedDataset.iterator()
   const xs = []
   const ys = []
   // read only the data for the first 5 rows
   // all the data need not to be read once 
   // since it will consume a lot of memory
   for (let i = 0; i < 5; i++) {
        let e = await it.next()
      xs.push(e.value.xs)
      ys.push(e.value.ys)
   }
  const features = tf.tensor(xs)
  const labels = tf.tensor(ys)

  console.log(features.shape)
  console.log(labels.shape)

}

run();