Во-первых, я скажу, что это не способ правильно запустить модель Keras.Там должен быть поезд и тестовый набор.Задание было строго развить интуицию, поэтому тестов не было.
Я запускаю модель через несколько перестановок нейронов, функций активации, пакетов и слоев.Вот код, который я использую.
from sklearn.datasets import make_classification
X1, y1 = make_classification(n_samples=90000, n_features=17, n_informative=6, n_redundant=0, n_repeated=0, n_classes=8, n_clusters_per_class=3, weights=None, flip_y=.3, class_sep=.4, hypercube=False, shift=3, scale=2, shuffle=True, random_state=840780)
class_num = 8
# ----------------------------------------------------------------
import itertools
final_param_list = []
# param_list_gen order is units, activation function, batch size, layers
param_list_gen = [[10, 20, 50], ["sigmoid", "relu", "LeakyReLU"], [8, 16, 32], [1, 2]]
for element in itertools.product(*param_list_gen):
final_param_list.append(element)
# --------------------------------------------------------------------------------------
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten, LeakyReLU
from keras.callbacks import History
import tensorflow as tf
import numpy as np
import pandas as pd
# --------------------------------------------------------------------------------------
# -------- Model 1 - permutations of neurons, activation funtions batch size and layers -------- #
for param in final_param_list:
q2model1 = Sequential()
# hidden layer 1
q2model1.add(Dense(param[0]))
if param[1] != 'LeakyReLU':
q2model1.add(Activation(param[1]))
else:
q2model1.add(LeakyReLU(alpha=0.1))
if param[3] == 2:
# hidden layer 2
q2model1.add(Dense(param[0]))
if param[1] != 'LeakyReLU':
q2model1.add(Activation(param[1]))
else:
q2model1.add(LeakyReLU(alpha=0.1))
# output layer
q2model1.add(Dense(class_num, activation='softmax'))
q2model1.compile(loss='sparse_categorical_crossentropy', optimizer='RMSProp', metrics=['accuracy'])
# Step 3: Fit the model
history = q2model1.fit(X1, y1, epochs=20)
Кажется, работает нормально.Теперь мне было поручено вывести точность каждой эпохи и включить нейроны, функцию активации, пакеты, слои
Теперь это дает мне все точности для каждой эпохи
print(history.history['acc'])
Это дает мне параметры
print(param)
Это дает мне сводку, хотя я не уверен, что это лучший подход
print(q2model1.summary())
Есть ли способ распечатать каждыйэпоха для фрейма данных pandas, чтобы он выглядел следующим образом?
Фаза (индекс списка + 1) |# Нейроны |Функция активации |Размер партии |Слои |Acc epoch1 |Acc epoch2 |......... |Acc epoch20
Вот и все.Если вы видите в самой модели что-то явно неправильное или мне не хватает некоторого кода ключа, пожалуйста, сообщите мне