@utsiye

Почему рнн нейронка не обучается нормально?

Я пытаюсь обучить нейронку, предугадывать температуру или скорость ветра. Для обучения, даю список температуры за каждый день с 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)
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 1
@rPman
Потому что предугадать температуру и скорость ветра по историческим данным простым способом невозможно.

Что у тебя там в данных мы не знаем, если просто температура за вчерашний день в одном конкретном месте - то никаким алгоритмами ты это предсказание не сделаешь.

Для предсказания погоды берется окно срезов метеосводки (буквально локальная по времени история) со всей планеты или хотя бы ближайшего региона, размер которого зависит от времени (скорость распространения влияния одного фактора в одном месте на другое конечна и ниже скорости звука).

Нейронная сеть нормально бы могла бы работать в каких то пределах (например часы) если бы информация была бы полной (не было бы моментов времени когда данные - неизвестны), так же понадобятся 'сырые' показатели а не усредненные (точные сложнее найти, все что доступно это усредненные за период) и скорее всего чтобы получить нормальный результат, понадобится большая и сложная нейронка и большие вычислительные мощности
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы