在阅读了tensorflow的教程之后,我决定做自己的项目。为此,我做了以下工作:
vocab_size = 10000
model = keras.Sequential()
model.add(keras.layers.Embedding(vocab_size, 16))
model.add(keras.layers.GlobalAveragePooling1D())
model.add(
keras.layers.Dense(16, activation=tf.nn.relu)
)
model.add(keras.layers.Dense(1))
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(optimizer=optimizer,
loss='mean_squared_error',
metrics=['accuracy'])在运行优化过程之后,我看到损失度量下降得相当快。然而,精度远低于0.1,在我检查了这个网络的预测之后,它们是无用的。该模型预测所有收视率在6-7之间。因此,我理解网络“优化”总是简单地猜测平均值。
我不知道下一步该做些什么。我的模型对这个任务错了吗?我应该以某种方式使我的数据正常化或增加吗?还是数据集的大小太小,无法得到任何有意义的结果?
编辑:这是指向我的数据集和生成它的脚本的链接:https://www.dropbox.com/s/csyo934hhtbxxu9/fw-data.tar.bz2?dl=0
发布于 2019-06-13 12:50:20
您现在正在做的是回顾分数的回归,因此准确性并不是评估绩效的合适指标。您的模型正在优化均方误差,因此它预测(几乎)平均复习分数是有意义的。
由于您对评级预测的准确性感兴趣,因此应将输出层设置为包含10个可能的输出的softmax层,如下所示:
model.add(keras.layers.Dense(10), activation='softmax')然后,您可以优化您的模型的categorical_crossentropy,并报告准确性。这样,你就可以对收视率进行分类。
model.compile(optimizer=optimizer,
loss='categorical_crossentropy',
metrics=['accuracy'])https://datascience.stackexchange.com/questions/53674
复制相似问题