import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
from sklearn.model_selection import train_test_split
from tensorflow.keras import models, layers, regularizers
유틸 함수 추가하기
import pandas as pd
import numpy as np
def get_dataframe(model, history, loss, metrics, batch_size):
layer_info = []
layer_info.append({"key": "params", "value": np.sum([np.prod(v.shape) for v in model.trainable_variables])})
layer_info.append({"key": "loss", "value": model.loss.__name__ if callable(model.loss) else model.loss})
layer_info.append({"key": "metrics", "value": model.metrics_names[1]})
layer_info.append({"key": "optimizer", "value": model.optimizer.get_config()["name"]})
for i in range(len(model.layers)):
layer = model.layers[i]
config = layer.get_config()
units = config["units"] if "units" in config else None
activation = config["activation"] if "activation" in config else None
regularizers = ("%.5f" % config["kernel_regularizer"]["config"]["l2"] if config["kernel_regularizer"] != None else None) if "kernel_regularizer" in config else None
rate = config["rate"] if "rate" in config else None
pool_size = config["pool_size"] if "pool_size" in config else None
filters = config["filters"] if "filters" in config else None
kernel_size = config["kernel_size"] if "kernel_size" in config else None
layer_info.append({
"key": "layer%d" % i,
"value": type(layer).__name__,
"units": units or rate or filters,
"activation": activation,
"l2": regularizers or kernel_size or pool_size,
})
metric_name = model.metrics_names[1]
layer_info.append({"key": "epochs", "value": history.params['epochs']})
layer_info.append({"key": "batch_size", "value": batch_size})
layer_info.append({"key": "r_loss", "value": round(loss, 4)})
layer_info.append({"key": "r_%s" % metric_name, "value": round(metrics, 4)})
df_layer = pd.DataFrame(layer_info).fillna("")
return df_layer