Javascript 错误是什么';数据集生成的特征数据缺少所需的输入键';在tensorflow js中是什么意思?

Javascript 错误是什么';数据集生成的特征数据缺少所需的输入键';在tensorflow js中是什么意思?,javascript,csv,tensorflow.js,Javascript,Csv,Tensorflow.js,错误未捕获(承诺中)错误是什么:数据集生成的特征数据缺少所需的输入键“密集输入”。什么意思?我尝试了不同的方法来解决这个问题,比如不同的输入形状和不同的批量大小,但似乎没有任何效果。我有一个包含484个特征和30行的数据输入,以及一个包含1列和30行的标签集 确切的错误是: Uncaught (in promise) Error: The feature data generated by the dataset lacks the required input key 'dense_Dense

错误未捕获(承诺中)错误是什么:数据集生成的特征数据缺少所需的输入键“密集输入”。什么意思?我尝试了不同的方法来解决这个问题,比如不同的输入形状和不同的批量大小,但似乎没有任何效果。我有一个包含484个特征和30行的数据输入,以及一个包含1列和30行的标签集

确切的错误是:

Uncaught (in promise) Error: The feature data generated by the dataset lacks the required input key 'dense_Dense1_input'.
    at new e (errors.ts:48)
    at Wd (training_dataset.ts:277)
    at Pd (training_dataset.ts:222)
    at training_dataset.ts:421
    at common.ts:14
    at Object.next (common.ts:14)
    at o (common.ts:14)
我的代码

<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.5.2/dist/tf.min.js"></script>
<title>test</title>             
</head>
<body>
<script>

const csvUrlData = '/image_data.csv';
const csvUrlLabel = '/number_data.csv';
const headers_image = Array.from(Array(484).keys());
const headers_image_string = headers_image.map(String);

async function run() {
  const csvDataset = tf.data.csv(
    csvUrlData,{
        hasHeader: false,
        columnNames: headers_image_string
    });
  const csvLabelset = tf.data.csv(
    csvUrlLabel, {
        columnConfigs: {
            label_numbers: {
                isLabel: true
            }
        }
    }
  );

  const flattenedDataset = tf.data.zip({xs: csvDataset, ys: csvLabelset}).batch(5);

  const model = tf.sequential();
  model.add(tf.layers.dense({
    inputShape: [484],
    units: 1
  }));
  model.compile({
    optimizer: tf.train.sgd(0.00000001),
    loss: 'meanSquaredError'
  });

  return await model.fitDataset(flattenedDataset, {
    epochs: 10,
    callbacks: {
      onEpochEnd: async (epoch, logs) => {
        console.log(epoch + ':' + logs.loss);
      }
    }
  });
}
run();
</script>
</body>
</html>

试验
const csvUrlData='/image_data.csv';
const csvurlabel='/number_data.csv';
const headers_image=Array.from(Array(484.keys());
const headers\u image\u string=headers\u image.map(字符串);
异步函数run(){
const csvDataset=tf.data.csv(
csvUrlData{
哈希德:错,
列名称:标题\图像\字符串
});
const csvLabelset=tf.data.csv(
csvUrlLabel{
列配置:{
标签编号:{
伊斯拉贝尔:是的
}
}
}
);
const flattedDataset=tf.data.zip({xs:csvDataset,ys:csvLabelset}).batch(5);
const model=tf.sequential();
model.add(tf.layers.dense({
inputShape:[484],
单位:1
}));
model.compile({
优化器:tf.train.sgd(0.00000001),
损失:“平均平方误差”
});
return wait model.fitDataset(扁平数据集{
纪元:10,
回调:{
onEpochEnd:async(历元,日志)=>{
console.log(epoch+':'+logs.loss);
}
}
});
}
run();

不应在
labelDataset
中使用
isLabel
属性,因为数据是在压缩后压缩的。这将为标签创建一个嵌套对象。如果必须使用它,则需要使用操作符
map
仅检索
labelDataset
ys
属性

  const csvDataset = tf.data.csv(
    csvUrlData,{
        hasHeader: false,
        columnNames: headers_image_string
    });
  const csvLabelset = tf.data.csv(
    csvUrlLabel, {
        columnConfigs: {
            label_numbers: {
                isLabel: true
            }
        }
    }
  );

  const flattenedcsvDataset =
    csvDataset
    .map((data) =>
      {
        return Object.values(data)
      })

  const flattenedcsvLabelset =
    csvDataset
    .map((data) =>
      {
        return Object.values(data)
      })

  const flattenedDataset = tf.data.zip({xs: flattenedcsvDataset, ys: flattenedcsvLabelset}).batch(5);
然后可以将
flattedDataset
用于培训

const csvUrl=
'https://storage.googleapis.com/tfjs-examples/multivariate-linear-regression/data/boston-housing-train.csv';
(异步函数运行(){
const csvDataset=tf.data.csv(
csvUrl{
列配置:{
/*medv:{
伊斯拉贝尔:是的
}*/
}
});
//Number of features是标签的列名数减去一
//专栏。
const numOfFeatures=(等待csvDataset.columnNames()).length;
//为培训准备数据集。
常数平坦数据集=
csvDataset
.map((数据)=>
{
返回对象。值(数据)
})
const zip=tf.data.zip({xs:flattedDataset,ys:flattedDataset})。批处理(10)
//定义模型。
const model=tf.sequential();
model.add(tf.layers.dense({
inputShape:[numOfFeatures],
单位:numOfFeatures
}));
model.compile({
优化器:tf.train.sgd(0.000001),
损失:“平均平方误差”
});
//使用准备好的数据集拟合模型
返回model.fitDataset(zip{
纪元:10,
回调:{
onEpochEnd:async(历元,日志)=>{
console.log(epoch+':'+logs.loss);
}
}
});
})()

试验

谢谢,我通过将所有csv文件转换为json文件并用张量代替数据集解决了这个问题。但你的答案更好更简单。