У меня есть набор данных, который содержит много наблюдений снимков во времени и 1 или 0 в качестве метки для каждого наблюдения. Допустим, каждое наблюдение содержит 3 особенности. Я хочу обучить LSTM, который будет принимать последовательность из n наблюдений и пытаться классифицировать n-е наблюдение как 1 или 0.
Итак, если у нас есть набор данных, который выглядит следующим образом:
# X = [[0, 1, 1], [1, 0, 0], [1, 1, 1], [1, 1, 0]]
# y = [1, 0, 1, 0]
# so X[0] = y[0], X[1] = y[1]
# . and I would like to input X[0] + X[1] to classify X[1] as y[1]
# . How would I need to structure this below?
X = [[0, 1, 1], [1, 0, 0], [1, 1, 1], [1, 1, 0]]
y = [1, 0, 1, 0]
def create_model():
model = Sequential()
# input_shape[0] is equal to 2 timesteps?
# input_shape[1] is equal to the 3 features per row?
model.add(LSTM(20, input_shape=(2, 3)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
m = create_model()
m.fit(X, y)
Так что я хочу, чтобы X[0]
и X[1]
были входными данными для одной итерации обучения и должны быть классифицированы как y[1]
.
Мой вопрос такой. Как мне структурировать модель, чтобы правильно воспринимать эти данные? Я очень смущен input_shape
, features
, input_length
, batches
и т. Д. *