Javascript 如何将角度数据转换为正确的张量格式?

Javascript 如何将角度数据转换为正确的张量格式?,javascript,angular,typescript,tensorflow.js,Javascript,Angular,Typescript,Tensorflow.js,我正在做一个机器学习项目,我正在尝试用angular来部署我的算法。 我已经正确地上传了预训练模型,并且我成功地从csv上传了数据,但是现在我无法正确地将数据转换为正确的张量格式。 我的模型是一个LSTM神经网络,它期望加速计数据(x轴、y轴和z轴)长度为60的时间窗口预测人类活动,因此张量的格式为[any,60,3] 在下面,你可以找到我的代码的重要部分,我到现在为止 在这里加载模型 async loadModel() { this.model = await tf.loadLayers

我正在做一个机器学习项目,我正在尝试用angular来部署我的算法。 我已经正确地上传了预训练模型,并且我成功地从csv上传了数据,但是现在我无法正确地将数据转换为正确的张量格式。 我的模型是一个LSTM神经网络,它期望加速计数据(x轴、y轴和z轴)长度为60的时间窗口预测人类活动,因此张量的格式为[any,60,3] 在下面,你可以找到我的代码的重要部分,我到现在为止

在这里加载模型

async loadModel() {
   this.model = await tf.loadLayersModel('assets/tfjs_model/model.json');
 };
现在我有一个带有tf.ones()函数的占位符,可以简单地测试我的预测是否有效(它确实有效!!)

})

这是代码的一部分,我在这里加载数据

getDataRecordsArrayFromCSVFile(csvRecordsArray: any, headerLength: any) {
let dataArr = [];

for (let i = 0; i < csvRecordsArray.length; i++) {
  let data = (<string>csvRecordsArray[i]).split(',');

  // FOR EACH ROW IN CSV FILE IF THE NUMBER OF COLUMNS
  // ARE SAME AS NUMBER OF HEADER COLUMNS THEN PARSE THE DATA
  if (data.length == headerLength) {

    let csvRecord: CSVRecord = new CSVRecord();

  //  csvRecord.timestep = Number(data[0].trim());
    csvRecord.xAxis = Number(data[1].trim());
    csvRecord.yAxis = Number(data[2].trim());
    csvRecord.zAxis = Number(data[3].trim());

    dataArr.push(csvRecord);
  }
}
return dataArr;
}

与其创建一个对象来填充
dataArr
,不如使用数组

if (data.length == headerLength) {

    let csvRecord: number[] = [];

  //  csvRecord.timestep = Number(data[0].trim());
    csvRecord.push(Number(data[1].trim()));
    csvRecord.push(Number(data[2].trim()));
    csvRecord.push(Number(data[3].trim()));

    dataArr.push(csvRecord);
  }
然后,要从
dataArr
中创建张量,可以使用

tf.tensor(dataArr)
使用
tf.tensor
,它将创建一个形状为
[dataArr.length,3]


但是,如果
dataArr
是一个大数组,尝试直接创建它的张量将导致内存问题,因为在计算期间开始使用时,整个数据将直接上载到张量后端。这篇文章讨论了在创建张量时如何处理大数据。

我知道答案以及人们回答我的问题所花的时间,我正在努力自己解决问题。但在这样做的同时,新的问题/问题也出现了。我只是在这里寻求帮助,因为我对编程的某些部分还不熟悉……请参见下面的答案谢谢,这帮了大忙——还有关于如何处理大型数据集的链接!)你有没有办法,我怎么能把这个形状的张量转换成这个形状的张量(任意,60,3)?因此,我的算法需要60个数据点,包括x轴、y轴和z轴数据。根据整个数据集(例如,如果我有36o个数据点,形状将是[6,60,3]),你可以使用
张量。重塑([-1,60,3])
。但是,为了重塑工作,你需要有许多数据的倍数
60*3=180
if (data.length == headerLength) {

    let csvRecord: number[] = [];

  //  csvRecord.timestep = Number(data[0].trim());
    csvRecord.push(Number(data[1].trim()));
    csvRecord.push(Number(data[2].trim()));
    csvRecord.push(Number(data[3].trim()));

    dataArr.push(csvRecord);
  }
tf.tensor(dataArr)