【问题标题】:How to use text as input in tensorflow.js neural network如何在 tensorflow.js 神经网络中使用文本作为输入
【发布时间】:2018-08-07 19:57:45
【问题描述】:

当我尝试训练和测试 tensorflow.js 模型时,我得到 NaN 作为输出:

Tensor
[[NaN, NaN, NaN],
 [NaN, NaN, NaN]]

在进行了一些调试之后,我发现我得到的是 NaN,因为我试图使用字符串作为输入。这是我将通过神经网络运行的 json 对象的示例:

{
    "raw_sentence" : "Apple - a delicious, juicy red fruit",
    "term_index": 0,
    "definition_start_index": 2,
    "definition_end_index": 6
}

我使用raw_sentence 作为输入。这是我的代码(训练数据分配给变量“training”,测试数据分配给变量“testing”):

const trainingData = tf.tensor2d(training.map(item => [
    item.raw_sentence,
]));
const outputData = tf.tensor2d(training.map(item => [
    item.term_index,
    item.definition_start_index,
    item.definition_end_index
]));
const testingData = tf.tensor2d(testing.map(item => [
    item.raw_sentence
]));

const model = tf.sequential();

model.add(tf.layers.dense({
    inputShape: [1],
    activation: "softplus",
    units: 2,
}));
model.add(tf.layers.dense({
    inputShape: [2],
    activation: "softplus",
    units: 3,
}));
model.add(tf.layers.dense({
    activation: "softplus",
    units: 3,
}));
model.compile({
    loss: "meanSquaredError",
    optimizer: tf.train.adam(.06),
});
const startTime = Date.now();
model.fit(trainingData, outputData, {epochs: 12})
    .then((history) => {
         console.log(history);
        console.log("Done training in " + (Date.now()-startTime) / 1000 + " seconds.");
        model.predict(testingData).print();
    });

【问题讨论】:

  • term_indexdefinition_start_indexdefinition_end_index是什么意思?
  • @edkeveked 术语索引(例如“apple”)、定义开始索引和定义结束索引(“美味多汁的红色水果”)分别。
  • 您能解释一下您要解决的问题是什么吗?

标签: javascript tensorflow.js


【解决方案1】:

您不能使用字符串来创建张量。当输入是字符串时,您需要根据输入创建一个向量。考虑答案here

【讨论】:

  • 即使在实时之前我不知道将什么字符串输入到神经网络中,这是否有效?
  • 答案展示了如何将字符串转换为向量,其中使用字符串单词的频率计算特征。这是一个一般用例
猜你喜欢
  • 2017-06-13
  • 1970-01-01
  • 2022-01-13
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-12-04
  • 2017-10-28
相关资源
最近更新 更多