자연 그래프를 사용한, 문서 분류를 위한 그래프 정규화

TensorFlow.org에서 보기 Run in Google Colab View source on GitHub

개요

그래프 정규화는 Neural Graph Learning의 더 넓은 패러다임에서 사용되는 특정 기술입니다(Bui et al., 2018). 핵심 아이디어는 레이블이 지정된 데이터와 레이블이 없는 데이터를 모두 활용하여 그래프 정규화 목표를 갖고 신경망 모델을 훈련하는 것입니다.

이 튜토리얼에서는 그래프 정규화를 사용하여 자연(유기적) 그래프를 형성하는 문서를 분류하는 방법을 살펴봅니다.

Neural Structured Learning(NSL) 프레임워크를 사용하여 그래프 정규화 모델을 생성하는 일반적인 방법은 다음과 같습니다.

  1. 입력 그래프 및 샘플 특성에서 훈련 데이터를 생성합니다. 그래프의 노드는 샘플에 해당하고, 그래프의 간선은 샘플 쌍 간의 유사성에 해당합니다. 결과 훈련 데이터에는 원래 노드 특성 외에도 이웃 특성이 포함됩니다.
  2. Keras 순차, 함수형 또는 서브 클래스 API를 사용하여 신경망을 기본 모델로 만듭니다.
  3. NSL 프레임워크에서 제공하는 GraphRegularization 래퍼 클래스로 기본 모델을 래핑하여 새 그래프 Keras 모델을 만듭니다. 이 새로운 모델은 훈련 목표에서 그래프 정규화 손실을 정규화 항으로 포함합니다.
  4. 그래프 Keras 모델을 훈련하고 평가합니다.

설정

Neural Structured Learning 패키지를 설치합니다.

pip install --quiet neural-structured-learning

종속성 및 가져오기

import neural_structured_learning as nsl

import tensorflow as tf

# Resets notebook state
tf.keras.backend.clear_session()

print("Version: ", tf.__version__)
print("Eager mode: ", tf.executing_eagerly())
print(
    "GPU is",
    "available" if tf.config.list_physical_devices("GPU") else "NOT AVAILABLE")
Version:  2.4.0
Eager mode:  True
GPU is available

Cora 데이터세트

Cora 데이터세트는 노드가 머신러닝 논문을 나타내고 간선이 논문 쌍 간의 인용을 나타내는 인용 그래프입니다. 관련된 작업은 각 논문을 7가지 범주 중 하나로 분류하는 것을 목표로 하는 문서 분류입니다. 즉, 7개의 클래스가 있는 다중 클래스 분류 문제입니다.

그래프

원래 그래프에는 방향이 있습니다. 그러나 이 예에서는 이 그래프의 방향 없는 버전을 고려합니다. 따라서 A 논문이 B 논문을 인용하면 B 논문도 A를 인용한 것으로 간주합니다. 이것이 반드시 사실은 아니지만, 이 예에서는 인용을 유사성에 대한 프록시로 간주하며, 일반적으로 교환 속성입니다.

특성

입력의 각 논문에는 효과적으로 두 가지 특성이 포함되어 있습니다.

  1. Words: 종이에 있는 텍스트를 표현한 밀집 멀티-핫 단어 주머니(bag-of-words)입니다. Cora 데이터세트의 어휘에는 1433개의 고유한 단어가 포함되어 있습니다. 따라서 이 특성의 길이는 1433이고, 위치 'i'의 값은 주어진 논문에서 해당 어휘의 단어 'i'가 존재하는지 여부를 나타내는 0/1입니다.

  2. Label: 논문의 클래스 ID(카테고리)를 나타내는 단일 정수입니다.

Cora 데이터세트 다운로드하기

wget --quiet -P /tmp https://linqs-data.soe.ucsc.edu/public/lbc/cora.tgz
tar -C /tmp -xvzf /tmp/cora.tgz
cora/
cora/README
cora/cora.cites
cora/cora.content

Cora 데이터를 NSL 형식으로 변환하기

Cora 데이터세트를 전처리하고 Neural Structured Learning에 필요한 형식으로 변환하기 위해 NSL github 리포지토리에 포함된 'preprocess_cora_dataset.py' 스크립트를 실행합니다. 이 스크립트는 다음을 수행합니다.

  1. 원래 노드 특성과 그래프를 사용하여 이웃 특성을 생성합니다.
  2. tf.train.Example 인스턴스를 포함하는 훈련 및 테스트 데이터 분할을 생성합니다.
  3. 결과 훈련 및 테스트 데이터를 TFRecord 형식으로 유지합니다.
!wget https://raw.githubusercontent.com/tensorflow/neural-structured-learning/master/neural_structured_learning/examples/preprocess/cora/preprocess_cora_dataset.py

!python preprocess_cora_dataset.py \
--input_cora_content=/tmp/cora/cora.content \
--input_cora_graph=/tmp/cora/cora.cites \
--max_nbrs=5 \
--output_train_data=/tmp/cora/train_merged_examples.tfr \
--output_test_data=/tmp/cora/test_examples.tfr
--2021-01-15 02:26:25--  https://raw.githubusercontent.com/tensorflow/neural-structured-learning/master/neural_structured_learning/examples/preprocess/cora/preprocess_cora_dataset.py
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.192.133, 151.101.128.133, 151.101.64.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.192.133|:443... connected.
HTTP request sent, awaiting response...
200 OK
Length: 11640 (11K) [text/plain]
Saving to: ‘preprocess_cora_dataset.py’


          preproces   0%[                    ]       0  --.-KB/s               
preprocess_cora_dat 100%[===================>]  11.37K  --.-KB/s    in 0.001s  

2021-01-15 02:26:26 (20.7 MB/s) - ‘preprocess_cora_dataset.py’ saved [11640/11640]
2021-01-15 02:26:26.653369: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0
Reading graph file: /tmp/cora/cora.cites...
Done reading 5429 edges from: /tmp/cora/cora.cites (0.01 seconds).
Making all edges bi-directional...
Done (0.01 seconds). Total graph nodes: 2708
Joining seed and neighbor tf.train.Examples with graph edges...
Done creating and writing 2155 merged tf.train.Examples (1.51 seconds).
Out-degree histogram: [(1, 386), (2, 468), (3, 452), (4, 309), (5, 540)]
Output training data written to TFRecord file: /tmp/cora/train_merged_examples.tfr.
Output test data written to TFRecord file: /tmp/cora/test_examples.tfr.
Total running time: 0.05 minutes.

전역 변수

훈련 및 테스트 데이터에 대한 파일 경로는 위의 'preprocess_cora_dataset.py' 스크립트를 호출하는 데 사용된 명령 줄 플래그 값을 기반으로 합니다.

### Experiment dataset
TRAIN_DATA_PATH = '/tmp/cora/train_merged_examples.tfr'
TEST_DATA_PATH = '/tmp/cora/test_examples.tfr'

### Constants used to identify neighbor features in the input.
NBR_FEATURE_PREFIX = 'NL_nbr_'
NBR_WEIGHT_SUFFIX = '_weight'

하이퍼 매개변수

HParams의 인스턴스를 사용하여 훈련 및 평가에 사용되는 다양한 하이퍼 매개변수 및 상수를 포함합니다. 아래에서 각각에 대해 간략하게 설명합니다.

  • num_classes: 총 7개의 클래스가 있습니다.

  • max_seq_length: 어휘의 크기이며, 입력의 모든 인스턴스는 밀집 멀티-핫, 단어 주머니(bag-of-words)의 표현을 갖습니다. 즉, 단어의 값이 1이면 해당 단어가 입력에 있음을 나타내고, 값이 0이면 그렇지 않음을 나타냅니다.

  • distance_type: 샘플을 이웃으로 정규화하는 데 사용되는 거리 메트릭입니다.

  • graph_regularization_multiplier: 전체 손실 함수에서 그래프 정규화 항의 상대적 가중치를 제어합니다.

  • num_neighbors: 그래프 정규화에 사용되는 이웃의 수입니다. 이 값은 preprocess_cora_dataset.py를 실행할 때 위에 사용된 max_nbrs 명령 줄 인수보다 작거나 같아야 합니다.

  • num_fc_units: 신경망에서 완전 연결된 레이어의 수입니다.

  • train_epochs: 훈련 epoch의 수입니다.

  • batch_size: 훈련 및 평가에 사용되는 배치 크기입니다.

  • dropout_rate: 각 완전 연결 레이어의 드롭아웃 비율을 제어합니다.

  • eval_steps: 평가가 완료된 것으로 간주하기 전에 처리할 배치의 수입니다. None으로 설정하면, 테스트세트의 모든 인스턴스가 평가됩니다.

class HParams(object):
  """Hyperparameters used for training."""
  def __init__(self):
    ### dataset parameters
    self.num_classes = 7
    self.max_seq_length = 1433
    ### neural graph learning parameters
    self.distance_type = nsl.configs.DistanceType.L2
    self.graph_regularization_multiplier = 0.1
    self.num_neighbors = 1
    ### model architecture
    self.num_fc_units = [50, 50]
    ### training parameters
    self.train_epochs = 100
    self.batch_size = 128
    self.dropout_rate = 0.5
    ### eval parameters
    self.eval_steps = None  # All instances in the test set are evaluated.

HPARAMS = HParams()

훈련 및 테스트 데이터 로드하기

이 노트북의 앞부분에서 설명한 것처럼 입력 훈련 및 테스트 데이터는 'preprocess_cora_dataset.py'에 의해 생성되었습니다. 데이터를 두 개의 tf.data.Dataset 객체로 로드합니다. 하나는 훈련용이고 다른 하나는 테스트용입니다.

모델의 입력 레이어에서 각 샘플의 'words' 및 'label' 특성뿐만 아니라 hparams.num_neighbors 값을 기반으로 해당 이웃 특성도 추출합니다. 이웃이 hparams.num_neighbors보다 적은 인스턴스에는 존재하지 않는 이웃 특성에 대해 더미 값이 할당됩니다.

def make_dataset(file_path, training=False):
  """Creates a `tf.data.TFRecordDataset`.

  Args:
    file_path: Name of the file in the `.tfrecord` format containing
      `tf.train.Example` objects.
    training: Boolean indicating if we are in training mode.

  Returns:
    An instance of `tf.data.TFRecordDataset` containing the `tf.train.Example`
    objects.
  """

  def parse_example(example_proto):
    """Extracts relevant fields from the `example_proto`.

    Args:
      example_proto: An instance of `tf.train.Example`.

    Returns:
      A pair whose first value is a dictionary containing relevant features
      and whose second value contains the ground truth label.
    """
    # The 'words' feature is a multi-hot, bag-of-words representation of the
    # original raw text. A default value is required for examples that don't
    # have the feature.
    feature_spec = {
        'words':
            tf.io.FixedLenFeature([HPARAMS.max_seq_length],
                                  tf.int64,
                                  default_value=tf.constant(
                                      0,
                                      dtype=tf.int64,
                                      shape=[HPARAMS.max_seq_length])),
        'label':
            tf.io.FixedLenFeature((), tf.int64, default_value=-1),
    }
    # We also extract corresponding neighbor features in a similar manner to
    # the features above during training.
    if training:
      for i in range(HPARAMS.num_neighbors):
        nbr_feature_key = '{}{}_{}'.format(NBR_FEATURE_PREFIX, i, 'words')
        nbr_weight_key = '{}{}{}'.format(NBR_FEATURE_PREFIX, i,
                                         NBR_WEIGHT_SUFFIX)
        feature_spec[nbr_feature_key] = tf.io.FixedLenFeature(
            [HPARAMS.max_seq_length],
            tf.int64,
            default_value=tf.constant(
                0, dtype=tf.int64, shape=[HPARAMS.max_seq_length]))

        # We assign a default value of 0.0 for the neighbor weight so that
        # graph regularization is done on samples based on their exact number
        # of neighbors. In other words, non-existent neighbors are discounted.
        feature_spec[nbr_weight_key] = tf.io.FixedLenFeature(
            [1], tf.float32, default_value=tf.constant([0.0]))

    features = tf.io.parse_single_example(example_proto, feature_spec)

    label = features.pop('label')
    return features, label

  dataset = tf.data.TFRecordDataset([file_path])
  if training:
    dataset = dataset.shuffle(10000)
  dataset = dataset.map(parse_example)
  dataset = dataset.batch(HPARAMS.batch_size)
  return dataset


train_dataset = make_dataset(TRAIN_DATA_PATH, training=True)
test_dataset = make_dataset(TEST_DATA_PATH)

내용을 보기 위해 훈련 데이터세트를 살펴보겠습니다.

for feature_batch, label_batch in train_dataset.take(1):
  print('Feature list:', list(feature_batch.keys()))
  print('Batch of inputs:', feature_batch['words'])
  nbr_feature_key = '{}{}_{}'.format(NBR_FEATURE_PREFIX, 0, 'words')
  nbr_weight_key = '{}{}{}'.format(NBR_FEATURE_PREFIX, 0, NBR_WEIGHT_SUFFIX)
  print('Batch of neighbor inputs:', feature_batch[nbr_feature_key])
  print('Batch of neighbor weights:',
        tf.reshape(feature_batch[nbr_weight_key], [-1]))
  print('Batch of labels:', label_batch)
Feature list: ['NL_nbr_0_weight', 'NL_nbr_0_words', 'words']
Batch of inputs: tf.Tensor(
[[0 0 1 ... 0 0 0]
 [1 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]], shape=(128, 1433), dtype=int64)
Batch of neighbor inputs: tf.Tensor(
[[0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]], shape=(128, 1433), dtype=int64)
Batch of neighbor weights: tf.Tensor(
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.

 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
 1. 1. 1. 1. 1. 1. 1. 1.], shape=(128,), dtype=float32)
Batch of labels: tf.Tensor(
[2 2 2 0 0 6 6 1 2 6 2 0 5 6 1 2 5 3 3 0 3 3 2 6 6 2 1 2 1 3 6 4 6 3 0 2 2
 1 3 3 6 6 3 2 2 1 2 2 6 6 5 0 6 2 0 2 6 6 2 2 2 5 2 3 3 0 3 3 6 3 6 3 1 2
 2 3 3 3 2 3 0 1 2 2 0 2 3 3 2 6 3 2 3 1 2 4 2 1 2 2 3 6 1 2 3 2 5 2 2 3 2
 2 1 1 3 2 1 4 0 2 3 5 2 1 2 2 0 1], shape=(128,), dtype=int64)

내용을 보기 위해 테스트 데이터세트를 살펴보겠습니다.

for feature_batch, label_batch in test_dataset.take(1):
  print('Feature list:', list(feature_batch.keys()))
  print('Batch of inputs:', feature_batch['words'])
  print('Batch of labels:', label_batch)
Feature list: ['words']
Batch of inputs: tf.Tensor(
[[0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]], shape=(128, 1433), dtype=int64)
Batch of labels: tf.Tensor(
[5 2 2 2 1 2 6 3 2 3 6 1 3 6 4 4 2 3 3 0 2 0 5 2 1 0 6 3 6 4 2 2 3 0 4 2 2
 2 2 3 2 2 2 0 2 2 2 2 4 2 3 4 0 2 6 2 1 4 2 0 0 1 4 2 6 0 5 2 2 3 2 5 2 5
 2 3 2 2 2 2 2 6 6 3 2 4 2 6 3 2 2 6 2 4 2 2 1 3 4 6 0 0 2 4 2 1 3 6 6 2 6
 6 6 1 4 6 4 3 6 6 0 0 2 6 2 4 0 0], shape=(128,), dtype=int64)

모델 정의

그래프 정규화를 사용하는 방법을 보여주기 위해 먼저 이 문제에 대한 기본 모델을 빌드합니다. 2개의 숨겨진 레이어와 그 사이에 드롭아웃이 있는 간단한 피드 포워드 신경망을 사용합니다. tf.Keras 프레임워크에서 지원하는 모든 모델 유형(순차, 함수형 및 서브 클래스)을 사용하여 기본 모델을 생성하는 방법을 설명합니다.

순차 기본 모델

def make_mlp_sequential_model(hparams):
  """Creates a sequential multi-layer perceptron model."""
  model = tf.keras.Sequential()
  model.add(
      tf.keras.layers.InputLayer(
          input_shape=(hparams.max_seq_length,), name='words'))
  # Input is already one-hot encoded in the integer format. We cast it to
  # floating point format here.
  model.add(
      tf.keras.layers.Lambda(lambda x: tf.keras.backend.cast(x, tf.float32)))
  for num_units in hparams.num_fc_units:
    model.add(tf.keras.layers.Dense(num_units, activation='relu'))
    # For sequential models, by default, Keras ensures that the 'dropout' layer
    # is invoked only during training.
    model.add(tf.keras.layers.Dropout(hparams.dropout_rate))
  model.add(tf.keras.layers.Dense(hparams.num_classes, activation='softmax'))
  return model

함수형 기본 모델

def make_mlp_functional_model(hparams):
  """Creates a functional API-based multi-layer perceptron model."""
  inputs = tf.keras.Input(
      shape=(hparams.max_seq_length,), dtype='int64', name='words')

  # Input is already one-hot encoded in the integer format. We cast it to
  # floating point format here.
  cur_layer = tf.keras.layers.Lambda(
      lambda x: tf.keras.backend.cast(x, tf.float32))(
          inputs)

  for num_units in hparams.num_fc_units:
    cur_layer = tf.keras.layers.Dense(num_units, activation='relu')(cur_layer)
    # For functional models, by default, Keras ensures that the 'dropout' layer
    # is invoked only during training.
    cur_layer = tf.keras.layers.Dropout(hparams.dropout_rate)(cur_layer)

  outputs = tf.keras.layers.Dense(
      hparams.num_classes, activation='softmax')(
          cur_layer)

  model = tf.keras.Model(inputs, outputs=outputs)
  return model

서브 클래스 기본 모델

def make_mlp_subclass_model(hparams):
  """Creates a multi-layer perceptron subclass model in Keras."""

  class MLP(tf.keras.Model):
    """Subclass model defining a multi-layer perceptron."""

    def __init__(self):
      super(MLP, self).__init__()
      # Input is already one-hot encoded in the integer format. We create a
      # layer to cast it to floating point format here.
      self.cast_to_float_layer = tf.keras.layers.Lambda(
          lambda x: tf.keras.backend.cast(x, tf.float32))
      self.dense_layers = [
          tf.keras.layers.Dense(num_units, activation='relu')
          for num_units in hparams.num_fc_units
      ]
      self.dropout_layer = tf.keras.layers.Dropout(hparams.dropout_rate)
      self.output_layer = tf.keras.layers.Dense(
          hparams.num_classes, activation='softmax')

    def call(self, inputs, training=False):
      cur_layer = self.cast_to_float_layer(inputs['words'])
      for dense_layer in self.dense_layers:
        cur_layer = dense_layer(cur_layer)
        cur_layer = self.dropout_layer(cur_layer, training=training)

      outputs = self.output_layer(cur_layer)

      return outputs

  return MLP()

기본 모델 생성하기

# Create a base MLP model using the functional API.
# Alternatively, you can also create a sequential or subclass base model using
# the make_mlp_sequential_model() or make_mlp_subclass_model() functions
# respectively, defined above. Note that if a subclass model is used, its
# summary cannot be generated until it is built.
base_model_tag, base_model = 'FUNCTIONAL', make_mlp_functional_model(HPARAMS)
base_model.summary()
Model: "model"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
words (InputLayer)           [(None, 1433)]            0         
_________________________________________________________________
lambda (Lambda)              (None, 1433)              0         
_________________________________________________________________
dense (Dense)                (None, 50)                71700     
_________________________________________________________________
dropout (Dropout)            (None, 50)                0         
_________________________________________________________________
dense_1 (Dense)              (None, 50)                2550      
_________________________________________________________________
dropout_1 (Dropout)          (None, 50)                0         
_________________________________________________________________
dense_2 (Dense)              (None, 7)                 357       
=================================================================
Total params: 74,607
Trainable params: 74,607
Non-trainable params: 0
_________________________________________________________________

기본 MLP 모델 훈련하기

# Compile and train the base MLP model
base_model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])
base_model.fit(train_dataset, epochs=HPARAMS.train_epochs, verbose=1)
Epoch 1/100
/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/keras/engine/functional.py:595: UserWarning: Input dict contained keys ['NL_nbr_0_weight', 'NL_nbr_0_words'] which did not match any model input. They will be ignored by the model.
  [n for n in tensors.keys() if n not in ref_input_names])
1/Unknown - 1s 846ms/step - loss: 1.9927 - accuracy: 0.1250
7/Unknown - 1s 11ms/step - loss: 1.9846 - accuracy: 0.1383
12/Unknown - 1s 11ms/step - loss: 1.9795 - accuracy: 0.1369
16/Unknown - 1s 11ms/step - loss: 1.9743 - accuracy: 0.1409
17/17 [==============================] - 1s 12ms/step - loss: 1.9717 - accuracy: 0.1436
Epoch 2/100

 1/17 [>.............................] - ETA: 0s - loss: 1.9281 - accuracy: 0.1797
6/17 [=========>....................] - ETA: 0s - loss: 1.8872 - accuracy: 0.2583
11/17 [==================>...........] - ETA: 0s - loss: 1.8791 - accuracy: 0.2745
16/17 [===========================>..] - ETA: 0s - loss: 1.8732 - accuracy: 0.2818
17/17 [==============================] - 0s 12ms/step - loss: 1.8710 - accuracy: 0.2844
Epoch 3/100

 1/17 [>.............................] - ETA: 0s - loss: 1.7776 - accuracy: 0.3672
6/17 [=========>....................] - ETA: 0s - loss: 1.7710 - accuracy: 0.3582
11/17 [==================>...........] - ETA: 0s - loss: 1.7740 - accuracy: 0.3466

16/17 [===========================>..] - ETA: 0s - loss: 1.7696 - accuracy: 0.3442
17/17 [==============================] - 0s 11ms/step - loss: 1.7676 - accuracy: 0.3435
Epoch 4/100

 1/17 [>.............................] - ETA: 0s - loss: 1.7099 - accuracy: 0.3516
6/17 [=========>....................] - ETA: 0s - loss: 1.6841 - accuracy: 0.3557
11/17 [==================>...........] - ETA: 0s - loss: 1.6815 - accuracy: 0.3547
16/17 [===========================>..] - ETA: 0s - loss: 1.6777 - accuracy: 0.3545
17/17 [==============================] - 0s 12ms/step - loss: 1.6748 - accuracy: 0.3555
Epoch 5/100

 1/17 [>.............................] - ETA: 0s - loss: 1.6721 - accuracy: 0.3359
6/17 [=========>....................] - ETA: 0s - loss: 1.6218 - accuracy: 0.3563
11/17 [==================>...........] - ETA: 0s - loss: 1.5979 - accuracy: 0.3762
16/17 [===========================>..] - ETA: 0s - loss: 1.5818 - accuracy: 0.3887
17/17 [==============================] - 0s 11ms/step - loss: 1.5762 - accuracy: 0.3930
Epoch 6/100

 1/17 [>.............................] - ETA: 0s - loss: 1.4095 - accuracy: 0.5781
6/17 [=========>....................] - ETA: 0s - loss: 1.4340 - accuracy: 0.5127
11/17 [==================>...........] - ETA: 0s - loss: 1.4199 - accuracy: 0.5140
16/17 [===========================>..] - ETA: 0s - loss: 1.4125 - accuracy: 0.5143
17/17 [==============================] - 0s 12ms/step - loss: 1.4101 - accuracy: 0.5144
Epoch 7/100

 1/17 [>.............................] - ETA: 0s - loss: 1.2778 - accuracy: 0.5938
6/17 [=========>....................] - ETA: 0s - loss: 1.2679 - accuracy: 0.5795
11/17 [==================>...........] - ETA: 0s - loss: 1.2500 - accuracy: 0.5883
16/17 [===========================>..] - ETA: 0s - loss: 1.2405 - accuracy: 0.5920
17/17 [==============================] - 0s 12ms/step - loss: 1.2371 - accuracy: 0.5929
Epoch 8/100

 1/17 [>.............................] - ETA: 0s - loss: 1.1326 - accuracy: 0.6406
6/17 [=========>....................] - ETA: 0s - loss: 1.1610 - accuracy: 0.5966
11/17 [==================>...........] - ETA: 0s - loss: 1.1582 - accuracy: 0.5940
16/17 [===========================>..] - ETA: 0s - loss: 1.1442 - accuracy: 0.5995
17/17 [==============================] - 0s 11ms/step - loss: 1.1377 - accuracy: 0.6022
Epoch 9/100

 1/17 [>.............................] - ETA: 0s - loss: 1.0950 - accuracy: 0.6484
6/17 [=========>....................] - ETA: 0s - loss: 1.0106 - accuracy: 0.6713
10/17 [================>.............] - ETA: 0s - loss: 1.0004 - accuracy: 0.6703
15/17 [=========================>....] - ETA: 0s - loss: 0.9884 - accuracy: 0.6735
17/17 [==============================] - 0s 12ms/step - loss: 0.9814 - accuracy: 0.6762
Epoch 10/100

 1/17 [>.............................] - ETA: 0s - loss: 0.9197 - accuracy: 0.6641
6/17 [=========>....................] - ETA: 0s - loss: 0.8745 - accuracy: 0.6982
11/17 [==================>...........] - ETA: 0s - loss: 0.8673 - accuracy: 0.7055
16/17 [===========================>..] - ETA: 0s - loss: 0.8634 - accuracy: 0.7076
17/17 [==============================] - 0s 11ms/step - loss: 0.8619 - accuracy: 0.7089
Epoch 11/100

 1/17 [>.............................] - ETA: 0s - loss: 1.0099 - accuracy: 0.7188
6/17 [=========>....................] - ETA: 0s - loss: 0.8879 - accuracy: 0.7244
11/17 [==================>...........] - ETA: 0s - loss: 0.8496 - accuracy: 0.7363
15/17 [=========================>....] - ETA: 0s - loss: 0.8283 - accuracy: 0.7417
17/17 [==============================] - 0s 12ms/step - loss: 0.8184 - accuracy: 0.7439
Epoch 12/100

 1/17 [>.............................] - ETA: 0s - loss: 0.8259 - accuracy: 0.7109
6/17 [=========>....................] - ETA: 0s - loss: 0.7784 - accuracy: 0.7414
11/17 [==================>...........] - ETA: 0s - loss: 0.7591 - accuracy: 0.7483
16/17 [===========================>..] - ETA: 0s - loss: 0.7423 - accuracy: 0.7551
17/17 [==============================] - 0s 12ms/step - loss: 0.7374 - accuracy: 0.7569
Epoch 13/100

 1/17 [>.............................] - ETA: 0s - loss: 0.6955 - accuracy: 0.7500
6/17 [=========>....................] - ETA: 0s - loss: 0.6596 - accuracy: 0.7760
11/17 [==================>...........] - ETA: 0s - loss: 0.6494 - accuracy: 0.7854
16/17 [===========================>..] - ETA: 0s - loss: 0.6423 - accuracy: 0.7900
17/17 [==============================] - 0s 12ms/step - loss: 0.6403 - accuracy: 0.7911
Epoch 14/100

 1/17 [>.............................] - ETA: 0s - loss: 0.6502 - accuracy: 0.7734
6/17 [=========>....................] - ETA: 0s - loss: 0.6497 - accuracy: 0.7858
11/17 [==================>...........] - ETA: 0s - loss: 0.6298 - accuracy: 0.7974
16/17 [===========================>..] - ETA: 0s - loss: 0.6209 - accuracy: 0.8018
17/17 [==============================] - 0s 12ms/step - loss: 0.6167 - accuracy: 0.8038
Epoch 15/100

 1/17 [>.............................] - ETA: 0s - loss: 0.6496 - accuracy: 0.8125
6/17 [=========>....................] - ETA: 0s - loss: 0.5609 - accuracy: 0.8355
11/17 [==================>...........] - ETA: 0s - loss: 0.5419 - accuracy: 0.8397
16/17 [===========================>..] - ETA: 0s - loss: 0.5346 - accuracy: 0.8416
17/17 [==============================] - 0s 11ms/step - loss: 0.5324 - accuracy: 0.8423
Epoch 16/100

 1/17 [>.............................] - ETA: 0s - loss: 0.5160 - accuracy: 0.8438
6/17 [=========>....................] - ETA: 0s - loss: 0.5105 - accuracy: 0.8399
11/17 [==================>...........] - ETA: 0s - loss: 0.4998 - accuracy: 0.8439
16/17 [===========================>..] - ETA: 0s - loss: 0.4931 - accuracy: 0.8450
17/17 [==============================] - 0s 11ms/step - loss: 0.4927 - accuracy: 0.8447
Epoch 17/100

 1/17 [>.............................] - ETA: 0s - loss: 0.5245 - accuracy: 0.8203
6/17 [=========>....................] - ETA: 0s - loss: 0.4641 - accuracy: 0.8525
11/17 [==================>...........] - ETA: 0s - loss: 0.4567 - accuracy: 0.8571
15/17 [=========================>....] - ETA: 0s - loss: 0.4561 - accuracy: 0.8583
17/17 [==============================] - 0s 12ms/step - loss: 0.4550 - accuracy: 0.8589
Epoch 18/100

 1/17 [>.............................] - ETA: 0s - loss: 0.4959 - accuracy: 0.8516
6/17 [=========>....................] - ETA: 0s - loss: 0.4513 - accuracy: 0.8627
11/17 [==================>...........] - ETA: 0s - loss: 0.4494 - accuracy: 0.8645
16/17 [===========================>..] - ETA: 0s - loss: 0.4433 - accuracy: 0.8676
17/17 [==============================] - 0s 12ms/step - loss: 0.4416 - accuracy: 0.8682
Epoch 19/100

 1/17 [>.............................] - ETA: 0s - loss: 0.4211 - accuracy: 0.8672
6/17 [=========>....................] - ETA: 0s - loss: 0.3946 - accuracy: 0.8856
11/17 [==================>...........] - ETA: 0s - loss: 0.3856 - accuracy: 0.8875
16/17 [===========================>..] - ETA: 0s - loss: 0.3869 - accuracy: 0.8846
17/17 [==============================] - 0s 12ms/step - loss: 0.3883 - accuracy: 0.8835
Epoch 20/100

 1/17 [>.............................] - ETA: 0s - loss: 0.3987 - accuracy: 0.8438
6/17 [=========>....................] - ETA: 0s - loss: 0.4040 - accuracy: 0.8551
11/17 [==================>...........] - ETA: 0s - loss: 0.3928 - accuracy: 0.8616
16/17 [===========================>..] - ETA: 0s - loss: 0.3865 - accuracy: 0.8666
17/17 [==============================] - 0s 11ms/step - loss: 0.3845 - accuracy: 0.8679
Epoch 21/100

 1/17 [>.............................] - ETA: 0s - loss: 0.3630 - accuracy: 0.8828
6/17 [=========>....................] - ETA: 0s - loss: 0.3453 - accuracy: 0.8924
11/17 [==================>...........] - ETA: 0s - loss: 0.3466 - accuracy: 0.8929
16/17 [===========================>..] - ETA: 0s - loss: 0.3477 - accuracy: 0.8926
17/17 [==============================] - 0s 12ms/step - loss: 0.3481 - accuracy: 0.8922
Epoch 22/100

 1/17 [>.............................] - ETA: 0s - loss: 0.3861 - accuracy: 0.8750
6/17 [=========>....................] - ETA: 0s - loss: 0.3267 - accuracy: 0.8976
10/17 [================>.............] - ETA: 0s - loss: 0.3257 - accuracy: 0.8985
15/17 [=========================>....] - ETA: 0s - loss: 0.3238 - accuracy: 0.8992
17/17 [==============================] - 0s 12ms/step - loss: 0.3229 - accuracy: 0.8996
Epoch 23/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2505 - accuracy: 0.9297
6/17 [=========>....................] - ETA: 0s - loss: 0.2773 - accuracy: 0.9223
11/17 [==================>...........] - ETA: 0s - loss: 0.2847 - accuracy: 0.9211
16/17 [===========================>..] - ETA: 0s - loss: 0.2869 - accuracy: 0.9201
17/17 [==============================] - 0s 11ms/step - loss: 0.2873 - accuracy: 0.9198
Epoch 24/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2271 - accuracy: 0.9297
6/17 [=========>....................] - ETA: 0s - loss: 0.2618 - accuracy: 0.9256
10/17 [================>.............] - ETA: 0s - loss: 0.2758 - accuracy: 0.9202
15/17 [=========================>....] - ETA: 0s - loss: 0.2835 - accuracy: 0.9164
17/17 [==============================] - 0s 12ms/step - loss: 0.2848 - accuracy: 0.9158
Epoch 25/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2458 - accuracy: 0.9062
6/17 [=========>....................] - ETA: 0s - loss: 0.2760 - accuracy: 0.9031
11/17 [==================>...........] - ETA: 0s - loss: 0.2806 - accuracy: 0.9059
16/17 [===========================>..] - ETA: 0s - loss: 0.2822 - accuracy: 0.9070
17/17 [==============================] - 0s 11ms/step - loss: 0.2820 - accuracy: 0.9076
Epoch 26/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2572 - accuracy: 0.9141
6/17 [=========>....................] - ETA: 0s - loss: 0.2824 - accuracy: 0.9143
11/17 [==================>...........] - ETA: 0s - loss: 0.2795 - accuracy: 0.9165
16/17 [===========================>..] - ETA: 0s - loss: 0.2756 - accuracy: 0.9183
17/17 [==============================] - 0s 11ms/step - loss: 0.2745 - accuracy: 0.9187
Epoch 27/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2871 - accuracy: 0.9141
6/17 [=========>....................] - ETA: 0s - loss: 0.2802 - accuracy: 0.9146
11/17 [==================>...........] - ETA: 0s - loss: 0.2690 - accuracy: 0.9203
16/17 [===========================>..] - ETA: 0s - loss: 0.2609 - accuracy: 0.9239
17/17 [==============================] - 0s 11ms/step - loss: 0.2591 - accuracy: 0.9247
Epoch 28/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2078 - accuracy: 0.9531
6/17 [=========>....................] - ETA: 0s - loss: 0.2247 - accuracy: 0.9448
11/17 [==================>...........] - ETA: 0s - loss: 0.2305 - accuracy: 0.9400
15/17 [=========================>....] - ETA: 0s - loss: 0.2302 - accuracy: 0.9387
17/17 [==============================] - 0s 12ms/step - loss: 0.2313 - accuracy: 0.9377
Epoch 29/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1805 - accuracy: 0.9609
6/17 [=========>....................] - ETA: 0s - loss: 0.2042 - accuracy: 0.9455
11/17 [==================>...........] - ETA: 0s - loss: 0.2147 - accuracy: 0.9412
16/17 [===========================>..] - ETA: 0s - loss: 0.2219 - accuracy: 0.9382
17/17 [==============================] - 0s 12ms/step - loss: 0.2242 - accuracy: 0.9371
Epoch 30/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1775 - accuracy: 0.9531
6/17 [=========>....................] - ETA: 0s - loss: 0.2107 - accuracy: 0.9393
11/17 [==================>...........] - ETA: 0s - loss: 0.2152 - accuracy: 0.9374
16/17 [===========================>..] - ETA: 0s - loss: 0.2165 - accuracy: 0.9364
17/17 [==============================] - 0s 12ms/step - loss: 0.2171 - accuracy: 0.9358
Epoch 31/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2359 - accuracy: 0.9297
6/17 [=========>....................] - ETA: 0s - loss: 0.2269 - accuracy: 0.9360
11/17 [==================>...........] - ETA: 0s - loss: 0.2304 - accuracy: 0.9363
16/17 [===========================>..] - ETA: 0s - loss: 0.2294 - accuracy: 0.9363
17/17 [==============================] - 0s 12ms/step - loss: 0.2285 - accuracy: 0.9365
Epoch 32/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2654 - accuracy: 0.8984
6/17 [=========>....................] - ETA: 0s - loss: 0.2375 - accuracy: 0.9173
11/17 [==================>...........] - ETA: 0s - loss: 0.2182 - accuracy: 0.9284
16/17 [===========================>..] - ETA: 0s - loss: 0.2096 - accuracy: 0.9348
17/17 [==============================] - 0s 11ms/step - loss: 0.2079 - accuracy: 0.9358
Epoch 33/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1747 - accuracy: 0.9453
6/17 [=========>....................] - ETA: 0s - loss: 0.1882 - accuracy: 0.9398
10/17 [================>.............] - ETA: 0s - loss: 0.1903 - accuracy: 0.9415
15/17 [=========================>....] - ETA: 0s - loss: 0.1883 - accuracy: 0.9427
17/17 [==============================] - 0s 12ms/step - loss: 0.1881 - accuracy: 0.9430
Epoch 34/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1808 - accuracy: 0.9375
6/17 [=========>....................] - ETA: 0s - loss: 0.1642 - accuracy: 0.9544
11/17 [==================>...........] - ETA: 0s - loss: 0.1638 - accuracy: 0.9578
16/17 [===========================>..] - ETA: 0s - loss: 0.1694 - accuracy: 0.9559
17/17 [==============================] - 0s 12ms/step - loss: 0.1703 - accuracy: 0.9556
Epoch 35/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1859 - accuracy: 0.9375
6/17 [=========>....................] - ETA: 0s - loss: 0.1785 - accuracy: 0.9383
11/17 [==================>...........] - ETA: 0s - loss: 0.1768 - accuracy: 0.9432
16/17 [===========================>..] - ETA: 0s - loss: 0.1755 - accuracy: 0.9458
17/17 [==============================] - 0s 11ms/step - loss: 0.1751 - accuracy: 0.9464
Epoch 36/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1922 - accuracy: 0.9297
6/17 [=========>....................] - ETA: 0s - loss: 0.1937 - accuracy: 0.9427
11/17 [==================>...........] - ETA: 0s - loss: 0.1890 - accuracy: 0.9472
16/17 [===========================>..] - ETA: 0s - loss: 0.1857 - accuracy: 0.9490
17/17 [==============================] - 0s 12ms/step - loss: 0.1843 - accuracy: 0.9495
Epoch 37/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1418 - accuracy: 0.9531
6/17 [=========>....................] - ETA: 0s - loss: 0.1484 - accuracy: 0.9620
11/17 [==================>...........] - ETA: 0s - loss: 0.1556 - accuracy: 0.9598
15/17 [=========================>....] - ETA: 0s - loss: 0.1574 - accuracy: 0.9590
17/17 [==============================] - 0s 12ms/step - loss: 0.1580 - accuracy: 0.9588
Epoch 38/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1935 - accuracy: 0.9453
6/17 [=========>....................] - ETA: 0s - loss: 0.1601 - accuracy: 0.9541
11/17 [==================>...........] - ETA: 0s - loss: 0.1582 - accuracy: 0.9548
16/17 [===========================>..] - ETA: 0s - loss: 0.1561 - accuracy: 0.9548
17/17 [==============================] - 0s 12ms/step - loss: 0.1557 - accuracy: 0.9548
Epoch 39/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1982 - accuracy: 0.9531
6/17 [=========>....................] - ETA: 0s - loss: 0.1597 - accuracy: 0.9604
10/17 [================>.............] - ETA: 0s - loss: 0.1625 - accuracy: 0.9569
15/17 [=========================>....] - ETA: 0s - loss: 0.1638 - accuracy: 0.9557
17/17 [==============================] - 0s 11ms/step - loss: 0.1647 - accuracy: 0.9548
Epoch 40/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1461 - accuracy: 0.9531
6/17 [=========>....................] - ETA: 0s - loss: 0.1590 - accuracy: 0.9505
11/17 [==================>...........] - ETA: 0s - loss: 0.1552 - accuracy: 0.9550
16/17 [===========================>..] - ETA: 0s - loss: 0.1504 - accuracy: 0.9579
17/17 [==============================] - 0s 11ms/step - loss: 0.1494 - accuracy: 0.9584
Epoch 41/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0598 - accuracy: 0.9922
6/17 [=========>....................] - ETA: 0s - loss: 0.1182 - accuracy: 0.9705
11/17 [==================>...........] - ETA: 0s - loss: 0.1275 - accuracy: 0.9679
16/17 [===========================>..] - ETA: 0s - loss: 0.1297 - accuracy: 0.9669
17/17 [==============================] - 0s 12ms/step - loss: 0.1299 - accuracy: 0.9665
Epoch 42/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1715 - accuracy: 0.9609
6/17 [=========>....................] - ETA: 0s - loss: 0.1422 - accuracy: 0.9693
11/17 [==================>...........] - ETA: 0s - loss: 0.1443 - accuracy: 0.9671
16/17 [===========================>..] - ETA: 0s - loss: 0.1435 - accuracy: 0.9660
17/17 [==============================] - 0s 12ms/step - loss: 0.1432 - accuracy: 0.9657
Epoch 43/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1445 - accuracy: 0.9688
6/17 [=========>....................] - ETA: 0s - loss: 0.1302 - accuracy: 0.9624
11/17 [==================>...........] - ETA: 0s - loss: 0.1299 - accuracy: 0.9610
15/17 [=========================>....] - ETA: 0s - loss: 0.1290 - accuracy: 0.9612
17/17 [==============================] - 0s 12ms/step - loss: 0.1293 - accuracy: 0.9613
Epoch 44/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0838 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0925 - accuracy: 0.9815
10/17 [================>.............] - ETA: 0s - loss: 0.0977 - accuracy: 0.9789
15/17 [=========================>....] - ETA: 0s - loss: 0.1028 - accuracy: 0.9769
17/17 [==============================] - 0s 12ms/step - loss: 0.1050 - accuracy: 0.9759
Epoch 45/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0793 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.1203 - accuracy: 0.9573
11/17 [==================>...........] - ETA: 0s - loss: 0.1269 - accuracy: 0.9567
16/17 [===========================>..] - ETA: 0s - loss: 0.1287 - accuracy: 0.9568
17/17 [==============================] - 0s 11ms/step - loss: 0.1292 - accuracy: 0.9569
Epoch 46/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0995 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.1154 - accuracy: 0.9715
11/17 [==================>...........] - ETA: 0s - loss: 0.1164 - accuracy: 0.9697
15/17 [=========================>....] - ETA: 0s - loss: 0.1172 - accuracy: 0.9681
17/17 [==============================] - 0s 11ms/step - loss: 0.1182 - accuracy: 0.9670
Epoch 47/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0841 - accuracy: 1.0000
6/17 [=========>....................] - ETA: 0s - loss: 0.1146 - accuracy: 0.9679
11/17 [==================>...........] - ETA: 0s - loss: 0.1185 - accuracy: 0.9645
15/17 [=========================>....] - ETA: 0s - loss: 0.1211 - accuracy: 0.9630
17/17 [==============================] - 0s 12ms/step - loss: 0.1220 - accuracy: 0.9626
Epoch 48/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1113 - accuracy: 0.9609
6/17 [=========>....................] - ETA: 0s - loss: 0.1320 - accuracy: 0.9509
11/17 [==================>...........] - ETA: 0s - loss: 0.1242 - accuracy: 0.9567
16/17 [===========================>..] - ETA: 0s - loss: 0.1216 - accuracy: 0.9592
17/17 [==============================] - 0s 11ms/step - loss: 0.1210 - accuracy: 0.9598
Epoch 49/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1114 - accuracy: 0.9609
6/17 [=========>....................] - ETA: 0s - loss: 0.1029 - accuracy: 0.9709
11/17 [==================>...........] - ETA: 0s - loss: 0.1022 - accuracy: 0.9724
16/17 [===========================>..] - ETA: 0s - loss: 0.1020 - accuracy: 0.9730
17/17 [==============================] - 0s 11ms/step - loss: 0.1015 - accuracy: 0.9733
Epoch 50/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0747 - accuracy: 0.9922
6/17 [=========>....................] - ETA: 0s - loss: 0.0984 - accuracy: 0.9751
11/17 [==================>...........] - ETA: 0s - loss: 0.1027 - accuracy: 0.9730
16/17 [===========================>..] - ETA: 0s - loss: 0.1039 - accuracy: 0.9717
17/17 [==============================] - 0s 12ms/step - loss: 0.1042 - accuracy: 0.9714
Epoch 51/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0892 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.1093 - accuracy: 0.9702
11/17 [==================>...........] - ETA: 0s - loss: 0.1094 - accuracy: 0.9706
16/17 [===========================>..] - ETA: 0s - loss: 0.1082 - accuracy: 0.9708
17/17 [==============================] - 0s 11ms/step - loss: 0.1079 - accuracy: 0.9707
Epoch 52/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1681 - accuracy: 0.9375
6/17 [=========>....................] - ETA: 0s - loss: 0.1280 - accuracy: 0.9589
11/17 [==================>...........] - ETA: 0s - loss: 0.1212 - accuracy: 0.9601
16/17 [===========================>..] - ETA: 0s - loss: 0.1184 - accuracy: 0.9611
17/17 [==============================] - 0s 11ms/step - loss: 0.1176 - accuracy: 0.9615
Epoch 53/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0574 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.0886 - accuracy: 0.9743
11/17 [==================>...........] - ETA: 0s - loss: 0.0941 - accuracy: 0.9726
16/17 [===========================>..] - ETA: 0s - loss: 0.0951 - accuracy: 0.9727
17/17 [==============================] - 0s 11ms/step - loss: 0.0952 - accuracy: 0.9727
Epoch 54/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1014 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.1094 - accuracy: 0.9706
11/17 [==================>...........] - ETA: 0s - loss: 0.1091 - accuracy: 0.9692
16/17 [===========================>..] - ETA: 0s - loss: 0.1068 - accuracy: 0.9696
17/17 [==============================] - 0s 12ms/step - loss: 0.1062 - accuracy: 0.9697
Epoch 55/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0855 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.0805 - accuracy: 0.9793
11/17 [==================>...........] - ETA: 0s - loss: 0.0855 - accuracy: 0.9762
16/17 [===========================>..] - ETA: 0s - loss: 0.0884 - accuracy: 0.9746
17/17 [==============================] - 0s 11ms/step - loss: 0.0891 - accuracy: 0.9743
Epoch 56/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0660 - accuracy: 0.9922
6/17 [=========>....................] - ETA: 0s - loss: 0.0845 - accuracy: 0.9787
11/17 [==================>...........] - ETA: 0s - loss: 0.0884 - accuracy: 0.9766
16/17 [===========================>..] - ETA: 0s - loss: 0.0901 - accuracy: 0.9766
17/17 [==============================] - 0s 11ms/step - loss: 0.0906 - accuracy: 0.9764
Epoch 57/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1431 - accuracy: 0.9375
6/17 [=========>....................] - ETA: 0s - loss: 0.0999 - accuracy: 0.9654
11/17 [==================>...........] - ETA: 0s - loss: 0.0947 - accuracy: 0.9687
16/17 [===========================>..] - ETA: 0s - loss: 0.0931 - accuracy: 0.9704
17/17 [==============================] - 0s 11ms/step - loss: 0.0931 - accuracy: 0.9707
Epoch 58/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0869 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.0882 - accuracy: 0.9766
11/17 [==================>...........] - ETA: 0s - loss: 0.0894 - accuracy: 0.9762
16/17 [===========================>..] - ETA: 0s - loss: 0.0900 - accuracy: 0.9761
17/17 [==============================] - 0s 11ms/step - loss: 0.0901 - accuracy: 0.9762
Epoch 59/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0691 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.0667 - accuracy: 0.9821
11/17 [==================>...........] - ETA: 0s - loss: 0.0707 - accuracy: 0.9805
16/17 [===========================>..] - ETA: 0s - loss: 0.0747 - accuracy: 0.9796
17/17 [==============================] - 0s 11ms/step - loss: 0.0759 - accuracy: 0.9794
Epoch 60/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0855 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.0962 - accuracy: 0.9699
11/17 [==================>...........] - ETA: 0s - loss: 0.0970 - accuracy: 0.9690
16/17 [===========================>..] - ETA: 0s - loss: 0.0957 - accuracy: 0.9697
17/17 [==============================] - 0s 11ms/step - loss: 0.0954 - accuracy: 0.9700
Epoch 61/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0740 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0995 - accuracy: 0.9755
11/17 [==================>...........] - ETA: 0s - loss: 0.0949 - accuracy: 0.9768
15/17 [=========================>....] - ETA: 0s - loss: 0.0934 - accuracy: 0.9771
17/17 [==============================] - 0s 12ms/step - loss: 0.0933 - accuracy: 0.9769
Epoch 62/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1036 - accuracy: 0.9688
6/17 [=========>....................] - ETA: 0s - loss: 0.0821 - accuracy: 0.9765
11/17 [==================>...........] - ETA: 0s - loss: 0.0798 - accuracy: 0.9776
16/17 [===========================>..] - ETA: 0s - loss: 0.0795 - accuracy: 0.9782
17/17 [==============================] - 0s 11ms/step - loss: 0.0798 - accuracy: 0.9783
Epoch 63/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0554 - accuracy: 1.0000
6/17 [=========>....................] - ETA: 0s - loss: 0.0632 - accuracy: 0.9885
11/17 [==================>...........] - ETA: 0s - loss: 0.0664 - accuracy: 0.9861
16/17 [===========================>..] - ETA: 0s - loss: 0.0690 - accuracy: 0.9848
17/17 [==============================] - 0s 11ms/step - loss: 0.0695 - accuracy: 0.9845
Epoch 64/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0509 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0575 - accuracy: 0.9855
11/17 [==================>...........] - ETA: 0s - loss: 0.0633 - accuracy: 0.9835
16/17 [===========================>..] - ETA: 0s - loss: 0.0665 - accuracy: 0.9823
17/17 [==============================] - 0s 11ms/step - loss: 0.0670 - accuracy: 0.9822
Epoch 65/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0640 - accuracy: 0.9922
6/17 [=========>....................] - ETA: 0s - loss: 0.0758 - accuracy: 0.9808
11/17 [==================>...........] - ETA: 0s - loss: 0.0761 - accuracy: 0.9805
16/17 [===========================>..] - ETA: 0s - loss: 0.0754 - accuracy: 0.9806
17/17 [==============================] - 0s 11ms/step - loss: 0.0751 - accuracy: 0.9807
Epoch 66/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0475 - accuracy: 0.9922
6/17 [=========>....................] - ETA: 0s - loss: 0.0734 - accuracy: 0.9759
11/17 [==================>...........] - ETA: 0s - loss: 0.0754 - accuracy: 0.9766
16/17 [===========================>..] - ETA: 0s - loss: 0.0744 - accuracy: 0.9777
17/17 [==============================] - 0s 11ms/step - loss: 0.0743 - accuracy: 0.9781
Epoch 67/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0351 - accuracy: 1.0000
6/17 [=========>....................] - ETA: 0s - loss: 0.0537 - accuracy: 0.9878
11/17 [==================>...........] - ETA: 0s - loss: 0.0593 - accuracy: 0.9867
16/17 [===========================>..] - ETA: 0s - loss: 0.0613 - accuracy: 0.9858
17/17 [==============================] - 0s 11ms/step - loss: 0.0619 - accuracy: 0.9855
Epoch 68/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0721 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0682 - accuracy: 0.9837
11/17 [==================>...........] - ETA: 0s - loss: 0.0690 - accuracy: 0.9827
16/17 [===========================>..] - ETA: 0s - loss: 0.0684 - accuracy: 0.9822
17/17 [==============================] - 0s 12ms/step - loss: 0.0683 - accuracy: 0.9820
Epoch 69/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0600 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0647 - accuracy: 0.9828
11/17 [==================>...........] - ETA: 0s - loss: 0.0651 - accuracy: 0.9829
16/17 [===========================>..] - ETA: 0s - loss: 0.0664 - accuracy: 0.9824
17/17 [==============================] - 0s 11ms/step - loss: 0.0669 - accuracy: 0.9822
Epoch 70/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0889 - accuracy: 0.9688
6/17 [=========>....................] - ETA: 0s - loss: 0.0655 - accuracy: 0.9827
11/17 [==================>...........] - ETA: 0s - loss: 0.0640 - accuracy: 0.9838
16/17 [===========================>..] - ETA: 0s - loss: 0.0656 - accuracy: 0.9831
17/17 [==============================] - 0s 12ms/step - loss: 0.0658 - accuracy: 0.9830
Epoch 71/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0890 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0656 - accuracy: 0.9875
11/17 [==================>...........] - ETA: 0s - loss: 0.0659 - accuracy: 0.9858
16/17 [===========================>..] - ETA: 0s - loss: 0.0677 - accuracy: 0.9844
17/17 [==============================] - 0s 11ms/step - loss: 0.0681 - accuracy: 0.9841
Epoch 72/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1514 - accuracy: 0.9688
6/17 [=========>....................] - ETA: 0s - loss: 0.0995 - accuracy: 0.9734
11/17 [==================>...........] - ETA: 0s - loss: 0.0905 - accuracy: 0.9747
16/17 [===========================>..] - ETA: 0s - loss: 0.0866 - accuracy: 0.9757
17/17 [==============================] - 0s 11ms/step - loss: 0.0857 - accuracy: 0.9760
Epoch 73/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0751 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.0782 - accuracy: 0.9721
11/17 [==================>...........] - ETA: 0s - loss: 0.0742 - accuracy: 0.9741
16/17 [===========================>..] - ETA: 0s - loss: 0.0711 - accuracy: 0.9761
17/17 [==============================] - 0s 12ms/step - loss: 0.0701 - accuracy: 0.9767
Epoch 74/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0384 - accuracy: 1.0000
6/17 [=========>....................] - ETA: 0s - loss: 0.0810 - accuracy: 0.9850
10/17 [================>.............] - ETA: 0s - loss: 0.0814 - accuracy: 0.9822
15/17 [=========================>....] - ETA: 0s - loss: 0.0820 - accuracy: 0.9803
17/17 [==============================] - 0s 12ms/step - loss: 0.0820 - accuracy: 0.9799
Epoch 75/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0682 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0573 - accuracy: 0.9868
11/17 [==================>...........] - ETA: 0s - loss: 0.0570 - accuracy: 0.9866
16/17 [===========================>..] - ETA: 0s - loss: 0.0604 - accuracy: 0.9856
17/17 [==============================] - 0s 11ms/step - loss: 0.0612 - accuracy: 0.9854
Epoch 76/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0712 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.0669 - accuracy: 0.9796
11/17 [==================>...........] - ETA: 0s - loss: 0.0655 - accuracy: 0.9806
16/17 [===========================>..] - ETA: 0s - loss: 0.0661 - accuracy: 0.9806
17/17 [==============================] - 0s 11ms/step - loss: 0.0662 - accuracy: 0.9804
Epoch 77/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0804 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.0687 - accuracy: 0.9790
10/17 [================>.............] - ETA: 0s - loss: 0.0686 - accuracy: 0.9797
15/17 [=========================>....] - ETA: 0s - loss: 0.0684 - accuracy: 0.9798
17/17 [==============================] - 0s 11ms/step - loss: 0.0678 - accuracy: 0.9800
Epoch 78/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0548 - accuracy: 0.9922
6/17 [=========>....................] - ETA: 0s - loss: 0.0597 - accuracy: 0.9857
11/17 [==================>...........] - ETA: 0s - loss: 0.0587 - accuracy: 0.9848
16/17 [===========================>..] - ETA: 0s - loss: 0.0589 - accuracy: 0.9840
17/17 [==============================] - 0s 11ms/step - loss: 0.0590 - accuracy: 0.9838
Epoch 79/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0645 - accuracy: 0.9766
7/17 [===========>..................] - ETA: 0s - loss: 0.0581 - accuracy: 0.9802
12/17 [====================>.........] - ETA: 0s - loss: 0.0617 - accuracy: 0.9805
17/17 [==============================] - ETA: 0s - loss: 0.0636 - accuracy: 0.9807
17/17 [==============================] - 0s 11ms/step - loss: 0.0640 - accuracy: 0.9807
Epoch 80/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0944 - accuracy: 0.9766
6/17 [=========>....................] - ETA: 0s - loss: 0.0637 - accuracy: 0.9848
11/17 [==================>...........] - ETA: 0s - loss: 0.0601 - accuracy: 0.9847
16/17 [===========================>..] - ETA: 0s - loss: 0.0598 - accuracy: 0.9846
17/17 [==============================] - 0s 11ms/step - loss: 0.0595 - accuracy: 0.9846
Epoch 81/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0520 - accuracy: 0.9922
6/17 [=========>....................] - ETA: 0s - loss: 0.0538 - accuracy: 0.9852
11/17 [==================>...........] - ETA: 0s - loss: 0.0553 - accuracy: 0.9827
16/17 [===========================>..] - ETA: 0s - loss: 0.0557 - accuracy: 0.9824
17/17 [==============================] - 0s 12ms/step - loss: 0.0556 - accuracy: 0.9824
Epoch 82/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0795 - accuracy: 0.9688
6/17 [=========>....................] - ETA: 0s - loss: 0.0647 - accuracy: 0.9810
11/17 [==================>...........] - ETA: 0s - loss: 0.0640 - accuracy: 0.9813
16/17 [===========================>..] - ETA: 0s - loss: 0.0632 - accuracy: 0.9815
17/17 [==============================] - 0s 11ms/step - loss: 0.0632 - accuracy: 0.9816
Epoch 83/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0582 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0601 - accuracy: 0.9852
11/17 [==================>...........] - ETA: 0s - loss: 0.0619 - accuracy: 0.9834
16/17 [===========================>..] - ETA: 0s - loss: 0.0632 - accuracy: 0.9825
17/17 [==============================] - 0s 11ms/step - loss: 0.0637 - accuracy: 0.9822
Epoch 84/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0336 - accuracy: 1.0000
6/17 [=========>....................] - ETA: 0s - loss: 0.0463 - accuracy: 0.9890
11/17 [==================>...........] - ETA: 0s - loss: 0.0506 - accuracy: 0.9863
16/17 [===========================>..] - ETA: 0s - loss: 0.0520 - accuracy: 0.9858
17/17 [==============================] - 0s 11ms/step - loss: 0.0524 - accuracy: 0.9858
Epoch 85/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1052 - accuracy: 0.9609
6/17 [=========>....................] - ETA: 0s - loss: 0.0732 - accuracy: 0.9740
11/17 [==================>...........] - ETA: 0s - loss: 0.0684 - accuracy: 0.9766
16/17 [===========================>..] - ETA: 0s - loss: 0.0671 - accuracy: 0.9777
17/17 [==============================] - 0s 11ms/step - loss: 0.0665 - accuracy: 0.9780
Epoch 86/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0576 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0555 - accuracy: 0.9821
11/17 [==================>...........] - ETA: 0s - loss: 0.0551 - accuracy: 0.9825
16/17 [===========================>..] - ETA: 0s - loss: 0.0578 - accuracy: 0.9809
17/17 [==============================] - 0s 11ms/step - loss: 0.0586 - accuracy: 0.9807
Epoch 87/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0879 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0624 - accuracy: 0.9834
11/17 [==================>...........] - ETA: 0s - loss: 0.0564 - accuracy: 0.9842
16/17 [===========================>..] - ETA: 0s - loss: 0.0546 - accuracy: 0.9844
17/17 [==============================] - 0s 11ms/step - loss: 0.0542 - accuracy: 0.9844
Epoch 88/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0474 - accuracy: 0.9844
7/17 [===========>..................] - ETA: 0s - loss: 0.0453 - accuracy: 0.9864
12/17 [====================>.........] - ETA: 0s - loss: 0.0485 - accuracy: 0.9851
17/17 [==============================] - ETA: 0s - loss: 0.0503 - accuracy: 0.9847
17/17 [==============================] - 0s 10ms/step - loss: 0.0506 - accuracy: 0.9847
Epoch 89/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0149 - accuracy: 1.0000
6/17 [=========>....................] - ETA: 0s - loss: 0.0334 - accuracy: 0.9918
11/17 [==================>...........] - ETA: 0s - loss: 0.0388 - accuracy: 0.9887
16/17 [===========================>..] - ETA: 0s - loss: 0.0434 - accuracy: 0.9870
17/17 [==============================] - 0s 11ms/step - loss: 0.0447 - accuracy: 0.9866
Epoch 90/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0478 - accuracy: 0.9766
7/17 [===========>..................] - ETA: 0s - loss: 0.0461 - accuracy: 0.9874
12/17 [====================>.........] - ETA: 0s - loss: 0.0459 - accuracy: 0.9882
17/17 [==============================] - ETA: 0s - loss: 0.0463 - accuracy: 0.9881
17/17 [==============================] - 0s 11ms/step - loss: 0.0465 - accuracy: 0.9880
Epoch 91/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0896 - accuracy: 0.9609
6/17 [=========>....................] - ETA: 0s - loss: 0.0741 - accuracy: 0.9717
11/17 [==================>...........] - ETA: 0s - loss: 0.0684 - accuracy: 0.9745
16/17 [===========================>..] - ETA: 0s - loss: 0.0658 - accuracy: 0.9752
17/17 [==============================] - 0s 11ms/step - loss: 0.0651 - accuracy: 0.9754
Epoch 92/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0638 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0684 - accuracy: 0.9794
11/17 [==================>...........] - ETA: 0s - loss: 0.0622 - accuracy: 0.9812
16/17 [===========================>..] - ETA: 0s - loss: 0.0590 - accuracy: 0.9823
17/17 [==============================] - 0s 11ms/step - loss: 0.0584 - accuracy: 0.9825
Epoch 93/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0721 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0522 - accuracy: 0.9897
11/17 [==================>...........] - ETA: 0s - loss: 0.0494 - accuracy: 0.9891
16/17 [===========================>..] - ETA: 0s - loss: 0.0482 - accuracy: 0.9891
17/17 [==============================] - 0s 11ms/step - loss: 0.0479 - accuracy: 0.9889
Epoch 94/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0442 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0570 - accuracy: 0.9824
11/17 [==================>...........] - ETA: 0s - loss: 0.0528 - accuracy: 0.9839
16/17 [===========================>..] - ETA: 0s - loss: 0.0519 - accuracy: 0.9843
17/17 [==============================] - 0s 11ms/step - loss: 0.0517 - accuracy: 0.9843
Epoch 95/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0523 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0603 - accuracy: 0.9828
11/17 [==================>...........] - ETA: 0s - loss: 0.0590 - accuracy: 0.9828
16/17 [===========================>..] - ETA: 0s - loss: 0.0570 - accuracy: 0.9835
17/17 [==============================] - 0s 11ms/step - loss: 0.0566 - accuracy: 0.9835
Epoch 96/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0564 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0515 - accuracy: 0.9809
11/17 [==================>...........] - ETA: 0s - loss: 0.0499 - accuracy: 0.9821
16/17 [===========================>..] - ETA: 0s - loss: 0.0480 - accuracy: 0.9840
17/17 [==============================] - 0s 11ms/step - loss: 0.0478 - accuracy: 0.9844
Epoch 97/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0644 - accuracy: 0.9688
6/17 [=========>....................] - ETA: 0s - loss: 0.0538 - accuracy: 0.9771
11/17 [==================>...........] - ETA: 0s - loss: 0.0526 - accuracy: 0.9789
16/17 [===========================>..] - ETA: 0s - loss: 0.0515 - accuracy: 0.9804
17/17 [==============================] - 0s 11ms/step - loss: 0.0511 - accuracy: 0.9809
Epoch 98/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0743 - accuracy: 0.9844
6/17 [=========>....................] - ETA: 0s - loss: 0.0550 - accuracy: 0.9866
11/17 [==================>...........] - ETA: 0s - loss: 0.0525 - accuracy: 0.9867
16/17 [===========================>..] - ETA: 0s - loss: 0.0515 - accuracy: 0.9868
17/17 [==============================] - 0s 11ms/step - loss: 0.0516 - accuracy: 0.9866
Epoch 99/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0333 - accuracy: 0.9922
6/17 [=========>....................] - ETA: 0s - loss: 0.0422 - accuracy: 0.9889
11/17 [==================>...........] - ETA: 0s - loss: 0.0450 - accuracy: 0.9889
15/17 [=========================>....] - ETA: 0s - loss: 0.0455 - accuracy: 0.9891
17/17 [==============================] - 0s 12ms/step - loss: 0.0454 - accuracy: 0.9891
Epoch 100/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0864 - accuracy: 0.9609
7/17 [===========>..................] - ETA: 0s - loss: 0.0586 - accuracy: 0.9777
12/17 [====================>.........] - ETA: 0s - loss: 0.0553 - accuracy: 0.9803
17/17 [==============================] - ETA: 0s - loss: 0.0533 - accuracy: 0.9820
17/17 [==============================] - 0s 11ms/step - loss: 0.0530 - accuracy: 0.9822
<tensorflow.python.keras.callbacks.History at 0x7fc82c426c88>

기본 MLP 모델 평가하기

# Helper function to print evaluation metrics.
def print_metrics(model_desc, eval_metrics):
  """Prints evaluation metrics.

  Args:
    model_desc: A description of the model.
    eval_metrics: A dictionary mapping metric names to corresponding values. It
      must contain the loss and accuracy metrics.
  """
  print('\n')
  print('Eval accuracy for ', model_desc, ': ', eval_metrics['accuracy'])
  print('Eval loss for ', model_desc, ': ', eval_metrics['loss'])
  if 'graph_loss' in eval_metrics:
    print('Eval graph loss for ', model_desc, ': ', eval_metrics['graph_loss'])
eval_results = dict(
    zip(base_model.metrics_names,
        base_model.evaluate(test_dataset, steps=HPARAMS.eval_steps)))
print_metrics('Base MLP model', eval_results)
1/Unknown - 0s 155ms/step - loss: 1.3607 - accuracy: 0.7656
5/5 [==============================] - 0s 8ms/step - loss: 1.4110 - accuracy: 0.7866
Eval accuracy for  Base MLP model :  0.7866184711456299
Eval loss for  Base MLP model :  1.4110491275787354

그래프 정규화로 MLP 모델 훈련하기

그래프 정규화를 기존 tf.Keras.Model의 손실 항에 통합하려면 몇 줄의 코드만 있으면 됩니다. 기본 모델은 래핑되어 새로운 tf.Keras 서브 클래스 모델을 생성하며, 손실에는 그래프 정규화가 포함됩니다.

그래프 정규화의 점진적 이점을 평가하기 위해 새 기본 모델 인스턴스를 생성합니다. 이는 base_model이 이미 몇 번의 반복 동안 훈련되었으며, 이 훈련된 모델을 재사용하여 그래프 정규화 모델을 만드는 것은 base_model에 대한 공정한 비교가 되지 않기 때문입니다.

# Build a new base MLP model.
base_reg_model_tag, base_reg_model = 'FUNCTIONAL', make_mlp_functional_model(
    HPARAMS)
# Wrap the base MLP model with graph regularization.
graph_reg_config = nsl.configs.make_graph_reg_config(
    max_neighbors=HPARAMS.num_neighbors,
    multiplier=HPARAMS.graph_regularization_multiplier,
    distance_type=HPARAMS.distance_type,
    sum_over_axis=-1)
graph_reg_model = nsl.keras.GraphRegularization(base_reg_model,
                                                graph_reg_config)
graph_reg_model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'])
graph_reg_model.fit(train_dataset, epochs=HPARAMS.train_epochs, verbose=1)
Epoch 1/100
/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/framework/indexed_slices.py:437: UserWarning: Converting sparse IndexedSlices(IndexedSlices(indices=Tensor("gradient_tape/GraphRegularization/graph_loss/Reshape_1:0", shape=(None,), dtype=int32), values=Tensor("gradient_tape/GraphRegularization/graph_loss/Reshape:0", shape=(None, 7), dtype=float32), dense_shape=Tensor("gradient_tape/GraphRegularization/graph_loss/Cast:0", shape=(2,), dtype=int32))) to a dense Tensor of unknown shape. This may consume a large amount of memory.
  "shape. This may consume a large amount of memory." % value)
1/Unknown - 2s 2s/step - loss: 1.9376 - accuracy: 0.1406 - scaled_graph_loss: 0.0010
6/Unknown - 2s 11ms/step - loss: 1.9352 - accuracy: 0.1593 - scaled_graph_loss: 9.3120e-04
11/Unknown - 2s 11ms/step - loss: 1.9297 - accuracy: 0.1687 - scaled_graph_loss: 9.1192e-04
16/Unknown - 2s 11ms/step - loss: 1.9242 - accuracy: 0.1777 - scaled_graph_loss: 9.1595e-04
17/17 [==============================] - 2s 11ms/step - loss: 1.9225 - accuracy: 0.1801 - scaled_graph_loss: 9.2100e-04
Epoch 2/100
1/17 [>.............................] - ETA: 0s - loss: 1.8713 - accuracy: 0.2500 - scaled_graph_loss: 0.0013
6/17 [=========>....................] - ETA: 0s - loss: 1.8634 - accuracy: 0.2717 - scaled_graph_loss: 0.0012
11/17 [==================>...........] - ETA: 0s - loss: 1.8542 - accuracy: 0.2756 - scaled_graph_loss: 0.0013
16/17 [===========================>..] - ETA: 0s - loss: 1.8454 - accuracy: 0.2810 - scaled_graph_loss: 0.0014
17/17 [==============================] - 0s 11ms/step - loss: 1.8425 - accuracy: 0.2831 - scaled_graph_loss: 0.0014
Epoch 3/100
1/17 [>.............................] - ETA: 0s - loss: 1.7793 - accuracy: 0.2812 - scaled_graph_loss: 0.0020
6/17 [=========>....................] - ETA: 0s - loss: 1.7602 - accuracy: 0.3174 - scaled_graph_loss: 0.0022
11/17 [==================>...........] - ETA: 0s - loss: 1.7511 - accuracy: 0.3217 - scaled_graph_loss: 0.0023
16/17 [===========================>..] - ETA: 0s - loss: 1.7470 - accuracy: 0.3199 - scaled_graph_loss: 0.0025
17/17 [==============================] - 0s 11ms/step - loss: 1.7455 - accuracy: 0.3194 - scaled_graph_loss: 0.0025
Epoch 4/100
1/17 [>.............................] - ETA: 0s - loss: 1.6206 - accuracy: 0.4219 - scaled_graph_loss: 0.0038
6/17 [=========>....................] - ETA: 0s - loss: 1.6577 - accuracy: 0.3777 - scaled_graph_loss: 0.0039
11/17 [==================>...........] - ETA: 0s - loss: 1.6615 - accuracy: 0.3617 - scaled_graph_loss: 0.0040
16/17 [===========================>..] - ETA: 0s - loss: 1.6550 - accuracy: 0.3599 - scaled_graph_loss: 0.0041
17/17 [==============================] - 0s 11ms/step - loss: 1.6523 - accuracy: 0.3600 - scaled_graph_loss: 0.0042
Epoch 5/100
1/17 [>.............................] - ETA: 0s - loss: 1.6149 - accuracy: 0.3047 - scaled_graph_loss: 0.0057
6/17 [=========>....................] - ETA: 0s - loss: 1.5876 - accuracy: 0.3589 - scaled_graph_loss: 0.0057
11/17 [==================>...........] - ETA: 0s - loss: 1.5726 - accuracy: 0.3767 - scaled_graph_loss: 0.0059
16/17 [===========================>..] - ETA: 0s - loss: 1.5585 - accuracy: 0.3880 - scaled_graph_loss: 0.0060
17/17 [==============================] - 0s 11ms/step - loss: 1.5537 - accuracy: 0.3918 - scaled_graph_loss: 0.0061
Epoch 6/100
1/17 [>.............................] - ETA: 0s - loss: 1.4908 - accuracy: 0.4297 - scaled_graph_loss: 0.0081
6/17 [=========>....................] - ETA: 0s - loss: 1.4271 - accuracy: 0.4797 - scaled_graph_loss: 0.0084
11/17 [==================>...........] - ETA: 0s - loss: 1.4082 - accuracy: 0.4853 - scaled_graph_loss: 0.0087
16/17 [===========================>..] - ETA: 0s - loss: 1.3971 - accuracy: 0.4907 - scaled_graph_loss: 0.0090
17/17 [==============================] - 0s 12ms/step - loss: 1.3923 - accuracy: 0.4934 - scaled_graph_loss: 0.0091
Epoch 7/100

 1/17 [>.............................] - ETA: 0s - loss: 1.3129 - accuracy: 0.5391 - scaled_graph_loss: 0.0122
6/17 [=========>....................] - ETA: 0s - loss: 1.2773 - accuracy: 0.5566 - scaled_graph_loss: 0.0123
11/17 [==================>...........] - ETA: 0s - loss: 1.2701 - accuracy: 0.5591 - scaled_graph_loss: 0.0127
16/17 [===========================>..] - ETA: 0s - loss: 1.2637 - accuracy: 0.5613 - scaled_graph_loss: 0.0129
17/17 [==============================] - 0s 11ms/step - loss: 1.2615 - accuracy: 0.5619 - scaled_graph_loss: 0.0131
Epoch 8/100

 1/17 [>.............................] - ETA: 0s - loss: 1.1887 - accuracy: 0.6016 - scaled_graph_loss: 0.0145
6/17 [=========>....................] - ETA: 0s - loss: 1.1620 - accuracy: 0.6125 - scaled_graph_loss: 0.0163
11/17 [==================>...........] - ETA: 0s - loss: 1.1480 - accuracy: 0.6224 - scaled_graph_loss: 0.0164
16/17 [===========================>..] - ETA: 0s - loss: 1.1419 - accuracy: 0.6250 - scaled_graph_loss: 0.0166
17/17 [==============================] - 0s 12ms/step - loss: 1.1398 - accuracy: 0.6262 - scaled_graph_loss: 0.0167
Epoch 9/100

 1/17 [>.............................] - ETA: 0s - loss: 1.0050 - accuracy: 0.7031 - scaled_graph_loss: 0.0232
6/17 [=========>....................] - ETA: 0s - loss: 1.0236 - accuracy: 0.6775 - scaled_graph_loss: 0.0211
11/17 [==================>...........] - ETA: 0s - loss: 1.0275 - accuracy: 0.6710 - scaled_graph_loss: 0.0210
16/17 [===========================>..] - ETA: 0s - loss: 1.0229 - accuracy: 0.6711 - scaled_graph_loss: 0.0211
17/17 [==============================] - 0s 11ms/step - loss: 1.0197 - accuracy: 0.6717 - scaled_graph_loss: 0.0212
Epoch 10/100

 1/17 [>.............................] - ETA: 0s - loss: 0.8815 - accuracy: 0.7422 - scaled_graph_loss: 0.0244
6/17 [=========>....................] - ETA: 0s - loss: 0.9268 - accuracy: 0.6979 - scaled_graph_loss: 0.0246
11/17 [==================>...........] - ETA: 0s - loss: 0.9240 - accuracy: 0.6956 - scaled_graph_loss: 0.0246
16/17 [===========================>..] - ETA: 0s - loss: 0.9181 - accuracy: 0.6988 - scaled_graph_loss: 0.0246
17/17 [==============================] - 0s 11ms/step - loss: 0.9155 - accuracy: 0.7002 - scaled_graph_loss: 0.0247
Epoch 11/100

 1/17 [>.............................] - ETA: 0s - loss: 0.7068 - accuracy: 0.7969 - scaled_graph_loss: 0.0261
6/17 [=========>....................] - ETA: 0s - loss: 0.7758 - accuracy: 0.7836 - scaled_graph_loss: 0.0258
11/17 [==================>...........] - ETA: 0s - loss: 0.7884 - accuracy: 0.7758 - scaled_graph_loss: 0.0259
16/17 [===========================>..] - ETA: 0s - loss: 0.7931 - accuracy: 0.7706 - scaled_graph_loss: 0.0258
17/17 [==============================] - 0s 11ms/step - loss: 0.7946 - accuracy: 0.7688 - scaled_graph_loss: 0.0258
Epoch 12/100

 1/17 [>.............................] - ETA: 0s - loss: 0.7846 - accuracy: 0.8047 - scaled_graph_loss: 0.0252
6/17 [=========>....................] - ETA: 0s - loss: 0.7703 - accuracy: 0.7897 - scaled_graph_loss: 0.0260
11/17 [==================>...........] - ETA: 0s - loss: 0.7648 - accuracy: 0.7851 - scaled_graph_loss: 0.0266
16/17 [===========================>..] - ETA: 0s - loss: 0.7553 - accuracy: 0.7865 - scaled_graph_loss: 0.0271
17/17 [==============================] - 0s 11ms/step - loss: 0.7516 - accuracy: 0.7877 - scaled_graph_loss: 0.0272
Epoch 13/100

 1/17 [>.............................] - ETA: 0s - loss: 0.6676 - accuracy: 0.8828 - scaled_graph_loss: 0.0217
6/17 [=========>....................] - ETA: 0s - loss: 0.6827 - accuracy: 0.8463 - scaled_graph_loss: 0.0255
11/17 [==================>...........] - ETA: 0s - loss: 0.6769 - accuracy: 0.8355 - scaled_graph_loss: 0.0268
16/17 [===========================>..] - ETA: 0s - loss: 0.6728 - accuracy: 0.8300 - scaled_graph_loss: 0.0274
17/17 [==============================] - 0s 12ms/step - loss: 0.6715 - accuracy: 0.8285 - scaled_graph_loss: 0.0276
Epoch 14/100

 1/17 [>.............................] - ETA: 0s - loss: 0.5146 - accuracy: 0.8359 - scaled_graph_loss: 0.0326
6/17 [=========>....................] - ETA: 0s - loss: 0.5826 - accuracy: 0.8202 - scaled_graph_loss: 0.0315
11/17 [==================>...........] - ETA: 0s - loss: 0.6004 - accuracy: 0.8119 - scaled_graph_loss: 0.0315
15/17 [=========================>....] - ETA: 0s - loss: 0.6089 - accuracy: 0.8103 - scaled_graph_loss: 0.0317
17/17 [==============================] - 0s 11ms/step - loss: 0.6117 - accuracy: 0.8109 - scaled_graph_loss: 0.0317
Epoch 15/100

 1/17 [>.............................] - ETA: 0s - loss: 0.6804 - accuracy: 0.8125 - scaled_graph_loss: 0.0310
6/17 [=========>....................] - ETA: 0s - loss: 0.6203 - accuracy: 0.8254 - scaled_graph_loss: 0.0313
11/17 [==================>...........] - ETA: 0s - loss: 0.5888 - accuracy: 0.8329 - scaled_graph_loss: 0.0313
16/17 [===========================>..] - ETA: 0s - loss: 0.5761 - accuracy: 0.8358 - scaled_graph_loss: 0.0313
17/17 [==============================] - 0s 11ms/step - loss: 0.5729 - accuracy: 0.8365 - scaled_graph_loss: 0.0313
Epoch 16/100

 1/17 [>.............................] - ETA: 0s - loss: 0.5374 - accuracy: 0.8359 - scaled_graph_loss: 0.0336
6/17 [=========>....................] - ETA: 0s - loss: 0.5296 - accuracy: 0.8454 - scaled_graph_loss: 0.0331
11/17 [==================>...........] - ETA: 0s - loss: 0.5248 - accuracy: 0.8503 - scaled_graph_loss: 0.0328
16/17 [===========================>..] - ETA: 0s - loss: 0.5215 - accuracy: 0.8518 - scaled_graph_loss: 0.0327
17/17 [==============================] - 0s 12ms/step - loss: 0.5208 - accuracy: 0.8520 - scaled_graph_loss: 0.0327
Epoch 17/100

 1/17 [>.............................] - ETA: 0s - loss: 0.3772 - accuracy: 0.9062 - scaled_graph_loss: 0.0297
6/17 [=========>....................] - ETA: 0s - loss: 0.4469 - accuracy: 0.8845 - scaled_graph_loss: 0.0297
11/17 [==================>...........] - ETA: 0s - loss: 0.4542 - accuracy: 0.8833 - scaled_graph_loss: 0.0300

16/17 [===========================>..] - ETA: 0s - loss: 0.4587 - accuracy: 0.8814 - scaled_graph_loss: 0.0305
17/17 [==============================] - 0s 12ms/step - loss: 0.4611 - accuracy: 0.8802 - scaled_graph_loss: 0.0307
Epoch 18/100

 1/17 [>.............................] - ETA: 0s - loss: 0.4459 - accuracy: 0.9062 - scaled_graph_loss: 0.0365
6/17 [=========>....................] - ETA: 0s - loss: 0.4679 - accuracy: 0.8778 - scaled_graph_loss: 0.0333
11/17 [==================>...........] - ETA: 0s - loss: 0.4599 - accuracy: 0.8790 - scaled_graph_loss: 0.0325
16/17 [===========================>..] - ETA: 0s - loss: 0.4574 - accuracy: 0.8782 - scaled_graph_loss: 0.0324
17/17 [==============================] - 0s 11ms/step - loss: 0.4573 - accuracy: 0.8776 - scaled_graph_loss: 0.0324
Epoch 19/100

 1/17 [>.............................] - ETA: 0s - loss: 0.4161 - accuracy: 0.9219 - scaled_graph_loss: 0.0330
6/17 [=========>....................] - ETA: 0s - loss: 0.3898 - accuracy: 0.9191 - scaled_graph_loss: 0.0327
11/17 [==================>...........] - ETA: 0s - loss: 0.3920 - accuracy: 0.9136 - scaled_graph_loss: 0.0323
16/17 [===========================>..] - ETA: 0s - loss: 0.3951 - accuracy: 0.9091 - scaled_graph_loss: 0.0320
17/17 [==============================] - 0s 11ms/step - loss: 0.3964 - accuracy: 0.9074 - scaled_graph_loss: 0.0320
Epoch 20/100

 1/17 [>.............................] - ETA: 0s - loss: 0.3055 - accuracy: 0.9375 - scaled_graph_loss: 0.0310
6/17 [=========>....................] - ETA: 0s - loss: 0.3672 - accuracy: 0.9171 - scaled_graph_loss: 0.0327
11/17 [==================>...........] - ETA: 0s - loss: 0.3837 - accuracy: 0.9091 - scaled_graph_loss: 0.0338
16/17 [===========================>..] - ETA: 0s - loss: 0.3875 - accuracy: 0.9061 - scaled_graph_loss: 0.0338
17/17 [==============================] - 0s 11ms/step - loss: 0.3887 - accuracy: 0.9051 - scaled_graph_loss: 0.0337
Epoch 21/100

 1/17 [>.............................] - ETA: 0s - loss: 0.3705 - accuracy: 0.9141 - scaled_graph_loss: 0.0344
6/17 [=========>....................] - ETA: 0s - loss: 0.3794 - accuracy: 0.8982 - scaled_graph_loss: 0.0367
11/17 [==================>...........] - ETA: 0s - loss: 0.3866 - accuracy: 0.8983 - scaled_graph_loss: 0.0360
16/17 [===========================>..] - ETA: 0s - loss: 0.3883 - accuracy: 0.8994 - scaled_graph_loss: 0.0352
17/17 [==============================] - 0s 11ms/step - loss: 0.3882 - accuracy: 0.8998 - scaled_graph_loss: 0.0350
Epoch 22/100

 1/17 [>.............................] - ETA: 0s - loss: 0.3212 - accuracy: 0.9141 - scaled_graph_loss: 0.0364
5/17 [=======>......................] - ETA: 0s - loss: 0.3310 - accuracy: 0.9176 - scaled_graph_loss: 0.0356
10/17 [================>.............] - ETA: 0s - loss: 0.3426 - accuracy: 0.9121 - scaled_graph_loss: 0.0349
15/17 [=========================>....] - ETA: 0s - loss: 0.3454 - accuracy: 0.9094 - scaled_graph_loss: 0.0340
17/17 [==============================] - 0s 11ms/step - loss: 0.3457 - accuracy: 0.9086 - scaled_graph_loss: 0.0337
Epoch 23/100

 1/17 [>.............................] - ETA: 0s - loss: 0.4233 - accuracy: 0.9062 - scaled_graph_loss: 0.0333
6/17 [=========>....................] - ETA: 0s - loss: 0.3976 - accuracy: 0.8968 - scaled_graph_loss: 0.0331
11/17 [==================>...........] - ETA: 0s - loss: 0.3773 - accuracy: 0.9006 - scaled_graph_loss: 0.0331
16/17 [===========================>..] - ETA: 0s - loss: 0.3692 - accuracy: 0.9014 - scaled_graph_loss: 0.0332
17/17 [==============================] - 0s 11ms/step - loss: 0.3666 - accuracy: 0.9020 - scaled_graph_loss: 0.0332
Epoch 24/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2855 - accuracy: 0.9453 - scaled_graph_loss: 0.0294
6/17 [=========>....................] - ETA: 0s - loss: 0.3148 - accuracy: 0.9211 - scaled_graph_loss: 0.0320
11/17 [==================>...........] - ETA: 0s - loss: 0.3255 - accuracy: 0.9169 - scaled_graph_loss: 0.0331
16/17 [===========================>..] - ETA: 0s - loss: 0.3258 - accuracy: 0.9173 - scaled_graph_loss: 0.0335
17/17 [==============================] - 0s 11ms/step - loss: 0.3249 - accuracy: 0.9178 - scaled_graph_loss: 0.0336
Epoch 25/100

 1/17 [>.............................] - ETA: 0s - loss: 0.3132 - accuracy: 0.9219 - scaled_graph_loss: 0.0362
6/17 [=========>....................] - ETA: 0s - loss: 0.3215 - accuracy: 0.9072 - scaled_graph_loss: 0.0362
11/17 [==================>...........] - ETA: 0s - loss: 0.3120 - accuracy: 0.9102 - scaled_graph_loss: 0.0351
16/17 [===========================>..] - ETA: 0s - loss: 0.3086 - accuracy: 0.9122 - scaled_graph_loss: 0.0349
17/17 [==============================] - 0s 11ms/step - loss: 0.3070 - accuracy: 0.9131 - scaled_graph_loss: 0.0348
Epoch 26/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2629 - accuracy: 0.9297 - scaled_graph_loss: 0.0284
6/17 [=========>....................] - ETA: 0s - loss: 0.2644 - accuracy: 0.9327 - scaled_graph_loss: 0.0304
11/17 [==================>...........] - ETA: 0s - loss: 0.2685 - accuracy: 0.9336 - scaled_graph_loss: 0.0317
16/17 [===========================>..] - ETA: 0s - loss: 0.2696 - accuracy: 0.9342 - scaled_graph_loss: 0.0321
17/17 [==============================] - 0s 11ms/step - loss: 0.2703 - accuracy: 0.9342 - scaled_graph_loss: 0.0323
Epoch 27/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1986 - accuracy: 0.9844 - scaled_graph_loss: 0.0287
6/17 [=========>....................] - ETA: 0s - loss: 0.2637 - accuracy: 0.9443 - scaled_graph_loss: 0.0351
10/17 [================>.............] - ETA: 0s - loss: 0.2689 - accuracy: 0.9402 - scaled_graph_loss: 0.0351
15/17 [=========================>....] - ETA: 0s - loss: 0.2737 - accuracy: 0.9373 - scaled_graph_loss: 0.0347
17/17 [==============================] - 0s 11ms/step - loss: 0.2743 - accuracy: 0.9369 - scaled_graph_loss: 0.0346
Epoch 28/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2743 - accuracy: 0.9219 - scaled_graph_loss: 0.0310
6/17 [=========>....................] - ETA: 0s - loss: 0.2452 - accuracy: 0.9339 - scaled_graph_loss: 0.0318
11/17 [==================>...........] - ETA: 0s - loss: 0.2521 - accuracy: 0.9327 - scaled_graph_loss: 0.0329
16/17 [===========================>..] - ETA: 0s - loss: 0.2589 - accuracy: 0.9316 - scaled_graph_loss: 0.0334
17/17 [==============================] - 0s 11ms/step - loss: 0.2609 - accuracy: 0.9313 - scaled_graph_loss: 0.0334
Epoch 29/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2359 - accuracy: 0.9531 - scaled_graph_loss: 0.0367
6/17 [=========>....................] - ETA: 0s - loss: 0.2561 - accuracy: 0.9312 - scaled_graph_loss: 0.0341
11/17 [==================>...........] - ETA: 0s - loss: 0.2586 - accuracy: 0.9320 - scaled_graph_loss: 0.0337
16/17 [===========================>..] - ETA: 0s - loss: 0.2570 - accuracy: 0.9346 - scaled_graph_loss: 0.0335
17/17 [==============================] - 0s 12ms/step - loss: 0.2561 - accuracy: 0.9355 - scaled_graph_loss: 0.0334
Epoch 30/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2022 - accuracy: 0.9688 - scaled_graph_loss: 0.0306
6/17 [=========>....................] - ETA: 0s - loss: 0.2207 - accuracy: 0.9535 - scaled_graph_loss: 0.0308
11/17 [==================>...........] - ETA: 0s - loss: 0.2196 - accuracy: 0.9514 - scaled_graph_loss: 0.0311
15/17 [=========================>....] - ETA: 0s - loss: 0.2207 - accuracy: 0.9498 - scaled_graph_loss: 0.0315
17/17 [==============================] - 0s 11ms/step - loss: 0.2222 - accuracy: 0.9489 - scaled_graph_loss: 0.0318
Epoch 31/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1653 - accuracy: 0.9609 - scaled_graph_loss: 0.0292
6/17 [=========>....................] - ETA: 0s - loss: 0.1894 - accuracy: 0.9555 - scaled_graph_loss: 0.0309
11/17 [==================>...........] - ETA: 0s - loss: 0.1969 - accuracy: 0.9556 - scaled_graph_loss: 0.0314
16/17 [===========================>..] - ETA: 0s - loss: 0.2015 - accuracy: 0.9549 - scaled_graph_loss: 0.0322
17/17 [==============================] - 0s 11ms/step - loss: 0.2030 - accuracy: 0.9545 - scaled_graph_loss: 0.0324
Epoch 32/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2314 - accuracy: 0.9375 - scaled_graph_loss: 0.0298
6/17 [=========>....................] - ETA: 0s - loss: 0.2389 - accuracy: 0.9380 - scaled_graph_loss: 0.0321
11/17 [==================>...........] - ETA: 0s - loss: 0.2330 - accuracy: 0.9407 - scaled_graph_loss: 0.0326
16/17 [===========================>..] - ETA: 0s - loss: 0.2280 - accuracy: 0.9432 - scaled_graph_loss: 0.0329
17/17 [==============================] - 0s 11ms/step - loss: 0.2269 - accuracy: 0.9437 - scaled_graph_loss: 0.0329
Epoch 33/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2279 - accuracy: 0.9453 - scaled_graph_loss: 0.0422
6/17 [=========>....................] - ETA: 0s - loss: 0.2125 - accuracy: 0.9497 - scaled_graph_loss: 0.0366
11/17 [==================>...........] - ETA: 0s - loss: 0.2146 - accuracy: 0.9492 - scaled_graph_loss: 0.0355
16/17 [===========================>..] - ETA: 0s - loss: 0.2140 - accuracy: 0.9495 - scaled_graph_loss: 0.0352
17/17 [==============================] - 0s 11ms/step - loss: 0.2138 - accuracy: 0.9498 - scaled_graph_loss: 0.0351
Epoch 34/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1778 - accuracy: 0.9531 - scaled_graph_loss: 0.0373
6/17 [=========>....................] - ETA: 0s - loss: 0.2178 - accuracy: 0.9476 - scaled_graph_loss: 0.0352
11/17 [==================>...........] - ETA: 0s - loss: 0.2177 - accuracy: 0.9489 - scaled_graph_loss: 0.0349
16/17 [===========================>..] - ETA: 0s - loss: 0.2174 - accuracy: 0.9490 - scaled_graph_loss: 0.0348
17/17 [==============================] - 0s 11ms/step - loss: 0.2171 - accuracy: 0.9490 - scaled_graph_loss: 0.0347
Epoch 35/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2438 - accuracy: 0.9375 - scaled_graph_loss: 0.0338
6/17 [=========>....................] - ETA: 0s - loss: 0.2324 - accuracy: 0.9428 - scaled_graph_loss: 0.0349
11/17 [==================>...........] - ETA: 0s - loss: 0.2186 - accuracy: 0.9486 - scaled_graph_loss: 0.0344
16/17 [===========================>..] - ETA: 0s - loss: 0.2111 - accuracy: 0.9513 - scaled_graph_loss: 0.0343
17/17 [==============================] - 0s 11ms/step - loss: 0.2096 - accuracy: 0.9519 - scaled_graph_loss: 0.0344
Epoch 36/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1968 - accuracy: 0.9609 - scaled_graph_loss: 0.0297
6/17 [=========>....................] - ETA: 0s - loss: 0.2087 - accuracy: 0.9491 - scaled_graph_loss: 0.0336
11/17 [==================>...........] - ETA: 0s - loss: 0.2067 - accuracy: 0.9496 - scaled_graph_loss: 0.0349
16/17 [===========================>..] - ETA: 0s - loss: 0.2046 - accuracy: 0.9511 - scaled_graph_loss: 0.0351
17/17 [==============================] - 0s 11ms/step - loss: 0.2035 - accuracy: 0.9517 - scaled_graph_loss: 0.0350
Epoch 37/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2195 - accuracy: 0.9453 - scaled_graph_loss: 0.0363
6/17 [=========>....................] - ETA: 0s - loss: 0.1875 - accuracy: 0.9544 - scaled_graph_loss: 0.0330
11/17 [==================>...........] - ETA: 0s - loss: 0.1798 - accuracy: 0.9602 - scaled_graph_loss: 0.0326
16/17 [===========================>..] - ETA: 0s - loss: 0.1789 - accuracy: 0.9619 - scaled_graph_loss: 0.0328
17/17 [==============================] - 0s 11ms/step - loss: 0.1795 - accuracy: 0.9619 - scaled_graph_loss: 0.0330
Epoch 38/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1685 - accuracy: 0.9609 - scaled_graph_loss: 0.0400
6/17 [=========>....................] - ETA: 0s - loss: 0.1828 - accuracy: 0.9594 - scaled_graph_loss: 0.0360
11/17 [==================>...........] - ETA: 0s - loss: 0.1820 - accuracy: 0.9602 - scaled_graph_loss: 0.0351
16/17 [===========================>..] - ETA: 0s - loss: 0.1822 - accuracy: 0.9601 - scaled_graph_loss: 0.0347
17/17 [==============================] - 0s 11ms/step - loss: 0.1818 - accuracy: 0.9603 - scaled_graph_loss: 0.0346
Epoch 39/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1815 - accuracy: 0.9531 - scaled_graph_loss: 0.0322
6/17 [=========>....................] - ETA: 0s - loss: 0.1743 - accuracy: 0.9598 - scaled_graph_loss: 0.0325
10/17 [================>.............] - ETA: 0s - loss: 0.1749 - accuracy: 0.9606 - scaled_graph_loss: 0.0335
15/17 [=========================>....] - ETA: 0s - loss: 0.1762 - accuracy: 0.9603 - scaled_graph_loss: 0.0338
17/17 [==============================] - 0s 12ms/step - loss: 0.1778 - accuracy: 0.9596 - scaled_graph_loss: 0.0340
Epoch 40/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2141 - accuracy: 0.9531 - scaled_graph_loss: 0.0357
6/17 [=========>....................] - ETA: 0s - loss: 0.1774 - accuracy: 0.9622 - scaled_graph_loss: 0.0364
11/17 [==================>...........] - ETA: 0s - loss: 0.1778 - accuracy: 0.9604 - scaled_graph_loss: 0.0356
16/17 [===========================>..] - ETA: 0s - loss: 0.1788 - accuracy: 0.9596 - scaled_graph_loss: 0.0350
17/17 [==============================] - 0s 11ms/step - loss: 0.1788 - accuracy: 0.9597 - scaled_graph_loss: 0.0348
Epoch 41/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1363 - accuracy: 0.9922 - scaled_graph_loss: 0.0360
6/17 [=========>....................] - ETA: 0s - loss: 0.1452 - accuracy: 0.9782 - scaled_graph_loss: 0.0327
11/17 [==================>...........] - ETA: 0s - loss: 0.1547 - accuracy: 0.9735 - scaled_graph_loss: 0.0329
16/17 [===========================>..] - ETA: 0s - loss: 0.1595 - accuracy: 0.9705 - scaled_graph_loss: 0.0330
17/17 [==============================] - 0s 11ms/step - loss: 0.1604 - accuracy: 0.9699 - scaled_graph_loss: 0.0332
Epoch 42/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2170 - accuracy: 0.9453 - scaled_graph_loss: 0.0388
6/17 [=========>....................] - ETA: 0s - loss: 0.1811 - accuracy: 0.9610 - scaled_graph_loss: 0.0351
11/17 [==================>...........] - ETA: 0s - loss: 0.1731 - accuracy: 0.9658 - scaled_graph_loss: 0.0356
16/17 [===========================>..] - ETA: 0s - loss: 0.1699 - accuracy: 0.9678 - scaled_graph_loss: 0.0357
17/17 [==============================] - 0s 11ms/step - loss: 0.1692 - accuracy: 0.9682 - scaled_graph_loss: 0.0357
Epoch 43/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1367 - accuracy: 0.9922 - scaled_graph_loss: 0.0321
6/17 [=========>....................] - ETA: 0s - loss: 0.1510 - accuracy: 0.9785 - scaled_graph_loss: 0.0339
11/17 [==================>...........] - ETA: 0s - loss: 0.1502 - accuracy: 0.9767 - scaled_graph_loss: 0.0340
16/17 [===========================>..] - ETA: 0s - loss: 0.1502 - accuracy: 0.9750 - scaled_graph_loss: 0.0341
17/17 [==============================] - 0s 11ms/step - loss: 0.1506 - accuracy: 0.9744 - scaled_graph_loss: 0.0342
Epoch 44/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1790 - accuracy: 0.9766 - scaled_graph_loss: 0.0330
6/17 [=========>....................] - ETA: 0s - loss: 0.1885 - accuracy: 0.9609 - scaled_graph_loss: 0.0351
11/17 [==================>...........] - ETA: 0s - loss: 0.1820 - accuracy: 0.9617 - scaled_graph_loss: 0.0354
16/17 [===========================>..] - ETA: 0s - loss: 0.1772 - accuracy: 0.9627 - scaled_graph_loss: 0.0353
17/17 [==============================] - 0s 11ms/step - loss: 0.1763 - accuracy: 0.9628 - scaled_graph_loss: 0.0352
Epoch 45/100

 1/17 [>.............................] - ETA: 0s - loss: 0.2210 - accuracy: 0.9688 - scaled_graph_loss: 0.0437
6/17 [=========>....................] - ETA: 0s - loss: 0.1930 - accuracy: 0.9647 - scaled_graph_loss: 0.0370
11/17 [==================>...........] - ETA: 0s - loss: 0.1788 - accuracy: 0.9661 - scaled_graph_loss: 0.0359
16/17 [===========================>..] - ETA: 0s - loss: 0.1739 - accuracy: 0.9658 - scaled_graph_loss: 0.0355
17/17 [==============================] - 0s 11ms/step - loss: 0.1721 - accuracy: 0.9657 - scaled_graph_loss: 0.0354
Epoch 46/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0928 - accuracy: 0.9844 - scaled_graph_loss: 0.0226
6/17 [=========>....................] - ETA: 0s - loss: 0.1277 - accuracy: 0.9755 - scaled_graph_loss: 0.0298
11/17 [==================>...........] - ETA: 0s - loss: 0.1347 - accuracy: 0.9737 - scaled_graph_loss: 0.0315
16/17 [===========================>..] - ETA: 0s - loss: 0.1377 - accuracy: 0.9729 - scaled_graph_loss: 0.0323
17/17 [==============================] - 0s 11ms/step - loss: 0.1386 - accuracy: 0.9726 - scaled_graph_loss: 0.0325
Epoch 47/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1282 - accuracy: 0.9688 - scaled_graph_loss: 0.0333
6/17 [=========>....................] - ETA: 0s - loss: 0.1414 - accuracy: 0.9648 - scaled_graph_loss: 0.0322
11/17 [==================>...........] - ETA: 0s - loss: 0.1473 - accuracy: 0.9643 - scaled_graph_loss: 0.0331
16/17 [===========================>..] - ETA: 0s - loss: 0.1461 - accuracy: 0.9664 - scaled_graph_loss: 0.0331
17/17 [==============================] - 0s 12ms/step - loss: 0.1458 - accuracy: 0.9669 - scaled_graph_loss: 0.0332
Epoch 48/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1176 - accuracy: 0.9766 - scaled_graph_loss: 0.0399
6/17 [=========>....................] - ETA: 0s - loss: 0.1104 - accuracy: 0.9869 - scaled_graph_loss: 0.0330
11/17 [==================>...........] - ETA: 0s - loss: 0.1158 - accuracy: 0.9845 - scaled_graph_loss: 0.0331
16/17 [===========================>..] - ETA: 0s - loss: 0.1199 - accuracy: 0.9821 - scaled_graph_loss: 0.0333
17/17 [==============================] - 0s 11ms/step - loss: 0.1211 - accuracy: 0.9815 - scaled_graph_loss: 0.0334
Epoch 49/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1235 - accuracy: 0.9766 - scaled_graph_loss: 0.0351
6/17 [=========>....................] - ETA: 0s - loss: 0.1307 - accuracy: 0.9754 - scaled_graph_loss: 0.0332
11/17 [==================>...........] - ETA: 0s - loss: 0.1272 - accuracy: 0.9782 - scaled_graph_loss: 0.0325
16/17 [===========================>..] - ETA: 0s - loss: 0.1275 - accuracy: 0.9787 - scaled_graph_loss: 0.0325
17/17 [==============================] - 0s 11ms/step - loss: 0.1281 - accuracy: 0.9786 - scaled_graph_loss: 0.0326
Epoch 50/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0950 - accuracy: 1.0000 - scaled_graph_loss: 0.0307
6/17 [=========>....................] - ETA: 0s - loss: 0.1147 - accuracy: 0.9899 - scaled_graph_loss: 0.0331
11/17 [==================>...........] - ETA: 0s - loss: 0.1241 - accuracy: 0.9848 - scaled_graph_loss: 0.0338
16/17 [===========================>..] - ETA: 0s - loss: 0.1277 - accuracy: 0.9822 - scaled_graph_loss: 0.0342
17/17 [==============================] - 0s 11ms/step - loss: 0.1285 - accuracy: 0.9814 - scaled_graph_loss: 0.0343
Epoch 51/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0952 - accuracy: 0.9844 - scaled_graph_loss: 0.0373
6/17 [=========>....................] - ETA: 0s - loss: 0.1222 - accuracy: 0.9770 - scaled_graph_loss: 0.0365
11/17 [==================>...........] - ETA: 0s - loss: 0.1258 - accuracy: 0.9768 - scaled_graph_loss: 0.0358
16/17 [===========================>..] - ETA: 0s - loss: 0.1304 - accuracy: 0.9753 - scaled_graph_loss: 0.0355
17/17 [==============================] - 0s 11ms/step - loss: 0.1317 - accuracy: 0.9748 - scaled_graph_loss: 0.0355
Epoch 52/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1488 - accuracy: 0.9688 - scaled_graph_loss: 0.0392
6/17 [=========>....................] - ETA: 0s - loss: 0.1431 - accuracy: 0.9714 - scaled_graph_loss: 0.0346
11/17 [==================>...........] - ETA: 0s - loss: 0.1431 - accuracy: 0.9707 - scaled_graph_loss: 0.0340
16/17 [===========================>..] - ETA: 0s - loss: 0.1425 - accuracy: 0.9705 - scaled_graph_loss: 0.0342
17/17 [==============================] - 0s 12ms/step - loss: 0.1420 - accuracy: 0.9706 - scaled_graph_loss: 0.0343
Epoch 53/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1613 - accuracy: 0.9688 - scaled_graph_loss: 0.0332
6/17 [=========>....................] - ETA: 0s - loss: 0.1376 - accuracy: 0.9751 - scaled_graph_loss: 0.0337
11/17 [==================>...........] - ETA: 0s - loss: 0.1391 - accuracy: 0.9721 - scaled_graph_loss: 0.0336
16/17 [===========================>..] - ETA: 0s - loss: 0.1396 - accuracy: 0.9715 - scaled_graph_loss: 0.0338
17/17 [==============================] - 0s 12ms/step - loss: 0.1395 - accuracy: 0.9715 - scaled_graph_loss: 0.0338
Epoch 54/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1148 - accuracy: 0.9922 - scaled_graph_loss: 0.0375
6/17 [=========>....................] - ETA: 0s - loss: 0.1235 - accuracy: 0.9808 - scaled_graph_loss: 0.0349
11/17 [==================>...........] - ETA: 0s - loss: 0.1253 - accuracy: 0.9772 - scaled_graph_loss: 0.0354
16/17 [===========================>..] - ETA: 0s - loss: 0.1258 - accuracy: 0.9761 - scaled_graph_loss: 0.0351
17/17 [==============================] - 0s 11ms/step - loss: 0.1260 - accuracy: 0.9758 - scaled_graph_loss: 0.0350
Epoch 55/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0901 - accuracy: 0.9922 - scaled_graph_loss: 0.0258
6/17 [=========>....................] - ETA: 0s - loss: 0.1198 - accuracy: 0.9780 - scaled_graph_loss: 0.0296
11/17 [==================>...........] - ETA: 0s - loss: 0.1243 - accuracy: 0.9776 - scaled_graph_loss: 0.0307
15/17 [=========================>....] - ETA: 0s - loss: 0.1259 - accuracy: 0.9775 - scaled_graph_loss: 0.0316
17/17 [==============================] - 0s 11ms/step - loss: 0.1261 - accuracy: 0.9778 - scaled_graph_loss: 0.0321
Epoch 56/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1181 - accuracy: 0.9844 - scaled_graph_loss: 0.0333
6/17 [=========>....................] - ETA: 0s - loss: 0.1175 - accuracy: 0.9827 - scaled_graph_loss: 0.0342
11/17 [==================>...........] - ETA: 0s - loss: 0.1197 - accuracy: 0.9808 - scaled_graph_loss: 0.0345
16/17 [===========================>..] - ETA: 0s - loss: 0.1203 - accuracy: 0.9796 - scaled_graph_loss: 0.0341
17/17 [==============================] - 0s 11ms/step - loss: 0.1205 - accuracy: 0.9793 - scaled_graph_loss: 0.0341
Epoch 57/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1004 - accuracy: 0.9922 - scaled_graph_loss: 0.0329
6/17 [=========>....................] - ETA: 0s - loss: 0.1079 - accuracy: 0.9832 - scaled_graph_loss: 0.0312
11/17 [==================>...........] - ETA: 0s - loss: 0.1138 - accuracy: 0.9818 - scaled_graph_loss: 0.0330
16/17 [===========================>..] - ETA: 0s - loss: 0.1164 - accuracy: 0.9815 - scaled_graph_loss: 0.0336
17/17 [==============================] - 0s 11ms/step - loss: 0.1170 - accuracy: 0.9814 - scaled_graph_loss: 0.0337
Epoch 58/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1054 - accuracy: 0.9844 - scaled_graph_loss: 0.0415
6/17 [=========>....................] - ETA: 0s - loss: 0.1196 - accuracy: 0.9708 - scaled_graph_loss: 0.0361
11/17 [==================>...........] - ETA: 0s - loss: 0.1212 - accuracy: 0.9706 - scaled_graph_loss: 0.0342
16/17 [===========================>..] - ETA: 0s - loss: 0.1220 - accuracy: 0.9712 - scaled_graph_loss: 0.0338
17/17 [==============================] - 0s 11ms/step - loss: 0.1223 - accuracy: 0.9715 - scaled_graph_loss: 0.0338
Epoch 59/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1173 - accuracy: 0.9688 - scaled_graph_loss: 0.0208
6/17 [=========>....................] - ETA: 0s - loss: 0.1207 - accuracy: 0.9713 - scaled_graph_loss: 0.0311
11/17 [==================>...........] - ETA: 0s - loss: 0.1204 - accuracy: 0.9721 - scaled_graph_loss: 0.0326
16/17 [===========================>..] - ETA: 0s - loss: 0.1185 - accuracy: 0.9734 - scaled_graph_loss: 0.0331
17/17 [==============================] - 0s 11ms/step - loss: 0.1181 - accuracy: 0.9737 - scaled_graph_loss: 0.0332
Epoch 60/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1053 - accuracy: 0.9766 - scaled_graph_loss: 0.0286
6/17 [=========>....................] - ETA: 0s - loss: 0.1044 - accuracy: 0.9840 - scaled_graph_loss: 0.0329
11/17 [==================>...........] - ETA: 0s - loss: 0.1081 - accuracy: 0.9832 - scaled_graph_loss: 0.0334
16/17 [===========================>..] - ETA: 0s - loss: 0.1101 - accuracy: 0.9828 - scaled_graph_loss: 0.0340
17/17 [==============================] - 0s 11ms/step - loss: 0.1104 - accuracy: 0.9827 - scaled_graph_loss: 0.0341
Epoch 61/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0593 - accuracy: 1.0000 - scaled_graph_loss: 0.0302
6/17 [=========>....................] - ETA: 0s - loss: 0.0810 - accuracy: 0.9908 - scaled_graph_loss: 0.0342
11/17 [==================>...........] - ETA: 0s - loss: 0.0864 - accuracy: 0.9870 - scaled_graph_loss: 0.0338
16/17 [===========================>..] - ETA: 0s - loss: 0.0905 - accuracy: 0.9847 - scaled_graph_loss: 0.0339
17/17 [==============================] - 0s 11ms/step - loss: 0.0919 - accuracy: 0.9840 - scaled_graph_loss: 0.0339
Epoch 62/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0795 - accuracy: 0.9844 - scaled_graph_loss: 0.0258
6/17 [=========>....................] - ETA: 0s - loss: 0.0992 - accuracy: 0.9788 - scaled_graph_loss: 0.0308
11/17 [==================>...........] - ETA: 0s - loss: 0.1001 - accuracy: 0.9818 - scaled_graph_loss: 0.0326
16/17 [===========================>..] - ETA: 0s - loss: 0.0999 - accuracy: 0.9835 - scaled_graph_loss: 0.0330
17/17 [==============================] - 0s 11ms/step - loss: 0.0999 - accuracy: 0.9838 - scaled_graph_loss: 0.0331
Epoch 63/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0849 - accuracy: 0.9844 - scaled_graph_loss: 0.0286
6/17 [=========>....................] - ETA: 0s - loss: 0.0960 - accuracy: 0.9860 - scaled_graph_loss: 0.0329
11/17 [==================>...........] - ETA: 0s - loss: 0.1044 - accuracy: 0.9844 - scaled_graph_loss: 0.0337
16/17 [===========================>..] - ETA: 0s - loss: 0.1072 - accuracy: 0.9835 - scaled_graph_loss: 0.0339
17/17 [==============================] - 0s 11ms/step - loss: 0.1078 - accuracy: 0.9833 - scaled_graph_loss: 0.0339
Epoch 64/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0896 - accuracy: 0.9844 - scaled_graph_loss: 0.0241
6/17 [=========>....................] - ETA: 0s - loss: 0.0899 - accuracy: 0.9877 - scaled_graph_loss: 0.0299
11/17 [==================>...........] - ETA: 0s - loss: 0.0968 - accuracy: 0.9859 - scaled_graph_loss: 0.0318
16/17 [===========================>..] - ETA: 0s - loss: 0.0991 - accuracy: 0.9855 - scaled_graph_loss: 0.0323
17/17 [==============================] - 0s 11ms/step - loss: 0.0994 - accuracy: 0.9854 - scaled_graph_loss: 0.0324
Epoch 65/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0885 - accuracy: 0.9922 - scaled_graph_loss: 0.0296
6/17 [=========>....................] - ETA: 0s - loss: 0.0995 - accuracy: 0.9829 - scaled_graph_loss: 0.0349
11/17 [==================>...........] - ETA: 0s - loss: 0.1013 - accuracy: 0.9823 - scaled_graph_loss: 0.0356
16/17 [===========================>..] - ETA: 0s - loss: 0.1017 - accuracy: 0.9820 - scaled_graph_loss: 0.0356
17/17 [==============================] - 0s 11ms/step - loss: 0.1016 - accuracy: 0.9820 - scaled_graph_loss: 0.0355
Epoch 66/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0967 - accuracy: 0.9844 - scaled_graph_loss: 0.0367
6/17 [=========>....................] - ETA: 0s - loss: 0.0957 - accuracy: 0.9870 - scaled_graph_loss: 0.0321
11/17 [==================>...........] - ETA: 0s - loss: 0.0960 - accuracy: 0.9863 - scaled_graph_loss: 0.0322
16/17 [===========================>..] - ETA: 0s - loss: 0.0961 - accuracy: 0.9861 - scaled_graph_loss: 0.0326
17/17 [==============================] - 0s 11ms/step - loss: 0.0962 - accuracy: 0.9859 - scaled_graph_loss: 0.0327
Epoch 67/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0854 - accuracy: 0.9922 - scaled_graph_loss: 0.0402
6/17 [=========>....................] - ETA: 0s - loss: 0.0963 - accuracy: 0.9889 - scaled_graph_loss: 0.0365
11/17 [==================>...........] - ETA: 0s - loss: 0.0990 - accuracy: 0.9856 - scaled_graph_loss: 0.0346
16/17 [===========================>..] - ETA: 0s - loss: 0.0997 - accuracy: 0.9848 - scaled_graph_loss: 0.0345
17/17 [==============================] - 0s 11ms/step - loss: 0.0999 - accuracy: 0.9846 - scaled_graph_loss: 0.0345
Epoch 68/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1096 - accuracy: 0.9844 - scaled_graph_loss: 0.0275
6/17 [=========>....................] - ETA: 0s - loss: 0.1051 - accuracy: 0.9829 - scaled_graph_loss: 0.0336
11/17 [==================>...........] - ETA: 0s - loss: 0.1030 - accuracy: 0.9831 - scaled_graph_loss: 0.0333
16/17 [===========================>..] - ETA: 0s - loss: 0.1032 - accuracy: 0.9824 - scaled_graph_loss: 0.0333
17/17 [==============================] - 0s 11ms/step - loss: 0.1032 - accuracy: 0.9823 - scaled_graph_loss: 0.0333
Epoch 69/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1295 - accuracy: 0.9766 - scaled_graph_loss: 0.0352
6/17 [=========>....................] - ETA: 0s - loss: 0.1036 - accuracy: 0.9838 - scaled_graph_loss: 0.0342
11/17 [==================>...........] - ETA: 0s - loss: 0.1047 - accuracy: 0.9830 - scaled_graph_loss: 0.0352
16/17 [===========================>..] - ETA: 0s - loss: 0.1038 - accuracy: 0.9827 - scaled_graph_loss: 0.0350
17/17 [==============================] - 0s 11ms/step - loss: 0.1035 - accuracy: 0.9828 - scaled_graph_loss: 0.0349
Epoch 70/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0942 - accuracy: 0.9922 - scaled_graph_loss: 0.0355
6/17 [=========>....................] - ETA: 0s - loss: 0.1045 - accuracy: 0.9850 - scaled_graph_loss: 0.0353
11/17 [==================>...........] - ETA: 0s - loss: 0.1053 - accuracy: 0.9832 - scaled_graph_loss: 0.0348
16/17 [===========================>..] - ETA: 0s - loss: 0.1055 - accuracy: 0.9828 - scaled_graph_loss: 0.0345
17/17 [==============================] - 0s 11ms/step - loss: 0.1052 - accuracy: 0.9828 - scaled_graph_loss: 0.0344
Epoch 71/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0961 - accuracy: 0.9922 - scaled_graph_loss: 0.0275
6/17 [=========>....................] - ETA: 0s - loss: 0.0960 - accuracy: 0.9870 - scaled_graph_loss: 0.0312
11/17 [==================>...........] - ETA: 0s - loss: 0.0938 - accuracy: 0.9873 - scaled_graph_loss: 0.0324
16/17 [===========================>..] - ETA: 0s - loss: 0.0925 - accuracy: 0.9873 - scaled_graph_loss: 0.0329
17/17 [==============================] - 0s 11ms/step - loss: 0.0921 - accuracy: 0.9874 - scaled_graph_loss: 0.0329
Epoch 72/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0762 - accuracy: 0.9922 - scaled_graph_loss: 0.0359
6/17 [=========>....................] - ETA: 0s - loss: 0.0814 - accuracy: 0.9913 - scaled_graph_loss: 0.0342
11/17 [==================>...........] - ETA: 0s - loss: 0.0862 - accuracy: 0.9886 - scaled_graph_loss: 0.0340
16/17 [===========================>..] - ETA: 0s - loss: 0.0899 - accuracy: 0.9870 - scaled_graph_loss: 0.0344
17/17 [==============================] - 0s 11ms/step - loss: 0.0907 - accuracy: 0.9867 - scaled_graph_loss: 0.0344
Epoch 73/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0951 - accuracy: 0.9922 - scaled_graph_loss: 0.0381
6/17 [=========>....................] - ETA: 0s - loss: 0.1009 - accuracy: 0.9842 - scaled_graph_loss: 0.0346
11/17 [==================>...........] - ETA: 0s - loss: 0.0991 - accuracy: 0.9843 - scaled_graph_loss: 0.0344
16/17 [===========================>..] - ETA: 0s - loss: 0.0984 - accuracy: 0.9849 - scaled_graph_loss: 0.0344
17/17 [==============================] - 0s 11ms/step - loss: 0.0982 - accuracy: 0.9851 - scaled_graph_loss: 0.0344
Epoch 74/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0709 - accuracy: 0.9844 - scaled_graph_loss: 0.0286
6/17 [=========>....................] - ETA: 0s - loss: 0.0795 - accuracy: 0.9844 - scaled_graph_loss: 0.0305
11/17 [==================>...........] - ETA: 0s - loss: 0.0859 - accuracy: 0.9827 - scaled_graph_loss: 0.0314
16/17 [===========================>..] - ETA: 0s - loss: 0.0887 - accuracy: 0.9818 - scaled_graph_loss: 0.0318
17/17 [==============================] - 0s 11ms/step - loss: 0.0892 - accuracy: 0.9817 - scaled_graph_loss: 0.0319
Epoch 75/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0960 - accuracy: 0.9922 - scaled_graph_loss: 0.0311
6/17 [=========>....................] - ETA: 0s - loss: 0.0959 - accuracy: 0.9875 - scaled_graph_loss: 0.0338
11/17 [==================>...........] - ETA: 0s - loss: 0.0974 - accuracy: 0.9841 - scaled_graph_loss: 0.0346
16/17 [===========================>..] - ETA: 0s - loss: 0.0966 - accuracy: 0.9837 - scaled_graph_loss: 0.0345
17/17 [==============================] - 0s 11ms/step - loss: 0.0966 - accuracy: 0.9835 - scaled_graph_loss: 0.0345
Epoch 76/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0602 - accuracy: 1.0000 - scaled_graph_loss: 0.0331
6/17 [=========>....................] - ETA: 0s - loss: 0.0786 - accuracy: 0.9923 - scaled_graph_loss: 0.0339
11/17 [==================>...........] - ETA: 0s - loss: 0.0842 - accuracy: 0.9902 - scaled_graph_loss: 0.0338
16/17 [===========================>..] - ETA: 0s - loss: 0.0879 - accuracy: 0.9891 - scaled_graph_loss: 0.0338
17/17 [==============================] - 0s 11ms/step - loss: 0.0888 - accuracy: 0.9888 - scaled_graph_loss: 0.0339
Epoch 77/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1211 - accuracy: 0.9766 - scaled_graph_loss: 0.0297
6/17 [=========>....................] - ETA: 0s - loss: 0.1032 - accuracy: 0.9780 - scaled_graph_loss: 0.0300
11/17 [==================>...........] - ETA: 0s - loss: 0.1027 - accuracy: 0.9788 - scaled_graph_loss: 0.0317
16/17 [===========================>..] - ETA: 0s - loss: 0.1024 - accuracy: 0.9796 - scaled_graph_loss: 0.0328
17/17 [==============================] - 0s 11ms/step - loss: 0.1019 - accuracy: 0.9800 - scaled_graph_loss: 0.0330
Epoch 78/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0729 - accuracy: 0.9844 - scaled_graph_loss: 0.0264
6/17 [=========>....................] - ETA: 0s - loss: 0.0913 - accuracy: 0.9782 - scaled_graph_loss: 0.0320
11/17 [==================>...........] - ETA: 0s - loss: 0.0930 - accuracy: 0.9791 - scaled_graph_loss: 0.0329
16/17 [===========================>..] - ETA: 0s - loss: 0.0933 - accuracy: 0.9802 - scaled_graph_loss: 0.0334
17/17 [==============================] - 0s 11ms/step - loss: 0.0931 - accuracy: 0.9806 - scaled_graph_loss: 0.0334
Epoch 79/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0906 - accuracy: 0.9844 - scaled_graph_loss: 0.0449
6/17 [=========>....................] - ETA: 0s - loss: 0.0888 - accuracy: 0.9836 - scaled_graph_loss: 0.0383
11/17 [==================>...........] - ETA: 0s - loss: 0.0878 - accuracy: 0.9843 - scaled_graph_loss: 0.0360
16/17 [===========================>..] - ETA: 0s - loss: 0.0865 - accuracy: 0.9847 - scaled_graph_loss: 0.0352
17/17 [==============================] - 0s 11ms/step - loss: 0.0862 - accuracy: 0.9848 - scaled_graph_loss: 0.0351
Epoch 80/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0865 - accuracy: 0.9922 - scaled_graph_loss: 0.0212
6/17 [=========>....................] - ETA: 0s - loss: 0.0800 - accuracy: 0.9897 - scaled_graph_loss: 0.0308
11/17 [==================>...........] - ETA: 0s - loss: 0.0839 - accuracy: 0.9875 - scaled_graph_loss: 0.0317
16/17 [===========================>..] - ETA: 0s - loss: 0.0846 - accuracy: 0.9872 - scaled_graph_loss: 0.0320
17/17 [==============================] - 0s 11ms/step - loss: 0.0852 - accuracy: 0.9870 - scaled_graph_loss: 0.0321
Epoch 81/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0965 - accuracy: 0.9922 - scaled_graph_loss: 0.0325
6/17 [=========>....................] - ETA: 0s - loss: 0.0940 - accuracy: 0.9876 - scaled_graph_loss: 0.0333
11/17 [==================>...........] - ETA: 0s - loss: 0.0929 - accuracy: 0.9849 - scaled_graph_loss: 0.0342
16/17 [===========================>..] - ETA: 0s - loss: 0.0928 - accuracy: 0.9840 - scaled_graph_loss: 0.0344
17/17 [==============================] - 0s 11ms/step - loss: 0.0927 - accuracy: 0.9837 - scaled_graph_loss: 0.0344
Epoch 82/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1080 - accuracy: 0.9766 - scaled_graph_loss: 0.0468
6/17 [=========>....................] - ETA: 0s - loss: 0.1017 - accuracy: 0.9788 - scaled_graph_loss: 0.0404
11/17 [==================>...........] - ETA: 0s - loss: 0.0991 - accuracy: 0.9808 - scaled_graph_loss: 0.0387
16/17 [===========================>..] - ETA: 0s - loss: 0.0961 - accuracy: 0.9822 - scaled_graph_loss: 0.0374
17/17 [==============================] - 0s 11ms/step - loss: 0.0954 - accuracy: 0.9826 - scaled_graph_loss: 0.0370
Epoch 83/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0816 - accuracy: 0.9922 - scaled_graph_loss: 0.0392
6/17 [=========>....................] - ETA: 0s - loss: 0.0822 - accuracy: 0.9897 - scaled_graph_loss: 0.0338
11/17 [==================>...........] - ETA: 0s - loss: 0.0821 - accuracy: 0.9900 - scaled_graph_loss: 0.0333
16/17 [===========================>..] - ETA: 0s - loss: 0.0811 - accuracy: 0.9904 - scaled_graph_loss: 0.0333
17/17 [==============================] - 0s 11ms/step - loss: 0.0810 - accuracy: 0.9904 - scaled_graph_loss: 0.0333
Epoch 84/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0945 - accuracy: 0.9844 - scaled_graph_loss: 0.0242
6/17 [=========>....................] - ETA: 0s - loss: 0.0782 - accuracy: 0.9880 - scaled_graph_loss: 0.0264
11/17 [==================>...........] - ETA: 0s - loss: 0.0802 - accuracy: 0.9877 - scaled_graph_loss: 0.0285
16/17 [===========================>..] - ETA: 0s - loss: 0.0823 - accuracy: 0.9874 - scaled_graph_loss: 0.0300
17/17 [==============================] - 0s 11ms/step - loss: 0.0827 - accuracy: 0.9874 - scaled_graph_loss: 0.0304
Epoch 85/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0836 - accuracy: 0.9922 - scaled_graph_loss: 0.0280
6/17 [=========>....................] - ETA: 0s - loss: 0.0927 - accuracy: 0.9861 - scaled_graph_loss: 0.0318
11/17 [==================>...........] - ETA: 0s - loss: 0.0914 - accuracy: 0.9852 - scaled_graph_loss: 0.0326
16/17 [===========================>..] - ETA: 0s - loss: 0.0903 - accuracy: 0.9853 - scaled_graph_loss: 0.0329
17/17 [==============================] - 0s 11ms/step - loss: 0.0898 - accuracy: 0.9854 - scaled_graph_loss: 0.0330
Epoch 86/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0460 - accuracy: 1.0000 - scaled_graph_loss: 0.0298
6/17 [=========>....................] - ETA: 0s - loss: 0.0707 - accuracy: 0.9898 - scaled_graph_loss: 0.0320
11/17 [==================>...........] - ETA: 0s - loss: 0.0793 - accuracy: 0.9870 - scaled_graph_loss: 0.0327
16/17 [===========================>..] - ETA: 0s - loss: 0.0823 - accuracy: 0.9865 - scaled_graph_loss: 0.0331
17/17 [==============================] - 0s 11ms/step - loss: 0.0829 - accuracy: 0.9864 - scaled_graph_loss: 0.0332
Epoch 87/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0676 - accuracy: 0.9922 - scaled_graph_loss: 0.0308
6/17 [=========>....................] - ETA: 0s - loss: 0.0769 - accuracy: 0.9902 - scaled_graph_loss: 0.0328
11/17 [==================>...........] - ETA: 0s - loss: 0.0783 - accuracy: 0.9897 - scaled_graph_loss: 0.0338
16/17 [===========================>..] - ETA: 0s - loss: 0.0784 - accuracy: 0.9893 - scaled_graph_loss: 0.0336
17/17 [==============================] - 0s 11ms/step - loss: 0.0784 - accuracy: 0.9893 - scaled_graph_loss: 0.0336
Epoch 88/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1109 - accuracy: 0.9688 - scaled_graph_loss: 0.0303
6/17 [=========>....................] - ETA: 0s - loss: 0.0875 - accuracy: 0.9849 - scaled_graph_loss: 0.0321
11/17 [==================>...........] - ETA: 0s - loss: 0.0834 - accuracy: 0.9868 - scaled_graph_loss: 0.0315
16/17 [===========================>..] - ETA: 0s - loss: 0.0815 - accuracy: 0.9875 - scaled_graph_loss: 0.0319
17/17 [==============================] - 0s 11ms/step - loss: 0.0811 - accuracy: 0.9876 - scaled_graph_loss: 0.0321
Epoch 89/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0753 - accuracy: 0.9922 - scaled_graph_loss: 0.0217
6/17 [=========>....................] - ETA: 0s - loss: 0.0795 - accuracy: 0.9907 - scaled_graph_loss: 0.0296
11/17 [==================>...........] - ETA: 0s - loss: 0.0809 - accuracy: 0.9893 - scaled_graph_loss: 0.0316
16/17 [===========================>..] - ETA: 0s - loss: 0.0812 - accuracy: 0.9888 - scaled_graph_loss: 0.0325
17/17 [==============================] - 0s 11ms/step - loss: 0.0811 - accuracy: 0.9887 - scaled_graph_loss: 0.0327
Epoch 90/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0914 - accuracy: 0.9844 - scaled_graph_loss: 0.0412
6/17 [=========>....................] - ETA: 0s - loss: 0.0856 - accuracy: 0.9848 - scaled_graph_loss: 0.0363
11/17 [==================>...........] - ETA: 0s - loss: 0.0825 - accuracy: 0.9854 - scaled_graph_loss: 0.0346
16/17 [===========================>..] - ETA: 0s - loss: 0.0815 - accuracy: 0.9856 - scaled_graph_loss: 0.0343
17/17 [==============================] - 0s 11ms/step - loss: 0.0813 - accuracy: 0.9856 - scaled_graph_loss: 0.0342
Epoch 91/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0812 - accuracy: 0.9922 - scaled_graph_loss: 0.0357
6/17 [=========>....................] - ETA: 0s - loss: 0.0689 - accuracy: 0.9929 - scaled_graph_loss: 0.0330
11/17 [==================>...........] - ETA: 0s - loss: 0.0709 - accuracy: 0.9912 - scaled_graph_loss: 0.0329
16/17 [===========================>..] - ETA: 0s - loss: 0.0750 - accuracy: 0.9900 - scaled_graph_loss: 0.0331
17/17 [==============================] - 0s 11ms/step - loss: 0.0765 - accuracy: 0.9896 - scaled_graph_loss: 0.0333
Epoch 92/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0862 - accuracy: 0.9766 - scaled_graph_loss: 0.0312
6/17 [=========>....................] - ETA: 0s - loss: 0.0872 - accuracy: 0.9798 - scaled_graph_loss: 0.0360
11/17 [==================>...........] - ETA: 0s - loss: 0.0880 - accuracy: 0.9811 - scaled_graph_loss: 0.0344
16/17 [===========================>..] - ETA: 0s - loss: 0.0887 - accuracy: 0.9812 - scaled_graph_loss: 0.0342
17/17 [==============================] - 0s 11ms/step - loss: 0.0888 - accuracy: 0.9814 - scaled_graph_loss: 0.0342
Epoch 93/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0543 - accuracy: 1.0000 - scaled_graph_loss: 0.0335
6/17 [=========>....................] - ETA: 0s - loss: 0.0659 - accuracy: 0.9885 - scaled_graph_loss: 0.0317
11/17 [==================>...........] - ETA: 0s - loss: 0.0733 - accuracy: 0.9858 - scaled_graph_loss: 0.0322
16/17 [===========================>..] - ETA: 0s - loss: 0.0784 - accuracy: 0.9845 - scaled_graph_loss: 0.0328
17/17 [==============================] - 0s 11ms/step - loss: 0.0796 - accuracy: 0.9843 - scaled_graph_loss: 0.0329
Epoch 94/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0891 - accuracy: 0.9844 - scaled_graph_loss: 0.0377
6/17 [=========>....................] - ETA: 0s - loss: 0.0795 - accuracy: 0.9837 - scaled_graph_loss: 0.0329
11/17 [==================>...........] - ETA: 0s - loss: 0.0780 - accuracy: 0.9852 - scaled_graph_loss: 0.0329
16/17 [===========================>..] - ETA: 0s - loss: 0.0784 - accuracy: 0.9857 - scaled_graph_loss: 0.0331
17/17 [==============================] - 0s 11ms/step - loss: 0.0784 - accuracy: 0.9859 - scaled_graph_loss: 0.0333
Epoch 95/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0768 - accuracy: 0.9922 - scaled_graph_loss: 0.0293
6/17 [=========>....................] - ETA: 0s - loss: 0.0810 - accuracy: 0.9905 - scaled_graph_loss: 0.0332
11/17 [==================>...........] - ETA: 0s - loss: 0.0831 - accuracy: 0.9888 - scaled_graph_loss: 0.0334
16/17 [===========================>..] - ETA: 0s - loss: 0.0839 - accuracy: 0.9883 - scaled_graph_loss: 0.0332
17/17 [==============================] - 0s 11ms/step - loss: 0.0842 - accuracy: 0.9882 - scaled_graph_loss: 0.0332
Epoch 96/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0622 - accuracy: 1.0000 - scaled_graph_loss: 0.0283
6/17 [=========>....................] - ETA: 0s - loss: 0.0642 - accuracy: 0.9975 - scaled_graph_loss: 0.0307
11/17 [==================>...........] - ETA: 0s - loss: 0.0712 - accuracy: 0.9936 - scaled_graph_loss: 0.0328
16/17 [===========================>..] - ETA: 0s - loss: 0.0732 - accuracy: 0.9924 - scaled_graph_loss: 0.0336
17/17 [==============================] - 0s 11ms/step - loss: 0.0739 - accuracy: 0.9920 - scaled_graph_loss: 0.0337
Epoch 97/100

 1/17 [>.............................] - ETA: 0s - loss: 0.1011 - accuracy: 0.9688 - scaled_graph_loss: 0.0368
6/17 [=========>....................] - ETA: 0s - loss: 0.0876 - accuracy: 0.9803 - scaled_graph_loss: 0.0369
10/17 [================>.............] - ETA: 0s - loss: 0.0833 - accuracy: 0.9833 - scaled_graph_loss: 0.0358
15/17 [=========================>....] - ETA: 0s - loss: 0.0819 - accuracy: 0.9850 - scaled_graph_loss: 0.0351
17/17 [==============================] - 0s 12ms/step - loss: 0.0810 - accuracy: 0.9857 - scaled_graph_loss: 0.0347
Epoch 98/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0850 - accuracy: 0.9922 - scaled_graph_loss: 0.0397
6/17 [=========>....................] - ETA: 0s - loss: 0.0867 - accuracy: 0.9889 - scaled_graph_loss: 0.0369
11/17 [==================>...........] - ETA: 0s - loss: 0.0870 - accuracy: 0.9877 - scaled_graph_loss: 0.0361
16/17 [===========================>..] - ETA: 0s - loss: 0.0862 - accuracy: 0.9872 - scaled_graph_loss: 0.0357
17/17 [==============================] - 0s 11ms/step - loss: 0.0856 - accuracy: 0.9871 - scaled_graph_loss: 0.0356
Epoch 99/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0718 - accuracy: 0.9922 - scaled_graph_loss: 0.0202
6/17 [=========>....................] - ETA: 0s - loss: 0.0782 - accuracy: 0.9890 - scaled_graph_loss: 0.0275
11/17 [==================>...........] - ETA: 0s - loss: 0.0782 - accuracy: 0.9885 - scaled_graph_loss: 0.0287
16/17 [===========================>..] - ETA: 0s - loss: 0.0803 - accuracy: 0.9880 - scaled_graph_loss: 0.0301
17/17 [==============================] - 0s 11ms/step - loss: 0.0810 - accuracy: 0.9879 - scaled_graph_loss: 0.0305
Epoch 100/100

 1/17 [>.............................] - ETA: 0s - loss: 0.0668 - accuracy: 0.9922 - scaled_graph_loss: 0.0353
6/17 [=========>....................] - ETA: 0s - loss: 0.0727 - accuracy: 0.9888 - scaled_graph_loss: 0.0348
11/17 [==================>...........] - ETA: 0s - loss: 0.0734 - accuracy: 0.9881 - scaled_graph_loss: 0.0341
16/17 [===========================>..] - ETA: 0s - loss: 0.0736 - accuracy: 0.9881 - scaled_graph_loss: 0.0339
17/17 [==============================] - 0s 11ms/step - loss: 0.0735 - accuracy: 0.9882 - scaled_graph_loss: 0.0339
<tensorflow.python.keras.callbacks.History at 0x7fc8206484a8>

그래프 정규화로 MLP 모델 평가하기

eval_results = dict(
    zip(graph_reg_model.metrics_names,
        graph_reg_model.evaluate(test_dataset, steps=HPARAMS.eval_steps)))
print_metrics('MLP + graph regularization', eval_results)
1/Unknown - 0s 200ms/step - loss: 1.3113 - accuracy: 0.7734
5/5 [==============================] - 0s 8ms/step - loss: 1.3513 - accuracy: 0.7946
Eval accuracy for  MLP + graph regularization :  0.8010849952697754
Eval loss for  MLP + graph regularization :  1.349246859550476

그래프 정규화 모델의 정확성은 기본 모델(base_model)보다 약 2~3% 높습니다.

결론

Neural Structured Learning(NSL) 프레임워크를 사용하여 자연 인용 그래프(Cora)에서 문서 분류를 위해 그래프 정규화를 사용하는 방법을 시연했습니다. 고급 튜토리얼에는 그래프 정규화로 신경망을 훈련하기 전에 샘플 임베딩을 기반으로 그래프를 합성하는 것이 포함됩니다. 이 접근 방식은 입력에 명시적 그래프가 포함되지 않은 경우 유용합니다.

사용자가 감독의 양을 변경하고 그래프 정규화를 위해 다양한 신경 아키텍처를 시도하여 추가 실험을 할 것을 권장합니다.