Форма входного слоя

1

Я не могу понять, что мне следует вводить в качестве формы входного слоя в моей модели Keras. Модель готовит 1080 векторов с 12288 образцами.

У меня есть следующие формы ввода:

X_train shape: (12288, 1080)
Y_train shape: (6, 1080)
X_test shape: (12288, 120)
Y_test shape: (6, 120)
layers_dims =[12288,64,64,64,6]

и имеют NN:

def net_model(X_train, Y_train, X_test, Y_test, batch_size=32):
   model.add(keras.layers.InputLayer(input_shape=(layers_dims[0],)))
   for l in range(1,len(layers_dims)-2):
      model.add(keras.layers.Dense(layers_dims[l],activation=activation))
      if dropout:
          model.add(dropout(keep_prob[l]))
    model.add(keras.layers.Dense(layers_dims[-1],activation=keras.activations.softmax))
    model.compile(loss=keras.losses.categorical_crossentropy,optimizer=optimizer, metrics=[keras.metrics.categorical_accuracy])
    model.fit(X_train,Y_train,batch_size=batch_size, epochs=epochs)
    result_train = model.evaluate(X_train,Y_train)
    result_test = model.evaluate(X_test,Y_test)
    return result_train,result_test

result_train,result_test = net_model(X_train,Y_train,X_test,Y_test)

Я получаю эту ошибку:

ValueError: Error when checking input: expected input_10 to have shape (12288,) but got array with shape (1080,)

после того, как я снова посмотрел документацию, я попытался использовать (1080,) как форму ввода, но это тоже не сработало.

ValueError: Error when checking target: expected dense_12 to have shape (6,) but got array with shape (1080,)

Что мне не хватает?

  • 0
    что означает «1080 векторов с 12288 выборками»? Векторы и образцы, похоже, относятся к одному и тому же. Я мог понять «1080 векторов из 12288 функций», но это озадачивает меня.
Теги:
machine-learning
keras
neural-network

1 ответ

2
Лучший ответ

Форма данных обучения и меток должна быть (num_samples,num_features) и (num_samples, num_labels) соответственно. Таким образом, X должен иметь форму (1080, 12288) а не (12288, 1080). Чтобы исправить это, сначала перенесите массивы:

import numpy as np

X_train = np.transpose(X_train)
Y_train = np.transpose(Y_train)
X_test = np.transpose(X_test)
Y_test = np.transpose(Y_test)

И форма ввода входного слоя должна быть (num_features,) (т.е. (12288,)).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню