Я пытаюсь обучить нейронку, предугадывать температуру или скорость ветра. Для обучения, даю список температуры за каждый день с 1990 года, но не работает. Нейронка просто случайные значения предугадывает и все. Почему так?
def generate_data(sequence, sequence_length):
X = np.array(sequence).reshape(-1, sequence_length)
y = np.sum(X, axis=1)
return X, y
# Нормализация данных
def normalize_data(X, y):
X = X / 100
y = y / (100 * X.shape[1])
return X, y
# Создание модели LSTM
def create_lstm_model():
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(None, 1)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
return model
def load_dataset():
with open('dataset.pkl', 'rb') as f:
sequence = pickle.load(f)
sequence_length = len(sequence)
return sequence, sequence_length
# Подготовка данных
def create_dataset():
sequence = parser()
sequence_length = len(sequence)
with open('dataset.pkl', 'wb') as f:
pickle.dump(sequence, f)
return sequence, sequence_length
X, y = generate_data(sequence, sequence_length)
X, y = normalize_data(X, y)
X = X.reshape((X.shape[0], X.shape[1], 1))
# Создание и обучение модели
model = create_lstm_model()
model.fit(X, y, epochs=50, verbose=1)
model.save('model')
#model = tf.keras.models.load_model('model')
# Прогнозирование следующего числа в последовательности
def predict_next_number(model, sequence):
sequence = np.array(sequence) / 100
sequence = sequence.reshape((1, len(sequence), 1))
prediction = model.predict(sequence)
return prediction * (100 * len(sequence))
# Пример использования
sequence = [2, 3, 3, 7, 4, 2, 4, 1, 3, 2, 5, 8, 5, 3, 3, 3]
predicted_number = predict_next_number(model, sequence)
print("Последовательность:", sequence)
print("Прогнозируемое следующее число:", predicted_number)