Может ли следующая базовая модель тензорного потока учиться? Это правильный подход? - PullRequest
0 голосов
/ 10 октября 2019

Я начал играть с тензорным потоком следующим образом:

Мои тренировочные данные состоят из такого массива (для этого примера 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 голосов
/ 10 октября 2019

Количество нейронов в последнем плотном слое должно быть числом классов, которые вы хотите предсказать. Если в вашем случае есть 3 класса, последний слой должен быть Dense(3) вместо Dense(100).

Кроме того, вы должны использовать sparse_categorical_crossentropy вместо categorical_crossentropy, когда ваша метка целочисленная, как в вашем случае. Вы используете categorical_crossentropy, когда у вас есть вектор с горячим кодированием для вывода. Чтобы преобразовать в вектор с горячим кодированием, вы можете использовать функцию to_categorical из keras.utils.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...