Я пытаюсь классифицировать, какие электронные устройства, которые включены, основаны только на сумме всего электричества для моей квартиры.У меня есть установка, в которой я измеряю каждый ватт-час (мигание светодиода), поэтому потребление тока в ваттах имеет точность около 10 секунд, и это здорово.
Я пытаюсь сделать это в тензорном потоке, и на первой итерации я хочу использовать только один вход (общий ватт, например, 200 Вт), и я хочу иметь один выход на каждое электронное устройство.Сейчас я также использую фиктивные данные, чтобы увидеть, как они работают (и потому что было бы очень сложно классифицировать каждое измерение, чтобы иметь возможность обучать алгоритму).
Вот мой код сейчас:
import tensorflow as tf
import numpy as np
LABELS = [
'Nothing',
'Toaster', # Toaster uses 800W
'Lamp'] # Lamp uses just 100W
DATA_LENGTH = 20000
np.random.seed(1) # To be able to reproduce
# Create dummy data (1:s or 0:s)
nothing_data = np.array([1] * DATA_LENGTH)
toaster_data = np.random.randint(2, size=DATA_LENGTH)
lamp_data = np.random.randint(2, size=DATA_LENGTH)
labels = np.array(list(zip(nothing_data, toaster_data, lamp_data)))
x_train = (toaster_data * 800 + lamp_data * 100) / 900 # Normalize
y_train = labels
# Split up train and test data
x_test = x_train[15000:]
y_test = y_train[15000:]
x_train = x_train[:15000]
y_train = y_train[:15000]
# The model
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(1, input_dim=1),
tf.keras.layers.Dense(4, activation=tf.nn.relu),
tf.keras.layers.Dense(4, activation=tf.nn.relu),
tf.keras.layers.Dense(3, activation=tf.nn.sigmoid)
])
model.compile(optimizer='adadelta',
loss='binary_crossentropy',
metrics=['accuracy'])
history = model.fit(x_train, y_train, epochs=10)
val_loss, val_acc = model.evaluate(x_test, y_test)
print(val_loss, val_acc)
Теперь к проблеме, val_acc равен 1,0, 100%.(val_loss = 0.059, val_acc = 1.0) Тем не менее, когда я предсказываю, прогнозы очень сбиты.
# Predict
predict_input = [0.88888, 0.111111, 1.0000, 0.222]
predict_output = model.predict(predict_input)
Сначала должен быть тостер + ничего, но он также имеет 33% лампы.Мне бы понравился бинарный вывод, если бы это было возможно.
Нужно ли вывод "ничего"?