Рекуррентные нейронные сети Python - ошибка Reshape () - PullRequest
1 голос
/ 03 ноября 2019

Сценарий ниже создает массивы для прогнозирования данных с использованием повторяющихся нейронных сетей. Если я установлю период равным 4, сценарий будет запущен, но у меня есть 5 значений ввода, как исправить мою форму?

НАБОР ДАННЫХ

3519    2019-10-31 19:00:00 55.6716
3550    2019-10-31 20:00:00 70.6110
3664    2019-10-31 21:00:00 97.0794
3789    2019-10-31 22:00:00 65.6901
3911    2019-10-31 23:00:00 65.3645

СКРИПТ

base = base.dropna()
base = base.iloc[:,2].values

periodos = 5
previsao_futura = 1 # horizonte

X = base[0:(len(base) - (len(base) % periodos))]
X_batches = X.reshape(-1, periodos, 1)

y = base[1:(len(base) - (len(base) % periodos)) + previsao_futura]
y_batches = y.reshape(-1, periodos, 1)

X_teste = base[-(periodos + previsao_futura):]
X_teste = X_teste[:periodos]
X_teste = X_teste.reshape(-1, periodos, 1)
y_teste = base[-(periodos):]
y_teste = y_teste.reshape(-1, periodos, 1)

ВЫХОД

Traceback (most recent call last):
  File "ConsumptionAnalysisNeuralNetwork.py", line 40, in <module>
    y_batches = y.reshape(-1, periodos, 1)
ValueError: cannot reshape array of size 4 into shape (5,1)

1 Ответ

1 голос
/ 03 ноября 2019

Если база имеет размер 5 (например, [0,1,2,3,4]):

>>> base[1:6]
[1,2,3,4]

То есть размер 4, а не 5. Поэтому вам нужно убедиться, что len(base) >= periodos + 1.

илизамените y = base[1:(len(base) - (len(base) % periodos)) + previsao_futura]
на y = base[0:(len(base) - (len(base) % periodos))].

Это зависит от цели previsao_futura.

...