#tensorflow
#tensorflow
Вопрос:
Я создал образец TensorFlow, который принимает целое число, делит его на 5 и классифицирует на остаток.
https://colab.research.google.com/drive/1CQ5IKymDCuCzWNfgKQrZZSL3ifyzRJrA?usp=sharing
import numpy as np
from keras import models
from keras import optimizers
from keras import layers
from keras.utils import to_categorical
num_of_rows = 1500
num_of_classes = 5
X = np.abs(np.floor(np.random.randn(num_of_rows, 1)* 10000))
y = X % (num_of_classes)
X = X /100000
model = models.Sequential()
model.add(layers.Dense(25, input_dim=1))
model.add(layers.Dense(25, activation='relu'))
model.add(layers.Dense(25))
model.add(layers.Dense(num_of_classes, activation='softmax'))
model.compile(optimizer=optimizers.Adam(lr=0.001),loss='categorical_crossentropy',)
model.summary()
X_normal = X.astype('float')
print(X_normal.shape)
test_label = to_categorical(y,num_classes=num_of_classes)
print(y[:5])
model.fit(X_normal, test_label, epochs=100, batch_size=10)
Потери не уменьшаются при запуске по приведенной выше ссылке.
Epoch 1/100
150/150 [==============================] - 0s 2ms/step - loss: 1.6094
Epoch 2/100
150/150 [==============================] - 0s 2ms/step - loss: 1.6102
Epoch 3/100
150/150 [==============================] - 0s 1ms/step - loss: 1.6091
Epoch 4/100
150/150 [==============================] - 0s 1ms/step - loss: 1.6090
Epoch 5/100
150/150 [==============================] - 0s 1ms/step - loss: 1.6089
Epoch 6/100
150/150 [==============================] - 0s 1ms/step - loss: 1.6089
Epoch 7/100
150/150 [==============================] - 0s 2ms/step - loss: 1.6089
Epoch 8/100
150/150 [==============================] - 0s 2ms/step - loss: 1.6090
Epoch 9/100
150/150 [==============================] - 0s 1ms/step - loss: 1.6091
Epoch 10/100
150/150 [==============================] - 0s 1ms/step - loss: 1.6084
Мне нужен совет о том, что еще мне нужно сделать
Комментарии:
1. Что на самом деле вы хотите сделать? Вы создаете случайные значения поезда, я не вижу, как там должны уменьшаться потери
2. Я создал случайные данные последовательности x = [17,8,9,5] и создал метку на основе X. в этом случае y = [2,3,4,0], просто y = x % 5, и есть правило, и TensorFlow должен найти правило. но потери не уменьшаются. это означает, что моя программа не может его найти
Ответ №1:
После некоторых проб и ошибок я нашел решение.
Входные данные — это просто целое число, и я думаю, что это 1 измерение. это выглядит следующим образом X = [100 , 15, 48, 17, 22]
Я пробую форму тестового ввода следующим образом: X = [[1,0,0] , [0,1,5], [0,4, 8] , [0,1,7] , [0,2,2]]
Потери уменьшаются, как и ожидалось