【发布时间】:2021-03-27 17:02:29
【问题描述】:
与 My accuracy is at 0.0 and I don't know why?
我的模型是一个给定文本序列的超过 1600 个类别的分类问题。为此,我使用了sparseCategoricalCrossentropy 损失函数。这是代码:
import * as tf from '@tensorflow/tfjs-node';
import * as use from '@tensorflow-models/universal-sentence-encoder';
import training from './data/data.json';
import original from './data/original.json'
const classes = ["0", ...original.map(o => o.id)]
const batchSize = 128
const epochs = 600
const embeddingDims = 512;
async function* generator() {
const m = await use.load()
for (let i = 0; i < training.length; i += 1) {
const { intent, text } = training[i]
yield {
xs: Array.from((await m.embed(text.toLowerCase())).dataSync()),
ys: [classes.indexOf(intent)]
}
}
}
const dataset = tf.data.generator(generator).batch(batchSize)
const model = tf.sequential();
model.add(tf.layers.dense({
inputShape: [embeddingDims],
activation: 'relu',
units: 64,
}));
model.add(tf.layers.dropout({ rate: 0.25 }));
for (let i = 0; i < 5; i += 1) {
model.add(tf.layers.dense({
inputShape: [64],
activation: 'relu',
units: 64,
}));
}
model.add(tf.layers.dropout({ rate: 0.25 }));
model.add(tf.layers.dense({
inputShape: [64],
activation: 'relu',
units: 64,
}));
model.compile({
loss: 'sparseCategoricalCrossentropy',
optimizer: 'adam',
metrics: [tf.metrics.sparseCategoricalAccuracy],
});
// Training
model.fitDataset(dataset, { epochs })
.then(history => {
console.log('Trained!!', history)
model.save('file://./model')
});
training.length 是 121600,大约是每个类的 76 字符串。
损失函数看起来很小,看起来不错(至少对我来说)。但是精度我不明白为什么是0.00...
模型性能有点慢,每个 epoch 大约需要 1 小时才能完成,因此通过更改超参数进行测试有点乏味......让我们看看是否有人可以帮我看看有什么问题。感谢您的宝贵时间。
【问题讨论】:
标签: tensorflow machine-learning deep-learning neural-network tensorflow.js