javascript - 如何在 tensorflow.js 神经网络中使用文本作为输入
问题描述
当我尝试训练和测试 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();
});
解决方案
您不能使用字符串来创建张量。当输入是字符串时,您需要根据输入创建一个向量。考虑这里的答案。
推荐阅读
- firebase - 制作apk后通知声音在android上不起作用
- python - 如何将参数从 Python 传递给 mysql 并根据这些参数从 mysql 获得响应?
- javascript - 用不同的颜色绘制活动类别
- java - Selenium Cucumber:功能文件无法通过运行器类找到步骤定义
- reactjs - Storybook 在侧边栏中添加自定义文本
- python - 如何在pytorch中找到偏导数
- hive - 雅典娜 - 无法将新列添加到以日期列作为第一列的分区镶木地板表中
- apache-spark - Databricks 中的 Spark 版本
- java - 告诉 Java 从指定位置选择 Kerberos ticketCache
- javascript - 无法建立与未捕获异常断开的 websocket 连接:错误 [ERR_IPC_CHANNEL_CLOSED]:通道已关闭