以下基本张量流模型可以学习吗?这是正确的方法吗?

时间:2019-10-10 13:36:49

标签: tensorflow machine-learning keras

我开始像这样玩张量流:

我的训练数据由这样的数组组成(在此示例中,len为3,但在我的实际示例中,len为100):

[1, 0, 0]
[0, 1, 0]
[0, 0, 1]

....
then it repeats itself until a 1000
... 

[1, 0 , 0]
[0, 1, 0]
[0, 0, 1]

我的标签数据由一个数组列表组成,该数组显示第1个位置:

[1, 2, 3, 1, 2, 3 .....] until 1000.

我正在为模型使用以下配置,但准确性似乎很低。所以我想这不是学习的大事。我是否错误地解释了张量流的工作原理?有人可以给我提示如何解决这个问题吗?

model.add(layers.Dense(100, activation='relu'))
model.add(layers.Dense(100, activation='softmax'))

model.compile(optimizer=tf.compat.v1.train.AdamOptimizer(0.01),
    loss='categorical_crossentropy',
    metrics=['accuracy'])

model.fit(data, labels, epochs=50, batch_size=100)

谢谢!

1 个答案:

答案 0 :(得分:0)

最后一个密集层中神经元的数量应为您要预测的类的数量。如果您的情况下有3个类别,则最后一层应为Dense(3)而不是Dense(100)

此外,当标签为整数时(例如您的情况),应使用sparse_categorical_crossentropy而不是categorical_crossentropy。当您有一个热编码矢量作为输出时,可以使用categorical_crossentropy。要转换为单编码矢量,可以使用keras.utils中的to_categorical函数。

引用:https://stats.stackexchange.com/questions/326065/cross-entropy-vs-sparse-cross-entropy-when-to-use-one-over-the-other