Как определить input_shape в Keras в соответствии с размерами входных данных? - PullRequest
1 голос
/ 02 октября 2019

Я собираюсь создать свою самую первую модель самостоятельно. После выполнения нескольких уроков я обнаружил, что это не так просто, как я ожидал. Тем не мение. На данный момент я задаюсь вопросом о том, как определить размеры input_shape. Я получил несколько жалоб на неправильные входные данные для слоев. Я изменил некоторые числа, и теперь я могу скомпилировать, но я не совсем понял, что я сделал, соответственно, я хотел бы знать, как правильно определить input_shape. Мои входные данные представляют собой массивный массив, который я сгенерировал из кадра данных с 16 переменными, но для начала я использую только один, соответственно два (один столбец времени). Сначала я думал, что размеры будут

X_train1.shape
(1700, 2)

, но это не сработало. Тогда я решил взять число два, которое работало до последнего слоя, который состоял только из одного нейрона. Следовательно, я получил соответствующую ошибку, говорящую мне, что слой ожидал ввода измерения два вместо одного. Поэтому я увеличил количество нейронов до двух, и теперь оно работает. Но, насколько я знаю, выходной слой с двумя нейронами используется только для целей классификации, к которым я не стремлюсь.

TL; DR: Как определить input_shape, особеннокогда изображения не используются в качестве входных данных (что почти всегда имеет место в каждом уроке ..)?

Фактическая сеть соответствует этому уроку :

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_31 (Dense)             (None, 2)                 6         
_________________________________________________________________
dense_32 (Dense)             (None, 1)                 3         
_________________________________________________________________
dense_33 (Dense)             (None, 2)                 4         
_________________________________________________________________
dense_34 (Dense)             (None, 2)                 6         
=================================================================
Total params: 19
Trainable params: 19
Non-trainable params: 0

type(X_train1)
numpy.ndarray

# shape of input
X_train1.shape
(1700, 2)

# Build model
model= Sequential()
model.add(Dense(2, input_shape=(2,), activation= "relu"))
model.add(Dense(1, activation= "relu"))
model.add(Dense(2, activation= "relu"))
model.add(Dense(2))
model.summary() #Print model Summary

# Compile model
model.compile(loss= "mean_squared_error" , optimizer="adam", metrics=["mean_squared_error"])

# Fit Model
model.fit(X_train1, y_train1, epochs=2)

X_train1
array([[-1.73103225e+00,  1.67925250e+00],
       [-1.72899455e+00,  1.70540111e+00],
       [-1.72695684e+00,  1.51829725e+00],
       [-1.72491913e+00,  1.22942045e+00],
(...)
       [ 1.72491913e+00, -1.34502350e+00],
       [ 1.72695684e+00, -1.21882561e+00],
       [ 1.72899455e+00, -5.57245295e-01],
       [ 1.73103225e+00,  3.86950632e-01]])

фрейм данных:

    timestamp   A_phsA
2018-02-05 14:00:00 1.517839e+09    856.436487
2018-02-05 15:00:00 1.517843e+09    859.653339
2018-02-05 16:00:00 1.517846e+09    836.635463
2018-02-05 17:00:00 1.517850e+09    801.097284
2018-02-05 18:00:00 1.517854e+09    794.855960
... ... ...
2018-05-01 08:00:00 1.525162e+09    563.391437
2018-05-01 09:00:00 1.525165e+09    602.101665
2018-05-01 10:00:00 1.525169e+09    648.061104
2018-05-01 11:00:00 1.525172e+09    695.000131
2018-05-01 12:00:00 1.525176e+09    715.601925

X_train1_raw = df_train1_raw.iloc[:, 1:2].values

for train_index, test_index in tscv.split(X_train1_raw):
    X_train1, X_test1 = scaler.fit_transform(X_train1_raw[train_index]), scaler.fit_transform(X_train1_raw[test_index])
    y_train1, y_test1 = scaler.fit_transform(y_train1_raw[train_index]), scaler.fit_transform(y_train1_raw[test_index])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...