1471 lines
151 KiB
Plaintext
1471 lines
151 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "a93a850b",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:25:49.669819Z",
|
|
"iopub.status.busy": "2023-06-05T15:25:49.669457Z",
|
|
"iopub.status.idle": "2023-06-05T15:25:59.366649Z",
|
|
"shell.execute_reply": "2023-06-05T15:25:59.365520Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 9.708823,
|
|
"end_time": "2023-06-05T15:25:59.369367",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:49.660544",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"from sklearn.preprocessing import StandardScaler\n",
|
|
"from sklearn.model_selection import train_test_split, ParameterGrid\n",
|
|
"from keras.callbacks import TensorBoard, EarlyStopping, LearningRateScheduler\n",
|
|
"import numpy as np\n",
|
|
"from keras.models import Model\n",
|
|
"from keras.layers import Activation, Dense, LSTM, Input\n",
|
|
"from keras.optimizers import Adam, RMSprop\n",
|
|
"import tensorflow as tf\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from os import path"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "87462bba",
|
|
"metadata": {
|
|
"papermill": {
|
|
"duration": 0.005894,
|
|
"end_time": "2023-06-05T15:25:59.381875",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.375981",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"Load Dataset"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "c55807f6",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:25:59.396342Z",
|
|
"iopub.status.busy": "2023-06-05T15:25:59.395525Z",
|
|
"iopub.status.idle": "2023-06-05T15:25:59.402735Z",
|
|
"shell.execute_reply": "2023-06-05T15:25:59.401729Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 0.01688,
|
|
"end_time": "2023-06-05T15:25:59.405006",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.388126",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def load_dataset() -> tuple([pd.DataFrame, pd.DataFrame, pd.DataFrame]):\n",
|
|
" train = pd.read_csv(\"C:\\\\Projects\\\\kaggle\\\\competitions\\\\identify-age-related-conditions\\\\data\\\\train.csv\")\n",
|
|
" greeks = pd.read_csv(\"C:\\\\Projects\\\\kaggle\\\\competitions\\\\identify-age-related-conditions\\\\data\\\\greeks.csv\")\n",
|
|
" test = pd.read_csv(\"C:\\\\Projects\\\\kaggle\\\\competitions\\\\identify-age-related-conditions\\\\data\\\\test.csv\")\n",
|
|
" train.head()\n",
|
|
" return (train, greeks, test)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b92d395f",
|
|
"metadata": {
|
|
"papermill": {
|
|
"duration": 0.006176,
|
|
"end_time": "2023-06-05T15:25:59.417311",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.411135",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"Preprocess the training data"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "5568b3c0",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:25:59.431633Z",
|
|
"iopub.status.busy": "2023-06-05T15:25:59.431205Z",
|
|
"iopub.status.idle": "2023-06-05T15:25:59.441160Z",
|
|
"shell.execute_reply": "2023-06-05T15:25:59.440006Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 0.0198,
|
|
"end_time": "2023-06-05T15:25:59.443276",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.423476",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def preprocess_data(df: pd.DataFrame) -> tuple([np.ndarray, np.ndarray]):\n",
|
|
" y = df[\"Class\"]\n",
|
|
" x = df.loc[:, df.columns != \"Class\"]\n",
|
|
" \n",
|
|
" #fill NaN values with zeroes\n",
|
|
" x = x.fillna(0) \n",
|
|
" \n",
|
|
" #EJ needs to be categorical\n",
|
|
" x.EJ.replace(['A', 'B'], [0, 1], inplace=True)\n",
|
|
" x.EJ\n",
|
|
" \n",
|
|
" #scale the inputs around 0\n",
|
|
" scaler = StandardScaler()\n",
|
|
" norm_columns = []\n",
|
|
" for i in range(1, 57):\n",
|
|
" if(i == x.columns.get_loc(\"EJ\")):continue\n",
|
|
" norm_columns.append(i)\n",
|
|
" x.iloc[:, norm_columns] = scaler.fit_transform(x.iloc[:, norm_columns].to_numpy())\n",
|
|
" \n",
|
|
" #convert the dataframes to numpy-arrays\n",
|
|
" x = x.iloc[:, 1:-1].to_numpy()\n",
|
|
" y = y.to_numpy()\n",
|
|
" print(f\"x shape: {x.shape} \\ny shape: {y.shape}\")\n",
|
|
" \n",
|
|
" return (x,y)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "31092ba2",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:25:59.459178Z",
|
|
"iopub.status.busy": "2023-06-05T15:25:59.458756Z",
|
|
"iopub.status.idle": "2023-06-05T15:25:59.467043Z",
|
|
"shell.execute_reply": "2023-06-05T15:25:59.465891Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 0.02006,
|
|
"end_time": "2023-06-05T15:25:59.469566",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.449506",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def preprocess_test_data(x: pd.DataFrame) -> tuple([np.ndarray, np.ndarray]):\n",
|
|
" #fill NaN values with zeroes\n",
|
|
" x = x.fillna(0) \n",
|
|
" \n",
|
|
" #EJ needs to be categorical\n",
|
|
" x.EJ.replace(['A', 'B'], [0, 1], inplace=True)\n",
|
|
" x.EJ\n",
|
|
" \n",
|
|
" #scale the inputs around 0\n",
|
|
" scaler = StandardScaler()\n",
|
|
" norm_columns = []\n",
|
|
" for i in range(1, 57):\n",
|
|
" if(i == x.columns.get_loc(\"EJ\")):continue\n",
|
|
" norm_columns.append(i)\n",
|
|
" x.iloc[:, norm_columns] = scaler.fit_transform(x.iloc[:, norm_columns].to_numpy())\n",
|
|
" id = x.iloc[:, 0]\n",
|
|
" \n",
|
|
" #convert the dataframes to numpy-arrays\n",
|
|
" x = x.iloc[:, 1:-1].to_numpy()\n",
|
|
" return x, id"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ceafa051",
|
|
"metadata": {
|
|
"papermill": {
|
|
"duration": 0.005985,
|
|
"end_time": "2023-06-05T15:25:59.481893",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.475908",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"Build the AI-model"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"id": "6d48d007",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:25:59.496462Z",
|
|
"iopub.status.busy": "2023-06-05T15:25:59.496089Z",
|
|
"iopub.status.idle": "2023-06-05T15:25:59.919813Z",
|
|
"shell.execute_reply": "2023-06-05T15:25:59.918540Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 0.434504,
|
|
"end_time": "2023-06-05T15:25:59.922713",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.488209",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def build_model(input_shape:int, output_shape:int, units1: int, units2: int, units3: int, activation1: str, \n",
|
|
" activation2: str, activation3: str, optimizer: tf.keras.optimizers.Optimizer, learning_rate: float) -> Model:\n",
|
|
" input = Input(shape=input_shape)\n",
|
|
" x = Dense(units=units1, activation=activation1)(input)\n",
|
|
" x = Dense(units=units2, activation=activation2)(x)\n",
|
|
" x = Dense(units=units3, activation=activation3)(x)\n",
|
|
" output = Dense(units=output_shape, activation=\"sigmoid\")(x)\n",
|
|
" model = Model(inputs=[input], outputs=[output])\n",
|
|
" \n",
|
|
" model.compile(loss=\"binary_crossentropy\",\n",
|
|
" optimizer=optimizer(learning_rate=learning_rate),\n",
|
|
" metrics=[\"accuracy\"])\n",
|
|
" \n",
|
|
" return model"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "89084abc",
|
|
"metadata": {
|
|
"papermill": {
|
|
"duration": 0.005769,
|
|
"end_time": "2023-06-05T15:25:59.934888",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.929119",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"Fit the model"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"id": "3d7a020a",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:25:59.948925Z",
|
|
"iopub.status.busy": "2023-06-05T15:25:59.948549Z",
|
|
"iopub.status.idle": "2023-06-05T15:25:59.955893Z",
|
|
"shell.execute_reply": "2023-06-05T15:25:59.955011Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 0.016863,
|
|
"end_time": "2023-06-05T15:25:59.957983",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.941120",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"es_callback = EarlyStopping(\n",
|
|
" monitor=\"val_accuracy\",\n",
|
|
" patience=5,\n",
|
|
" verbose=1,\n",
|
|
" restore_best_weights=True,\n",
|
|
" min_delta=0.005\n",
|
|
" )\n",
|
|
" \n",
|
|
"def fit_model(model: Model, x: np.ndarray, y: np.ndarray, epochs: int, split: float) -> Model:\n",
|
|
" #split train and validation\n",
|
|
" x_train, x_val, y_train, y_val = train_test_split(x, y, test_size=split, random_state=42)\n",
|
|
" #fit the model\n",
|
|
" history = model.fit(x_train, y_train, epochs=epochs, validation_data=(x_val,y_val), callbacks=[es_callback])\n",
|
|
" return history "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e9aedd24",
|
|
"metadata": {
|
|
"papermill": {
|
|
"duration": 0.005936,
|
|
"end_time": "2023-06-05T15:25:59.970802",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.964866",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"Plot accuracy and loss function of model"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"id": "43775a9c",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:25:59.984758Z",
|
|
"iopub.status.busy": "2023-06-05T15:25:59.984354Z",
|
|
"iopub.status.idle": "2023-06-05T15:25:59.992500Z",
|
|
"shell.execute_reply": "2023-06-05T15:25:59.991363Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 0.017928,
|
|
"end_time": "2023-06-05T15:25:59.994848",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:25:59.976920",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def plot_acc(history:Model):\n",
|
|
" # summarize history for accuracy\n",
|
|
" plt.plot(history.history['accuracy'])\n",
|
|
" plt.plot(history.history['val_accuracy'])\n",
|
|
" plt.title('model accuracy')\n",
|
|
" plt.ylabel('accuracy')\n",
|
|
" plt.xlabel('epoch')\n",
|
|
" plt.legend(['Train', 'Validation'], loc='upper left')\n",
|
|
" plt.show()\n",
|
|
" \n",
|
|
" # summarize history for loss\n",
|
|
" plt.plot(history.history['loss'])\n",
|
|
" plt.plot(history.history['val_loss'])\n",
|
|
" plt.title('model loss')\n",
|
|
" plt.ylabel('loss')\n",
|
|
" plt.xlabel('epoch')\n",
|
|
" plt.legend(['Train', 'Validation'], loc='upper left')\n",
|
|
" plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "74c4c366",
|
|
"metadata": {
|
|
"papermill": {
|
|
"duration": 0.005861,
|
|
"end_time": "2023-06-05T15:26:00.007025",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:26:00.001164",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"Run Methods"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"id": "f41fe70f",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:26:00.021584Z",
|
|
"iopub.status.busy": "2023-06-05T15:26:00.021163Z",
|
|
"iopub.status.idle": "2023-06-05T15:26:00.122935Z",
|
|
"shell.execute_reply": "2023-06-05T15:26:00.121784Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 0.112029,
|
|
"end_time": "2023-06-05T15:26:00.125333",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:26:00.013304",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"x shape: (617, 55) \n",
|
|
"y shape: (617,)\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 11ms/step - loss: 0.6501 - accuracy: 0.7951 - val_loss: 0.6142 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5911 - accuracy: 0.8276 - val_loss: 0.5696 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5413 - accuracy: 0.8276 - val_loss: 0.5313 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4967 - accuracy: 0.8276 - val_loss: 0.4982 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4596 - accuracy: 0.8276 - val_loss: 0.4733 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.2765 - accuracy: 0.9375Restoring model weights from the end of the best epoch: 1.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4326 - accuracy: 0.8276 - val_loss: 0.4559 - val_accuracy: 0.8145\n",
|
|
"Epoch 6: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.7135 - accuracy: 0.4888 - val_loss: 0.6406 - val_accuracy: 0.7258\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5860 - accuracy: 0.8174 - val_loss: 0.5733 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5041 - accuracy: 0.8296 - val_loss: 0.5418 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4476 - accuracy: 0.8276 - val_loss: 0.5281 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4107 - accuracy: 0.8276 - val_loss: 0.5224 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3818 - accuracy: 0.8296 - val_loss: 0.5140 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.2691 - accuracy: 0.9062Restoring model weights from the end of the best epoch: 2.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3580 - accuracy: 0.8296 - val_loss: 0.5005 - val_accuracy: 0.8145\n",
|
|
"Epoch 7: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6358 - accuracy: 0.7181 - val_loss: 0.5744 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5352 - accuracy: 0.8276 - val_loss: 0.5159 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4739 - accuracy: 0.8276 - val_loss: 0.4797 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4252 - accuracy: 0.8276 - val_loss: 0.4509 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3884 - accuracy: 0.8276 - val_loss: 0.4254 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.3218 - accuracy: 0.8438Restoring model weights from the end of the best epoch: 1.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3576 - accuracy: 0.8337 - val_loss: 0.4033 - val_accuracy: 0.8145\n",
|
|
"Epoch 6: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6378 - accuracy: 0.7627 - val_loss: 0.5983 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5313 - accuracy: 0.8276 - val_loss: 0.5472 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4569 - accuracy: 0.8276 - val_loss: 0.5188 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4030 - accuracy: 0.8276 - val_loss: 0.5039 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3598 - accuracy: 0.8438 - val_loss: 0.4897 - val_accuracy: 0.8387\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3290 - accuracy: 0.8621 - val_loss: 0.4811 - val_accuracy: 0.8548\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3036 - accuracy: 0.8702 - val_loss: 0.4768 - val_accuracy: 0.8548\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2811 - accuracy: 0.8864 - val_loss: 0.4818 - val_accuracy: 0.8548\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2623 - accuracy: 0.8945 - val_loss: 0.4771 - val_accuracy: 0.8387\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2458 - accuracy: 0.8986 - val_loss: 0.4726 - val_accuracy: 0.8387\n",
|
|
"Epoch 11/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.0875 - accuracy: 0.9688Restoring model weights from the end of the best epoch: 6.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2309 - accuracy: 0.9067 - val_loss: 0.4677 - val_accuracy: 0.8387\n",
|
|
"Epoch 11: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6549 - accuracy: 0.7099 - val_loss: 0.6109 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5800 - accuracy: 0.8276 - val_loss: 0.5472 - val_accuracy: 0.8065\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5163 - accuracy: 0.8276 - val_loss: 0.4945 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4539 - accuracy: 0.8276 - val_loss: 0.4573 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4060 - accuracy: 0.8316 - val_loss: 0.4258 - val_accuracy: 0.8226\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3672 - accuracy: 0.8357 - val_loss: 0.4031 - val_accuracy: 0.8306\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3361 - accuracy: 0.8479 - val_loss: 0.3873 - val_accuracy: 0.8226\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3109 - accuracy: 0.8600 - val_loss: 0.3739 - val_accuracy: 0.8226\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2896 - accuracy: 0.8742 - val_loss: 0.3618 - val_accuracy: 0.8306\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2705 - accuracy: 0.8925 - val_loss: 0.3531 - val_accuracy: 0.8387\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2520 - accuracy: 0.8986 - val_loss: 0.3424 - val_accuracy: 0.8548\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2366 - accuracy: 0.9067 - val_loss: 0.3327 - val_accuracy: 0.8468\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2219 - accuracy: 0.9108 - val_loss: 0.3247 - val_accuracy: 0.8629\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2096 - accuracy: 0.9209 - val_loss: 0.3175 - val_accuracy: 0.8548\n",
|
|
"Epoch 15/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1959 - accuracy: 0.9290 - val_loss: 0.3086 - val_accuracy: 0.8548\n",
|
|
"Epoch 16/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1854 - accuracy: 0.9391 - val_loss: 0.3038 - val_accuracy: 0.8629\n",
|
|
"Epoch 17/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1740 - accuracy: 0.9391 - val_loss: 0.2944 - val_accuracy: 0.8629\n",
|
|
"Epoch 18/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1643 - accuracy: 0.9473 - val_loss: 0.2897 - val_accuracy: 0.8710\n",
|
|
"Epoch 19/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1562 - accuracy: 0.9554 - val_loss: 0.2846 - val_accuracy: 0.8548\n",
|
|
"Epoch 20/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1499 - accuracy: 0.9554 - val_loss: 0.2784 - val_accuracy: 0.8548\n",
|
|
"Epoch 21/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1402 - accuracy: 0.9594 - val_loss: 0.2750 - val_accuracy: 0.8629\n",
|
|
"Epoch 22/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1352 - accuracy: 0.9615 - val_loss: 0.2713 - val_accuracy: 0.8710\n",
|
|
"Epoch 23/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.2188 - accuracy: 0.9688Restoring model weights from the end of the best epoch: 18.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1274 - accuracy: 0.9635 - val_loss: 0.2701 - val_accuracy: 0.8710\n",
|
|
"Epoch 23: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6077 - accuracy: 0.7951 - val_loss: 0.5544 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4985 - accuracy: 0.8276 - val_loss: 0.4873 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4288 - accuracy: 0.8276 - val_loss: 0.4542 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3904 - accuracy: 0.8276 - val_loss: 0.4298 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3579 - accuracy: 0.8296 - val_loss: 0.4047 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.3363 - accuracy: 0.8125Restoring model weights from the end of the best epoch: 1.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3291 - accuracy: 0.8316 - val_loss: 0.3807 - val_accuracy: 0.8065\n",
|
|
"Epoch 6: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6675 - accuracy: 0.6795 - val_loss: 0.5936 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5639 - accuracy: 0.8276 - val_loss: 0.5303 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4916 - accuracy: 0.8276 - val_loss: 0.4867 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4298 - accuracy: 0.8276 - val_loss: 0.4580 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3780 - accuracy: 0.8438 - val_loss: 0.4300 - val_accuracy: 0.8226\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3307 - accuracy: 0.8641 - val_loss: 0.4006 - val_accuracy: 0.8226\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2933 - accuracy: 0.8905 - val_loss: 0.3744 - val_accuracy: 0.8387\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2641 - accuracy: 0.9047 - val_loss: 0.3587 - val_accuracy: 0.8629\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2381 - accuracy: 0.9087 - val_loss: 0.3443 - val_accuracy: 0.8790\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2144 - accuracy: 0.9189 - val_loss: 0.3342 - val_accuracy: 0.8871\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1971 - accuracy: 0.9249 - val_loss: 0.3215 - val_accuracy: 0.9113\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1760 - accuracy: 0.9391 - val_loss: 0.3223 - val_accuracy: 0.9032\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1617 - accuracy: 0.9432 - val_loss: 0.3141 - val_accuracy: 0.9032\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1482 - accuracy: 0.9391 - val_loss: 0.3035 - val_accuracy: 0.9032\n",
|
|
"Epoch 15/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1363 - accuracy: 0.9412 - val_loss: 0.3058 - val_accuracy: 0.9032\n",
|
|
"Epoch 16/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.1791 - accuracy: 0.8750Restoring model weights from the end of the best epoch: 11.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1246 - accuracy: 0.9513 - val_loss: 0.3004 - val_accuracy: 0.8952\n",
|
|
"Epoch 16: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6414 - accuracy: 0.7586 - val_loss: 0.5743 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5449 - accuracy: 0.8276 - val_loss: 0.5106 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4669 - accuracy: 0.8276 - val_loss: 0.4599 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4012 - accuracy: 0.8337 - val_loss: 0.4169 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3483 - accuracy: 0.8519 - val_loss: 0.3874 - val_accuracy: 0.8548\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3098 - accuracy: 0.8560 - val_loss: 0.3730 - val_accuracy: 0.8710\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2761 - accuracy: 0.8722 - val_loss: 0.3576 - val_accuracy: 0.8629\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2471 - accuracy: 0.8925 - val_loss: 0.3441 - val_accuracy: 0.8468\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 4ms/step - loss: 0.2217 - accuracy: 0.9128 - val_loss: 0.3298 - val_accuracy: 0.8468\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1987 - accuracy: 0.9270 - val_loss: 0.3239 - val_accuracy: 0.8468\n",
|
|
"Epoch 11/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.2789 - accuracy: 0.9062Restoring model weights from the end of the best epoch: 6.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1786 - accuracy: 0.9371 - val_loss: 0.3165 - val_accuracy: 0.8468\n",
|
|
"Epoch 11: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6411 - accuracy: 0.7383 - val_loss: 0.5765 - val_accuracy: 0.8065\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5707 - accuracy: 0.8215 - val_loss: 0.5237 - val_accuracy: 0.8226\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5162 - accuracy: 0.8357 - val_loss: 0.4782 - val_accuracy: 0.8387\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4666 - accuracy: 0.8377 - val_loss: 0.4388 - val_accuracy: 0.8306\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4250 - accuracy: 0.8458 - val_loss: 0.4068 - val_accuracy: 0.8387\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3893 - accuracy: 0.8560 - val_loss: 0.3792 - val_accuracy: 0.8468\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3582 - accuracy: 0.8661 - val_loss: 0.3585 - val_accuracy: 0.8387\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3318 - accuracy: 0.8742 - val_loss: 0.3429 - val_accuracy: 0.8387\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3093 - accuracy: 0.8803 - val_loss: 0.3306 - val_accuracy: 0.8548\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2897 - accuracy: 0.8864 - val_loss: 0.3218 - val_accuracy: 0.8468\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2717 - accuracy: 0.8925 - val_loss: 0.3168 - val_accuracy: 0.8548\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2561 - accuracy: 0.9006 - val_loss: 0.3118 - val_accuracy: 0.8468\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2432 - accuracy: 0.9026 - val_loss: 0.3093 - val_accuracy: 0.8629\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2312 - accuracy: 0.9006 - val_loss: 0.3082 - val_accuracy: 0.8629\n",
|
|
"Epoch 15/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2208 - accuracy: 0.9067 - val_loss: 0.3065 - val_accuracy: 0.8710\n",
|
|
"Epoch 16/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2103 - accuracy: 0.9108 - val_loss: 0.3058 - val_accuracy: 0.8548\n",
|
|
"Epoch 17/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2002 - accuracy: 0.9148 - val_loss: 0.3077 - val_accuracy: 0.8548\n",
|
|
"Epoch 18/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1909 - accuracy: 0.9209 - val_loss: 0.3088 - val_accuracy: 0.8548\n",
|
|
"Epoch 19/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1821 - accuracy: 0.9270 - val_loss: 0.3075 - val_accuracy: 0.8548\n",
|
|
"Epoch 20/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.1353 - accuracy: 0.9688Restoring model weights from the end of the best epoch: 15.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1743 - accuracy: 0.9249 - val_loss: 0.3100 - val_accuracy: 0.8548\n",
|
|
"Epoch 20: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 11ms/step - loss: 0.6461 - accuracy: 0.7383 - val_loss: 0.5774 - val_accuracy: 0.8226\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5693 - accuracy: 0.8337 - val_loss: 0.5295 - val_accuracy: 0.8226\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5164 - accuracy: 0.8316 - val_loss: 0.4923 - val_accuracy: 0.8226\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4667 - accuracy: 0.8377 - val_loss: 0.4655 - val_accuracy: 0.8226\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4237 - accuracy: 0.8418 - val_loss: 0.4469 - val_accuracy: 0.8306\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3881 - accuracy: 0.8641 - val_loss: 0.4310 - val_accuracy: 0.8306\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3578 - accuracy: 0.8722 - val_loss: 0.4193 - val_accuracy: 0.8387\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3357 - accuracy: 0.8722 - val_loss: 0.4107 - val_accuracy: 0.8387\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3144 - accuracy: 0.8803 - val_loss: 0.4050 - val_accuracy: 0.8468\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2967 - accuracy: 0.8824 - val_loss: 0.4003 - val_accuracy: 0.8548\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2818 - accuracy: 0.8864 - val_loss: 0.3971 - val_accuracy: 0.8468\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2688 - accuracy: 0.8986 - val_loss: 0.3960 - val_accuracy: 0.8468\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2549 - accuracy: 0.9006 - val_loss: 0.3968 - val_accuracy: 0.8468\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2452 - accuracy: 0.9006 - val_loss: 0.3962 - val_accuracy: 0.8387\n",
|
|
"Epoch 15/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.2313 - accuracy: 0.8750Restoring model weights from the end of the best epoch: 10.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2340 - accuracy: 0.9006 - val_loss: 0.3941 - val_accuracy: 0.8548\n",
|
|
"Epoch 15: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 11ms/step - loss: 0.5686 - accuracy: 0.8276 - val_loss: 0.5566 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5110 - accuracy: 0.8276 - val_loss: 0.5301 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4711 - accuracy: 0.8276 - val_loss: 0.5072 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4366 - accuracy: 0.8276 - val_loss: 0.4858 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4044 - accuracy: 0.8357 - val_loss: 0.4667 - val_accuracy: 0.8387\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3756 - accuracy: 0.8560 - val_loss: 0.4510 - val_accuracy: 0.8387\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3506 - accuracy: 0.8682 - val_loss: 0.4372 - val_accuracy: 0.8548\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3313 - accuracy: 0.8763 - val_loss: 0.4277 - val_accuracy: 0.8468\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3110 - accuracy: 0.8844 - val_loss: 0.4178 - val_accuracy: 0.8468\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2925 - accuracy: 0.8884 - val_loss: 0.4172 - val_accuracy: 0.8468\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2790 - accuracy: 0.8925 - val_loss: 0.4092 - val_accuracy: 0.8548\n",
|
|
"Epoch 12/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.2276 - accuracy: 0.8750Restoring model weights from the end of the best epoch: 7.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2635 - accuracy: 0.9026 - val_loss: 0.4097 - val_accuracy: 0.8548\n",
|
|
"Epoch 12: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6039 - accuracy: 0.7688 - val_loss: 0.5518 - val_accuracy: 0.8226\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4790 - accuracy: 0.8276 - val_loss: 0.4976 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4208 - accuracy: 0.8296 - val_loss: 0.4688 - val_accuracy: 0.8226\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3847 - accuracy: 0.8316 - val_loss: 0.4471 - val_accuracy: 0.8226\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3527 - accuracy: 0.8377 - val_loss: 0.4243 - val_accuracy: 0.8387\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3249 - accuracy: 0.8519 - val_loss: 0.4056 - val_accuracy: 0.8468\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3031 - accuracy: 0.8803 - val_loss: 0.3924 - val_accuracy: 0.8629\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2848 - accuracy: 0.8824 - val_loss: 0.3796 - val_accuracy: 0.8548\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2711 - accuracy: 0.8884 - val_loss: 0.3666 - val_accuracy: 0.8548\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2573 - accuracy: 0.9067 - val_loss: 0.3595 - val_accuracy: 0.8548\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2461 - accuracy: 0.9047 - val_loss: 0.3426 - val_accuracy: 0.8548\n",
|
|
"Epoch 12/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.2242 - accuracy: 0.9062Restoring model weights from the end of the best epoch: 7.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2340 - accuracy: 0.9168 - val_loss: 0.3375 - val_accuracy: 0.8548\n",
|
|
"Epoch 12: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6337 - accuracy: 0.7870 - val_loss: 0.5700 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5528 - accuracy: 0.8276 - val_loss: 0.5184 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4930 - accuracy: 0.8296 - val_loss: 0.4701 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4366 - accuracy: 0.8418 - val_loss: 0.4265 - val_accuracy: 0.8306\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3842 - accuracy: 0.8519 - val_loss: 0.3882 - val_accuracy: 0.8548\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3374 - accuracy: 0.8682 - val_loss: 0.3586 - val_accuracy: 0.8548\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2995 - accuracy: 0.8824 - val_loss: 0.3396 - val_accuracy: 0.8710\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2691 - accuracy: 0.8905 - val_loss: 0.3267 - val_accuracy: 0.8710\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2441 - accuracy: 0.9006 - val_loss: 0.3204 - val_accuracy: 0.8710\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2250 - accuracy: 0.9067 - val_loss: 0.3162 - val_accuracy: 0.8710\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2073 - accuracy: 0.9128 - val_loss: 0.3141 - val_accuracy: 0.8629\n",
|
|
"Epoch 12/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.1920 - accuracy: 0.9062Restoring model weights from the end of the best epoch: 7.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1921 - accuracy: 0.9270 - val_loss: 0.3090 - val_accuracy: 0.8710\n",
|
|
"Epoch 12: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6350 - accuracy: 0.7546 - val_loss: 0.5691 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5269 - accuracy: 0.8316 - val_loss: 0.4862 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4462 - accuracy: 0.8377 - val_loss: 0.4272 - val_accuracy: 0.8387\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3839 - accuracy: 0.8519 - val_loss: 0.3836 - val_accuracy: 0.8629\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3343 - accuracy: 0.8864 - val_loss: 0.3501 - val_accuracy: 0.8468\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2953 - accuracy: 0.8925 - val_loss: 0.3311 - val_accuracy: 0.8468\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2662 - accuracy: 0.9006 - val_loss: 0.3130 - val_accuracy: 0.8790\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2414 - accuracy: 0.9108 - val_loss: 0.3017 - val_accuracy: 0.8871\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2197 - accuracy: 0.9168 - val_loss: 0.2962 - val_accuracy: 0.8871\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2021 - accuracy: 0.9229 - val_loss: 0.2925 - val_accuracy: 0.8952\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1878 - accuracy: 0.9249 - val_loss: 0.2923 - val_accuracy: 0.8952\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1759 - accuracy: 0.9331 - val_loss: 0.2871 - val_accuracy: 0.8952\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1640 - accuracy: 0.9371 - val_loss: 0.2864 - val_accuracy: 0.8952\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1537 - accuracy: 0.9432 - val_loss: 0.2804 - val_accuracy: 0.8871\n",
|
|
"Epoch 15/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.0902 - accuracy: 0.9688Restoring model weights from the end of the best epoch: 10.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1432 - accuracy: 0.9513 - val_loss: 0.2796 - val_accuracy: 0.8871\n",
|
|
"Epoch 15: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 11ms/step - loss: 0.7420 - accuracy: 0.4239 - val_loss: 0.6658 - val_accuracy: 0.6613\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5808 - accuracy: 0.8337 - val_loss: 0.5597 - val_accuracy: 0.8226\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4845 - accuracy: 0.8398 - val_loss: 0.5044 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4183 - accuracy: 0.8357 - val_loss: 0.4768 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3751 - accuracy: 0.8438 - val_loss: 0.4593 - val_accuracy: 0.8306\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3382 - accuracy: 0.8621 - val_loss: 0.4443 - val_accuracy: 0.8468\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3078 - accuracy: 0.8661 - val_loss: 0.4317 - val_accuracy: 0.8629\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2827 - accuracy: 0.8925 - val_loss: 0.4248 - val_accuracy: 0.8629\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2617 - accuracy: 0.9047 - val_loss: 0.4192 - val_accuracy: 0.8548\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2419 - accuracy: 0.9108 - val_loss: 0.4136 - val_accuracy: 0.8629\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2266 - accuracy: 0.9168 - val_loss: 0.4096 - val_accuracy: 0.8629\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2120 - accuracy: 0.9229 - val_loss: 0.4084 - val_accuracy: 0.8790\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1979 - accuracy: 0.9189 - val_loss: 0.4050 - val_accuracy: 0.8790\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1862 - accuracy: 0.9249 - val_loss: 0.4008 - val_accuracy: 0.8790\n",
|
|
"Epoch 15/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1727 - accuracy: 0.9310 - val_loss: 0.3944 - val_accuracy: 0.8790\n",
|
|
"Epoch 16/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1646 - accuracy: 0.9290 - val_loss: 0.3948 - val_accuracy: 0.8790\n",
|
|
"Epoch 17/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.0898 - accuracy: 0.9688Restoring model weights from the end of the best epoch: 12.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1536 - accuracy: 0.9331 - val_loss: 0.3891 - val_accuracy: 0.8710\n",
|
|
"Epoch 17: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 11ms/step - loss: 0.6065 - accuracy: 0.7748 - val_loss: 0.5529 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5224 - accuracy: 0.8276 - val_loss: 0.5069 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4635 - accuracy: 0.8276 - val_loss: 0.4707 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4135 - accuracy: 0.8276 - val_loss: 0.4321 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3698 - accuracy: 0.8418 - val_loss: 0.4005 - val_accuracy: 0.8387\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3294 - accuracy: 0.8580 - val_loss: 0.3650 - val_accuracy: 0.8387\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2962 - accuracy: 0.8884 - val_loss: 0.3406 - val_accuracy: 0.8629\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2661 - accuracy: 0.9006 - val_loss: 0.3247 - val_accuracy: 0.8710\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2432 - accuracy: 0.9168 - val_loss: 0.3163 - val_accuracy: 0.8710\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2253 - accuracy: 0.9209 - val_loss: 0.2886 - val_accuracy: 0.8790\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2055 - accuracy: 0.9290 - val_loss: 0.2811 - val_accuracy: 0.8871\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1915 - accuracy: 0.9351 - val_loss: 0.2798 - val_accuracy: 0.8790\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1781 - accuracy: 0.9371 - val_loss: 0.2713 - val_accuracy: 0.8790\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1644 - accuracy: 0.9473 - val_loss: 0.2648 - val_accuracy: 0.8710\n",
|
|
"Epoch 15/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1524 - accuracy: 0.9493 - val_loss: 0.2594 - val_accuracy: 0.8710\n",
|
|
"Epoch 16/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.0846 - accuracy: 0.9375Restoring model weights from the end of the best epoch: 11.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1413 - accuracy: 0.9493 - val_loss: 0.2592 - val_accuracy: 0.8871\n",
|
|
"Epoch 16: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.7249 - accuracy: 0.2617 - val_loss: 0.6950 - val_accuracy: 0.4677\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6827 - accuracy: 0.5639 - val_loss: 0.6599 - val_accuracy: 0.7339\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6532 - accuracy: 0.7992 - val_loss: 0.6308 - val_accuracy: 0.8306\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6253 - accuracy: 0.8418 - val_loss: 0.6079 - val_accuracy: 0.8226\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6020 - accuracy: 0.8316 - val_loss: 0.5854 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5773 - accuracy: 0.8276 - val_loss: 0.5642 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5534 - accuracy: 0.8276 - val_loss: 0.5439 - val_accuracy: 0.8145\n",
|
|
"Epoch 8/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.6443 - accuracy: 0.7812Restoring model weights from the end of the best epoch: 3.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5291 - accuracy: 0.8276 - val_loss: 0.5263 - val_accuracy: 0.8145\n",
|
|
"Epoch 8: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 11ms/step - loss: 0.6342 - accuracy: 0.8235 - val_loss: 0.6247 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6021 - accuracy: 0.8276 - val_loss: 0.6029 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5727 - accuracy: 0.8276 - val_loss: 0.5820 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5451 - accuracy: 0.8276 - val_loss: 0.5630 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5173 - accuracy: 0.8276 - val_loss: 0.5447 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.4964 - accuracy: 0.8438Restoring model weights from the end of the best epoch: 1.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4908 - accuracy: 0.8276 - val_loss: 0.5279 - val_accuracy: 0.8145\n",
|
|
"Epoch 6: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6996 - accuracy: 0.4341 - val_loss: 0.6669 - val_accuracy: 0.6935\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6479 - accuracy: 0.7647 - val_loss: 0.6182 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6006 - accuracy: 0.8235 - val_loss: 0.5719 - val_accuracy: 0.8306\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5539 - accuracy: 0.8316 - val_loss: 0.5320 - val_accuracy: 0.8226\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5104 - accuracy: 0.8316 - val_loss: 0.4989 - val_accuracy: 0.8226\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4729 - accuracy: 0.8316 - val_loss: 0.4733 - val_accuracy: 0.8226\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 4ms/step - loss: 0.4412 - accuracy: 0.8357 - val_loss: 0.4552 - val_accuracy: 0.8306\n",
|
|
"Epoch 8/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.5031 - accuracy: 0.7188Restoring model weights from the end of the best epoch: 3.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4163 - accuracy: 0.8377 - val_loss: 0.4412 - val_accuracy: 0.8306\n",
|
|
"Epoch 8: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6883 - accuracy: 0.5862 - val_loss: 0.6483 - val_accuracy: 0.8065\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6316 - accuracy: 0.8256 - val_loss: 0.6011 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5910 - accuracy: 0.8276 - val_loss: 0.5680 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5598 - accuracy: 0.8276 - val_loss: 0.5413 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5309 - accuracy: 0.8276 - val_loss: 0.5213 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5050 - accuracy: 0.8276 - val_loss: 0.5050 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.5400 - accuracy: 0.8125Restoring model weights from the end of the best epoch: 2.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4819 - accuracy: 0.8276 - val_loss: 0.4910 - val_accuracy: 0.8145\n",
|
|
"Epoch 7: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6746 - accuracy: 0.6937 - val_loss: 0.6327 - val_accuracy: 0.7984\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6252 - accuracy: 0.8215 - val_loss: 0.5985 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5857 - accuracy: 0.8276 - val_loss: 0.5669 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5484 - accuracy: 0.8276 - val_loss: 0.5400 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5159 - accuracy: 0.8276 - val_loss: 0.5162 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4887 - accuracy: 0.8276 - val_loss: 0.4958 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.3708 - accuracy: 0.8750Restoring model weights from the end of the best epoch: 2.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4630 - accuracy: 0.8276 - val_loss: 0.4805 - val_accuracy: 0.8145\n",
|
|
"Epoch 7: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6507 - accuracy: 0.7262 - val_loss: 0.6096 - val_accuracy: 0.7742\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5956 - accuracy: 0.8195 - val_loss: 0.5682 - val_accuracy: 0.8065\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5520 - accuracy: 0.8276 - val_loss: 0.5342 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5159 - accuracy: 0.8276 - val_loss: 0.5066 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4818 - accuracy: 0.8276 - val_loss: 0.4865 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4554 - accuracy: 0.8276 - val_loss: 0.4706 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4308 - accuracy: 0.8276 - val_loss: 0.4587 - val_accuracy: 0.8145\n",
|
|
"Epoch 8/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.4261 - accuracy: 0.7500Restoring model weights from the end of the best epoch: 3.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4114 - accuracy: 0.8276 - val_loss: 0.4472 - val_accuracy: 0.8145\n",
|
|
"Epoch 8: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 12ms/step - loss: 0.6544 - accuracy: 0.7343 - val_loss: 0.6236 - val_accuracy: 0.7742\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5872 - accuracy: 0.8195 - val_loss: 0.5829 - val_accuracy: 0.8065\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5399 - accuracy: 0.8337 - val_loss: 0.5523 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4999 - accuracy: 0.8296 - val_loss: 0.5274 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4624 - accuracy: 0.8296 - val_loss: 0.5054 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4303 - accuracy: 0.8337 - val_loss: 0.4846 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4009 - accuracy: 0.8337 - val_loss: 0.4644 - val_accuracy: 0.8145\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3761 - accuracy: 0.8377 - val_loss: 0.4436 - val_accuracy: 0.8226\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3531 - accuracy: 0.8418 - val_loss: 0.4292 - val_accuracy: 0.8306\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3350 - accuracy: 0.8560 - val_loss: 0.4087 - val_accuracy: 0.8548\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3170 - accuracy: 0.8641 - val_loss: 0.3964 - val_accuracy: 0.8548\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3027 - accuracy: 0.8763 - val_loss: 0.3821 - val_accuracy: 0.8548\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2901 - accuracy: 0.8884 - val_loss: 0.3719 - val_accuracy: 0.8468\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2780 - accuracy: 0.8884 - val_loss: 0.3595 - val_accuracy: 0.8468\n",
|
|
"Epoch 15/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.3253 - accuracy: 0.8438Restoring model weights from the end of the best epoch: 10.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2669 - accuracy: 0.8905 - val_loss: 0.3515 - val_accuracy: 0.8387\n",
|
|
"Epoch 15: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.7167 - accuracy: 0.4016 - val_loss: 0.6660 - val_accuracy: 0.7419\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6333 - accuracy: 0.8134 - val_loss: 0.6085 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5740 - accuracy: 0.8296 - val_loss: 0.5659 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5268 - accuracy: 0.8276 - val_loss: 0.5311 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4839 - accuracy: 0.8276 - val_loss: 0.5035 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4458 - accuracy: 0.8276 - val_loss: 0.4814 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.4365 - accuracy: 0.8125Restoring model weights from the end of the best epoch: 2.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4144 - accuracy: 0.8296 - val_loss: 0.4625 - val_accuracy: 0.8145\n",
|
|
"Epoch 7: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6406 - accuracy: 0.7748 - val_loss: 0.6278 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5914 - accuracy: 0.8276 - val_loss: 0.5930 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5532 - accuracy: 0.8276 - val_loss: 0.5637 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5181 - accuracy: 0.8296 - val_loss: 0.5366 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4864 - accuracy: 0.8296 - val_loss: 0.5129 - val_accuracy: 0.8226\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4590 - accuracy: 0.8316 - val_loss: 0.4941 - val_accuracy: 0.8226\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4364 - accuracy: 0.8479 - val_loss: 0.4788 - val_accuracy: 0.8145\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4184 - accuracy: 0.8519 - val_loss: 0.4679 - val_accuracy: 0.8145\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4022 - accuracy: 0.8560 - val_loss: 0.4592 - val_accuracy: 0.8226\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3879 - accuracy: 0.8519 - val_loss: 0.4513 - val_accuracy: 0.8387\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3750 - accuracy: 0.8560 - val_loss: 0.4450 - val_accuracy: 0.8226\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3633 - accuracy: 0.8641 - val_loss: 0.4407 - val_accuracy: 0.8306\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3527 - accuracy: 0.8742 - val_loss: 0.4373 - val_accuracy: 0.8387\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3427 - accuracy: 0.8742 - val_loss: 0.4344 - val_accuracy: 0.8387\n",
|
|
"Epoch 15/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.4001 - accuracy: 0.8125Restoring model weights from the end of the best epoch: 10.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3335 - accuracy: 0.8742 - val_loss: 0.4325 - val_accuracy: 0.8387\n",
|
|
"Epoch 15: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 11ms/step - loss: 0.7021 - accuracy: 0.5030 - val_loss: 0.6586 - val_accuracy: 0.7500\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6123 - accuracy: 0.8195 - val_loss: 0.5971 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5558 - accuracy: 0.8276 - val_loss: 0.5588 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5150 - accuracy: 0.8276 - val_loss: 0.5357 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4857 - accuracy: 0.8276 - val_loss: 0.5167 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4630 - accuracy: 0.8276 - val_loss: 0.5047 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.4823 - accuracy: 0.8125Restoring model weights from the end of the best epoch: 2.\n",
|
|
"16/16 [==============================] - 0s 4ms/step - loss: 0.4444 - accuracy: 0.8276 - val_loss: 0.4965 - val_accuracy: 0.8145\n",
|
|
"Epoch 7: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6257 - accuracy: 0.8276 - val_loss: 0.6095 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5894 - accuracy: 0.8276 - val_loss: 0.5793 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5589 - accuracy: 0.8276 - val_loss: 0.5529 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5315 - accuracy: 0.8276 - val_loss: 0.5309 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5081 - accuracy: 0.8276 - val_loss: 0.5100 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.4860 - accuracy: 0.8125Restoring model weights from the end of the best epoch: 1.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4862 - accuracy: 0.8276 - val_loss: 0.4923 - val_accuracy: 0.8145\n",
|
|
"Epoch 6: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.7314 - accuracy: 0.4280 - val_loss: 0.6812 - val_accuracy: 0.5887\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6296 - accuracy: 0.7586 - val_loss: 0.6090 - val_accuracy: 0.7903\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5709 - accuracy: 0.8398 - val_loss: 0.5648 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5313 - accuracy: 0.8377 - val_loss: 0.5325 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4999 - accuracy: 0.8377 - val_loss: 0.5115 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4748 - accuracy: 0.8377 - val_loss: 0.4959 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4524 - accuracy: 0.8377 - val_loss: 0.4852 - val_accuracy: 0.8145\n",
|
|
"Epoch 8/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.3754 - accuracy: 0.8750Restoring model weights from the end of the best epoch: 3.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4337 - accuracy: 0.8398 - val_loss: 0.4751 - val_accuracy: 0.8145\n",
|
|
"Epoch 8: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6437 - accuracy: 0.7911 - val_loss: 0.6425 - val_accuracy: 0.8065\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5960 - accuracy: 0.8276 - val_loss: 0.6170 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5598 - accuracy: 0.8276 - val_loss: 0.5949 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5261 - accuracy: 0.8276 - val_loss: 0.5758 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4953 - accuracy: 0.8276 - val_loss: 0.5590 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4689 - accuracy: 0.8276 - val_loss: 0.5445 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.6274 - accuracy: 0.7500Restoring model weights from the end of the best epoch: 2.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4458 - accuracy: 0.8276 - val_loss: 0.5328 - val_accuracy: 0.8145\n",
|
|
"Epoch 7: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.5711 - accuracy: 0.8215 - val_loss: 0.5378 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5041 - accuracy: 0.8276 - val_loss: 0.5101 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4647 - accuracy: 0.8296 - val_loss: 0.4918 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4302 - accuracy: 0.8316 - val_loss: 0.4775 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3998 - accuracy: 0.8418 - val_loss: 0.4641 - val_accuracy: 0.8065\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3730 - accuracy: 0.8458 - val_loss: 0.4516 - val_accuracy: 0.8226\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3490 - accuracy: 0.8600 - val_loss: 0.4413 - val_accuracy: 0.8387\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3264 - accuracy: 0.8783 - val_loss: 0.4327 - val_accuracy: 0.8306\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3070 - accuracy: 0.8803 - val_loss: 0.4249 - val_accuracy: 0.8306\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2916 - accuracy: 0.8925 - val_loss: 0.4151 - val_accuracy: 0.8548\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2754 - accuracy: 0.9087 - val_loss: 0.4093 - val_accuracy: 0.8387\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2631 - accuracy: 0.9067 - val_loss: 0.4039 - val_accuracy: 0.8387\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2511 - accuracy: 0.9168 - val_loss: 0.3972 - val_accuracy: 0.8306\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2393 - accuracy: 0.9209 - val_loss: 0.3952 - val_accuracy: 0.8306\n",
|
|
"Epoch 15/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.2679 - accuracy: 0.9375Restoring model weights from the end of the best epoch: 10.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2304 - accuracy: 0.9249 - val_loss: 0.3885 - val_accuracy: 0.8306\n",
|
|
"Epoch 15: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.7327 - accuracy: 0.3813 - val_loss: 0.6856 - val_accuracy: 0.6048\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.6392 - accuracy: 0.7099 - val_loss: 0.6180 - val_accuracy: 0.8065\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5745 - accuracy: 0.8235 - val_loss: 0.5673 - val_accuracy: 0.7984\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5219 - accuracy: 0.8256 - val_loss: 0.5291 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4776 - accuracy: 0.8276 - val_loss: 0.5011 - val_accuracy: 0.8145\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4428 - accuracy: 0.8276 - val_loss: 0.4801 - val_accuracy: 0.8145\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4128 - accuracy: 0.8276 - val_loss: 0.4647 - val_accuracy: 0.8145\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3893 - accuracy: 0.8296 - val_loss: 0.4509 - val_accuracy: 0.8226\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3696 - accuracy: 0.8418 - val_loss: 0.4410 - val_accuracy: 0.8226\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3536 - accuracy: 0.8438 - val_loss: 0.4312 - val_accuracy: 0.8226\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3386 - accuracy: 0.8499 - val_loss: 0.4237 - val_accuracy: 0.8306\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3252 - accuracy: 0.8560 - val_loss: 0.4134 - val_accuracy: 0.8306\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3125 - accuracy: 0.8600 - val_loss: 0.4061 - val_accuracy: 0.8548\n",
|
|
"Epoch 14/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2998 - accuracy: 0.8702 - val_loss: 0.3994 - val_accuracy: 0.8548\n",
|
|
"Epoch 15/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2885 - accuracy: 0.8742 - val_loss: 0.3908 - val_accuracy: 0.8629\n",
|
|
"Epoch 16/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2776 - accuracy: 0.8763 - val_loss: 0.3853 - val_accuracy: 0.8629\n",
|
|
"Epoch 17/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2677 - accuracy: 0.8803 - val_loss: 0.3806 - val_accuracy: 0.8629\n",
|
|
"Epoch 18/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2590 - accuracy: 0.8844 - val_loss: 0.3781 - val_accuracy: 0.8710\n",
|
|
"Epoch 19/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2499 - accuracy: 0.8905 - val_loss: 0.3772 - val_accuracy: 0.8710\n",
|
|
"Epoch 20/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2420 - accuracy: 0.8966 - val_loss: 0.3700 - val_accuracy: 0.8871\n",
|
|
"Epoch 21/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2338 - accuracy: 0.8925 - val_loss: 0.3657 - val_accuracy: 0.8871\n",
|
|
"Epoch 22/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2261 - accuracy: 0.8945 - val_loss: 0.3638 - val_accuracy: 0.8871\n",
|
|
"Epoch 23/100\n",
|
|
"16/16 [==============================] - 0s 4ms/step - loss: 0.2185 - accuracy: 0.9006 - val_loss: 0.3632 - val_accuracy: 0.8871\n",
|
|
"Epoch 24/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2112 - accuracy: 0.9026 - val_loss: 0.3578 - val_accuracy: 0.8710\n",
|
|
"Epoch 25/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.1851 - accuracy: 0.9375Restoring model weights from the end of the best epoch: 20.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2041 - accuracy: 0.9067 - val_loss: 0.3569 - val_accuracy: 0.8710\n",
|
|
"Epoch 25: early stopping\n",
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6720 - accuracy: 0.6653 - val_loss: 0.6142 - val_accuracy: 0.7903\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5802 - accuracy: 0.8276 - val_loss: 0.5626 - val_accuracy: 0.8226\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5303 - accuracy: 0.8296 - val_loss: 0.5280 - val_accuracy: 0.8226\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4908 - accuracy: 0.8316 - val_loss: 0.4977 - val_accuracy: 0.8226\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4535 - accuracy: 0.8337 - val_loss: 0.4688 - val_accuracy: 0.8306\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4192 - accuracy: 0.8418 - val_loss: 0.4455 - val_accuracy: 0.8387\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3893 - accuracy: 0.8458 - val_loss: 0.4266 - val_accuracy: 0.8468\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3631 - accuracy: 0.8519 - val_loss: 0.4089 - val_accuracy: 0.8629\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3392 - accuracy: 0.8600 - val_loss: 0.3951 - val_accuracy: 0.8629\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3170 - accuracy: 0.8742 - val_loss: 0.3878 - val_accuracy: 0.8629\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 4ms/step - loss: 0.2958 - accuracy: 0.8824 - val_loss: 0.3804 - val_accuracy: 0.8629\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2756 - accuracy: 0.8905 - val_loss: 0.3815 - val_accuracy: 0.8629\n",
|
|
"Epoch 13/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.2040 - accuracy: 0.9375Restoring model weights from the end of the best epoch: 8.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2603 - accuracy: 0.8925 - val_loss: 0.3772 - val_accuracy: 0.8629\n",
|
|
"Epoch 13: early stopping\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"grid_params = {\"units1\": [8,16], \"units2\": [16,32], \"units3\": [32,64], \"activation1\": [\"relu\"], \"activation2\": [\"relu\"], \n",
|
|
" \"activation3\": [\"relu\"], \"optimizer\": [Adam, RMSprop], \"learning_rate\": [0.001, 0.0005]}\n",
|
|
"\n",
|
|
"(train, greeks, test) = load_dataset()\n",
|
|
"(x_train, y_train) = preprocess_data(train)\n",
|
|
"x_test, id_number = preprocess_test_data(test)\n",
|
|
"input_shape = len(x_train[1])\n",
|
|
"output_shape = 1\n",
|
|
"\n",
|
|
"#GridSearch\n",
|
|
"grid = ParameterGrid(param_grid = grid_params)\n",
|
|
"results = []\n",
|
|
"for idx,params in enumerate(grid):\n",
|
|
" model = build_model(input_shape=input_shape, output_shape=output_shape, **params)\n",
|
|
" history = fit_model(model, x_train, y_train, 100, 0.2)\n",
|
|
" val_loss = history.history['val_loss'][-1] \n",
|
|
" val_acc = history.history['val_accuracy'][-1]\n",
|
|
" results.append([val_loss, val_acc])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "759f9fb3",
|
|
"metadata": {
|
|
"papermill": {
|
|
"duration": 0.006185,
|
|
"end_time": "2023-06-05T15:26:00.138109",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:26:00.131924",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"get best params"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"id": "62c2bfb8",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:26:00.152605Z",
|
|
"iopub.status.busy": "2023-06-05T15:26:00.152197Z",
|
|
"iopub.status.idle": "2023-06-05T15:26:00.159794Z",
|
|
"shell.execute_reply": "2023-06-05T15:26:00.158733Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 0.017578,
|
|
"end_time": "2023-06-05T15:26:00.162055",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:26:00.144477",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"best acc at index 6: 0.8951612710952759\n",
|
|
"best loss at index 15: 0.25923117995262146\n",
|
|
"{'units3': 32, 'units2': 32, 'units1': 16, 'optimizer': <class 'keras.optimizers.legacy.adam.Adam'>, 'learning_rate': 0.001, 'activation3': 'relu', 'activation2': 'relu', 'activation1': 'relu'}\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"val_accuracies = [i[1] for i in results]\n",
|
|
"val_losses= [i[0] for i in results]\n",
|
|
"best_acc = val_accuracies.index(max(val_accuracies))\n",
|
|
"best_loss = val_losses.index(min(val_losses))\n",
|
|
"print(f\"best acc at index {best_acc}: {max(val_accuracies)}\")\n",
|
|
"print(f\"best loss at index {best_loss}: {min(val_losses)}\")\n",
|
|
"print(grid[best_acc])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "798cf6f6",
|
|
"metadata": {
|
|
"papermill": {
|
|
"duration": 0.00626,
|
|
"end_time": "2023-06-05T15:26:00.174963",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:26:00.168703",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"save best model"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"id": "bf73447f",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:26:00.189954Z",
|
|
"iopub.status.busy": "2023-06-05T15:26:00.189581Z",
|
|
"iopub.status.idle": "2023-06-05T15:26:03.662733Z",
|
|
"shell.execute_reply": "2023-06-05T15:26:03.661845Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 3.483411,
|
|
"end_time": "2023-06-05T15:26:03.665104",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:26:00.181693",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Epoch 1/100\n",
|
|
"16/16 [==============================] - 1s 10ms/step - loss: 0.6768 - accuracy: 0.6815 - val_loss: 0.6359 - val_accuracy: 0.8145\n",
|
|
"Epoch 2/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.5701 - accuracy: 0.8276 - val_loss: 0.5900 - val_accuracy: 0.8145\n",
|
|
"Epoch 3/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4954 - accuracy: 0.8276 - val_loss: 0.5519 - val_accuracy: 0.8145\n",
|
|
"Epoch 4/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.4312 - accuracy: 0.8296 - val_loss: 0.5085 - val_accuracy: 0.8145\n",
|
|
"Epoch 5/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3721 - accuracy: 0.8499 - val_loss: 0.4755 - val_accuracy: 0.8387\n",
|
|
"Epoch 6/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.3233 - accuracy: 0.8702 - val_loss: 0.4516 - val_accuracy: 0.8468\n",
|
|
"Epoch 7/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2864 - accuracy: 0.8925 - val_loss: 0.4315 - val_accuracy: 0.8548\n",
|
|
"Epoch 8/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2565 - accuracy: 0.9047 - val_loss: 0.4236 - val_accuracy: 0.8548\n",
|
|
"Epoch 9/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2310 - accuracy: 0.9108 - val_loss: 0.4129 - val_accuracy: 0.8629\n",
|
|
"Epoch 10/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.2107 - accuracy: 0.9229 - val_loss: 0.4088 - val_accuracy: 0.8629\n",
|
|
"Epoch 11/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1904 - accuracy: 0.9351 - val_loss: 0.4018 - val_accuracy: 0.8548\n",
|
|
"Epoch 12/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1739 - accuracy: 0.9432 - val_loss: 0.3975 - val_accuracy: 0.8629\n",
|
|
"Epoch 13/100\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1590 - accuracy: 0.9473 - val_loss: 0.3858 - val_accuracy: 0.8629\n",
|
|
"Epoch 14/100\n",
|
|
" 1/16 [>.............................] - ETA: 0s - loss: 0.0680 - accuracy: 1.0000Restoring model weights from the end of the best epoch: 9.\n",
|
|
"16/16 [==============================] - 0s 3ms/step - loss: 0.1441 - accuracy: 0.9533 - val_loss: 0.3783 - val_accuracy: 0.8629\n",
|
|
"Epoch 14: early stopping\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABjQ0lEQVR4nO3dd1yVdf/H8ddhHTYIyHbgxD1w5CpNs51mpWU5WmZlpd7dpa27vO+ybHk31GzobeXItPFrW+6cuVPcAweKoAKy4Vy/P46iiB5RgQsO7+fjcT2E61znOp9zTHj3nRbDMAxEREREnISL2QWIiIiIlCaFGxEREXEqCjciIiLiVBRuRERExKko3IiIiIhTUbgRERERp6JwIyIiIk5F4UZEREScisKNiIiIOBWFGxGp8Pbu3YvFYmHq1KmX/NyFCxdisVhYuHBhqVwnIhWfwo2IiIg4FYUbERERcSoKNyJyUS+//DIWi4WNGzdy1113ERAQQFBQECNHjiQ/P59t27Zxww034OfnR+3atRk3blyxeyQkJHDfffcRGhqK1WqlUaNGvP3229hstiLXHTp0iL59++Ln50dAQAD9+vXj8OHD563rr7/+4rbbbiMoKAhPT09atWrFV199Varv/fvvv6dDhw54e3vj5+fHddddx/Lly4tcc/ToUYYMGUKNGjWwWq1Ur16dTp068fvvvxdes27dOm655ZbC9x8ZGcnNN9/MgQMHSrVeEQE3swsQkcqjb9++3HfffTzyyCPMmzePcePGkZeXx++//85jjz3G008/zfTp03n22WepV68effr0Aey//Dt27Ehubi7//ve/qV27Nj/88ANPP/00u3btYsKECQBkZWXRo0cPDh06xNixY2nQoAE//vgj/fr1K1bLggULuOGGG2jfvj2TJk0iICCAmTNn0q9fPzIzMxk8ePAVv9/p06dz77330rNnT2bMmEFOTg7jxo2ja9eu/PHHH3Tu3BmAAQMGsHbtWl599VUaNGjAiRMnWLt2LSkpKQBkZGRw3XXXERMTw4cffkhYWBiHDx9mwYIFpKenX3GdInIOQ0TkIv71r38ZgPH2228XOd+yZUsDMObOnVt4Li8vz6hevbrRp0+fwnOjRo0yAGPlypVFnv/oo48aFovF2LZtm2EYhjFx4kQDML777rsi1z388MMGYEyZMqXwXGxsrNGqVSsj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CuXm5rJmzRp69uxZ5HzPnj1ZtmyZSVVVPKmpqQAEBQWZXIn5Hn/8cW6++WZ69OhhdikVwvfff0+bNm246667CA0NpVWrVnz88cdml2Wqzp0788cff7B9+3YANmzYwNKlS7nppptMrqxi2LNnD4cPHy7yc9dqtXLNNdfo5+45UlNTsVgsVa4ltMptnFnakpOTKSgoICwsrMj5sLAwDh8+bFJVFYthGIwcOZLOnTvTtGlTs8sx1cyZM1m7di2rV682u5QKY/fu3UycOJGRI0fy3HPPsWrVKp588kmsVisDBw40uzxTPPvss6SmphIbG4urqysFBQW8+uqr3HPPPWaXViGc/tl6vp+7+/btM6OkCik7O5tRo0bRv39/p95M83wUbkqJxWIp8r1hGMXOVVXDhg1j48aNLF261OxSTLV//36eeuopfvvtNzw9Pc0up8Kw2Wy0adOG1157DYBWrVqxefNmJk6cWGXDzaxZs/jiiy+YPn06TZo0Yf369QwfPpzIyEgGDRpkdnkVhn7uXlheXh533303NpuNCRMmmF1OuVO4uUIhISG4uroWa6VJSkoq9n8VVdETTzzB999/z+LFi4mOjja7HFOtWbOGpKQk4uLiCs8VFBSwePFiPvjgA3JycnB1dTWxQnNERETQuHHjIucaNWrEnDlzTKrIfP/85z8ZNWoUd999NwDNmjVj3759jB07VuEGCA8PB+wtOBEREYXn9XPXLi8vj759+7Jnzx7mz59f5VptQLOlrpiHhwdxcXHMmzevyPl58+bRsWNHk6oyn2EYDBs2jLlz5zJ//nxiYmLMLsl03bt3Z9OmTaxfv77waNOmDffeey/r16+vksEGoFOnTsWWCdi+fTu1atUyqSLzZWZm4uJS9Mezq6trlZoK7khMTAzh4eFFfu7m5uayaNGiKv1zF84Emx07dvD7778THBxsdkmmUMtNKRg5ciQDBgygTZs2dOjQgcmTJ5OQkMDQoUPNLs00jz/+ONOnT+e7777Dz8+vsGUrICAALy8vk6szh5+fX7ExRz4+PgQHB1fpsUgjRoygY8eOvPbaa/Tt25dVq1YxefJkJk+ebHZpprn11lt59dVXqVmzJk2aNGHdunW88847PPDAA2aXVm5OnjzJzp07C7/fs2cP69evJygoiJo1azJ8+HBee+016tevT/369Xnttdfw9vamf//+JlZd9hx9LpGRkdx5552sXbuWH374gYKCgsKfvUFBQXh4eJhVdvkzd7KW8/jwww+NWrVqGR4eHkbr1q2r/JRn4LzHlClTzC6tQtFUcLv/+7//M5o2bWpYrVYjNjbWmDx5stklmSotLc146qmnjJo1axqenp5GnTp1jOeff97Iyckxu7Rys2DBgvP+DBk0aJBhGPbp4P/617+M8PBww2q1GldffbWxadMmc4suB44+lz179lzwZ++CBQvMLr1cWQzDMMozTImIiIiUJY25EREREaeicCMiIiJOReFGREREnIrCjYiIiDgVhRsRERFxKgo3IiIi4lQUbkRERMSpKNyISJW3cOFCLBYLJ06cMLsUESkFCjciIiLiVBRuRERExKko3IiI6QzDYNy4cdSpUwcvLy9atGjB119/DZzpMvrxxx9p0aIFnp6etG/fnk2bNhW5x5w5c2jSpAlWq5XatWvz9ttvF3k8JyeHZ555hho1amC1Wqlfvz6ffvppkWvWrFlDmzZt8Pb2pmPHjsV2KxeRykHhRkRM98ILLzBlyhQmTpzI5s2bGTFiBPfddx+LFi0qvOaf//wnb731FqtXryY0NJTbbruNvLw8wB5K+vbty913382mTZt4+eWXefHFF5k6dWrh8wcOHMjMmTN57733iI+PZ9KkSfj6+hap4/nnn+ftt9/mr7/+ws3NrUrtwi3iTLRxpoiYKiMjg5CQEObPn0+HDh0Kzz/00ENkZmYyZMgQunXrxsyZM+nXrx8Ax44dIzo6mqlTp9K3b1/uvfdejh49ym+//Vb4/GeeeYYff/yRzZs3s337dho2bMi8efPo0aNHsRoWLlxIt27d+P333+nevTsAP/30EzfffDNZWVl4enqW8acgIqVJLTciYqotW7aQnZ3Nddddh6+vb+Exbdo0du3aVXjd2cEnKCiIhg0bEh8fD0B8fDydOnUqct9OnTqxY8cOCgoKWL9+Pa6urlxzzTUOa2nevHnh1xEREQAkJSVd8XsUkfLlZnYBIlK12Ww2AH788UeioqKKPGa1WosEnHNZLBbAPmbn9Nennd0o7eXlVaJa3N3di937dH0iUnmo5UZETNW4cWOsVisJCQnUq1evyFGjRo3C61asWFH49fHjx9m+fTuxsbGF91i6dGmR+y5btowGDRrg6upKs2bNsNlsRcbwiIjzUsuNiJjKz8+Pp59+mhEjRmCz2ejcuTNpaWksW7YMX19fatWqBcCYMWMIDg4mLCyM559/npCQEHr37g3AP/7xD9q2bcu///1v+vXrx/Lly/nggw+YMGECALVr12bQoEE88MADvPfee7Ro0YJ9+/aRlJRE3759zXrrIlJGFG5ExHT//ve/CQ0NZezYsezevZvAwEBat27Nc889V9gt9Prrr/PUU0+xY8cOWrRowffff4+HhwcArVu35quvvuKll17i3//+NxEREYwZM4bBgwcXvsbEiRN57rnneOyxx0hJSaFmzZo899xzZrxdESljmi0lIhXa6ZlMx48fJzAw0OxyRKQS0JgbERERcSoKNyIiIuJU1C0lIiIiTkUtNyIiIuJUFG5ERETEqSjciIiIiFNRuBERERGnonAjIiIiTkXhRkRERJyKwo2IiIg4FYUbERERcSoKNyIiIuJU/h/wfsR+E4PhpgAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"model = build_model(input_shape=input_shape, output_shape=output_shape, **grid[best_acc])\n",
|
|
"history = fit_model(model, x_train, y_train, 100, 0.2)\n",
|
|
"plot_acc(history)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ffb846bf",
|
|
"metadata": {
|
|
"papermill": {
|
|
"duration": 0.013105,
|
|
"end_time": "2023-06-05T15:26:03.692004",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:26:03.678899",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"Submission"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "4878fbac",
|
|
"metadata": {
|
|
"execution": {
|
|
"iopub.execute_input": "2023-06-05T15:26:03.721837Z",
|
|
"iopub.status.busy": "2023-06-05T15:26:03.720708Z",
|
|
"iopub.status.idle": "2023-06-05T15:26:03.893049Z",
|
|
"shell.execute_reply": "2023-06-05T15:26:03.891892Z"
|
|
},
|
|
"papermill": {
|
|
"duration": 0.19032,
|
|
"end_time": "2023-06-05T15:26:03.895803",
|
|
"exception": false,
|
|
"start_time": "2023-06-05T15:26:03.705483",
|
|
"status": "completed"
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"submission = pd.DataFrame()\n",
|
|
"prediction = model.predict(x_test)\n",
|
|
"submission.insert(0, \"Id\", id_number, False)\n",
|
|
"submission.insert(1, \"class_0\", [round(1-i[0],2) for i in prediction], True)\n",
|
|
"submission.insert(2, \"class_1\", [round(i[0],2) for i in prediction], True)\n",
|
|
"submission.to_csv(\"/kaggle/working/submission.csv\",index = False)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.9"
|
|
},
|
|
"papermill": {
|
|
"default_parameters": {},
|
|
"duration": 28.693825,
|
|
"end_time": "2023-06-05T15:26:06.679501",
|
|
"environment_variables": {},
|
|
"exception": null,
|
|
"input_path": "__notebook__.ipynb",
|
|
"output_path": "__notebook__.ipynb",
|
|
"parameters": {},
|
|
"start_time": "2023-06-05T15:25:37.985676",
|
|
"version": "2.4.0"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|