Настройка разделения поездов / тестов для использования в нейронной сети Conv

#python #conv-neural-network

#python #conv-neural-network

Вопрос:

У меня есть NN, который я хотел бы использовать здесь:

 model = keras.models.Sequential([
    keras.layers.Conv2d(64, 7, activation="relu", padding="same",
                        input_shape = [40, 40, 1]),
    keras.layers.MaxPooling2D(2),
    keras.layers.Conv2D(128, 3, activation="relu", padding="same"),
    keras.layers.Conv2D(128, 3, activation="relu", padding="same"),
    keras.layers.MaxPooling2D(2),
    keras.layers.Conv2D(256, 3, activation="relu", padding="same"),
    keras.layers.Conv2D(256, 3, activation="relu", padding="same"),
    keras.layers.MaxPooling2D(2),
    keras.layers.Flatten(),
    keras.layers.Dense(128, activation="relu"),
    keras.layers.Dropout(0.5)
    keras.layers.Dense(64, activation="relu"),
    keras.layers.Dropout(0.5)
    keras.layers.Dense(8, activation="softmax")
])
 

Но я не уверен, как настроить разделение поездов / тестов для этого.. У меня есть фрейм данных со столбцами:

 df['matrices']
df['class']
 

Существует 25 тыс. экземпляров, поэтому 25 тыс. матриц, а затем 8 «типов» матриц, где элементы матриц создают различные формы при просмотре в виде изображения. Каждая матрица имеет соответствующий тип, индексируемый в столбце ‘class’. Каждый из них представляет собой матричный массив размером 40×40 типа uint8 и не имеет глубины. Все элементы матрицы равны 0, 1 или 2.

Таким образом, форма ввода NN правильно равна 40x40x1, но сейчас я в недоумении, как настроить ее с помощью имеющейся у меня информации.

Ответ №1:

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

Чтобы разделить данные, обучить и протестировать модель, вы могли бы сделать что-то вроде этого:

 from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(df['matrices], df['class'], random_state=42, test_size=.2)
model.fit(x=X_train, y=y_train)
 

random_state делает ваше разделение данных воспроизводимым для будущих экспериментов.
Вы можете рассмотреть возможность масштабирования ваших матриц до значений от 0 до 1.
Возможно, вам потребуется проверить параметры batch_size, epochs и обратных вызовов в методе .fit в соответствии с вашим приложением и спецификациями оборудования.Модель Tensorflow.подходящая документация

Вы можете протестировать модель, используя разделение тестов из ваших данных:

 model.evaluate(x=X_test, y=y_test)
 

Это возвращает значение потерь и значения показателей для модели в тестовом режиме.