FC2カウンター FPGAの部屋 Vitis-AI
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる4

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる3”の続き。

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる3”では、7 の数字の認識だけやったので、時分で書いた手書き数字はどのくらい認識できるか?試してみたところ、8 と 9 の推論が間違っていた。

用意した手書き数字を示す。使用するのは黒地に白文字の n0.bmp 〜 n9.bmp までだ。
Custom_OP_Workflow_53_221211.png

手書き数字を KV260 の Petalinux 2022.1 の ~/tensorflow2_example/handwriting ディレクトリにアップロードした。

カスタム OP デモを実行ための環境を設定する。
cd ~/kv260_median/dpu
sudo mkdir -p /run/media/mmcblk0p1/
sudo cp dpu.xclbin /run/media/mmcblk0p1/
sudo xmutil unloadapp
sudo xmutil loadapp dpuprj
cd ~/tensorflow2_example/deployment/cpp


カスタム OP デモを実行した。
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n0.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n1.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n2.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n3.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n4.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n5.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n6.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n7.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n8.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n9.bmp

xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n0.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n0.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:30:44.679307  1273 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n0.bmp result:
    score[0]   =  0.992188    
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0           
    score[4]   =  0           
    score[5]   =  0           
    score[6]   =  0.0390625   
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n1.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n1.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:30:54.338976  1282 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n1.bmp result:
    score[0]   =  0           
    score[1]   =  0.992188    
    score[2]   =  0.0859375   
    score[3]   =  0           
    score[4]   =  0           
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0.210938    
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n2.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n2.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:30:59.285208  1287 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n2.bmp result:
    score[0]   =  0.164062    
    score[1]   =  0           
    score[2]   =  0.210938    
    score[3]   =  0           
    score[4]   =  0           
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0.25        
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n3.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n3.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:15.731254  1300 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n3.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0.992188    
    score[4]   =  0           
    score[5]   =  0.164062    
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n4.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n4.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:20.559351  1305 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n4.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0.0390625   
    score[3]   =  0           
    score[4]   =  0.789062    
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0.5         
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n5.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n5.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:26.883575  1310 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n5.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0.125       
    score[4]   =  0           
    score[5]   =  0.992188    
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n6.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n6.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:31.589458  1315 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n6.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0           
    score[4]   =  0.414062    
    score[5]   =  0.125       
    score[6]   =  0.585938    
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n7.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n7.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:39.147933  1324 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n7.bmp result:
    score[0]   =  0           
    score[1]   =  0.414062    
    score[2]   =  0           
    score[3]   =  0           
    score[4]   =  0.289062    
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0.625       
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n8.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n8.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:54.020833  1337 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n8.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0.460938    
    score[4]   =  0.5         
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0.335938    
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n9.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n9.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:32:02.205699  1342 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n9.bmp result:
    score[0]   =  0           
    score[1]   =  0.210938    
    score[2]   =  0           
    score[3]   =  0.375       
    score[4]   =  0           
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           


手書き数字、8 と 9 の推論が外れている。
精度は 8 / 10 = 0.8 で 80 % の精度ということができる。
  1. 2022年12月12日 04:00 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する5

自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する4”の続き。

自作の白線間走行用 CNN を Vitis-AI の Custom OP WorkFlow で実行する1”のソースコードだが、”白線間走行用CNNをKerasで学習する”を見ると、配列の次元の位置を変えるには transpose じゃなくて reshape のようだったので、ソースコードを変更した。

変更した train_eval_line.py を貼っておく。

# Copyright 2019 Xilinx Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# train_eval_line.py
# 2022/12/05 : modified by marsee
# 2022/12/08 : modified by marsee

import os, sys
import numpy as np
import tensorflow as tf
import argparse

print(tf.__version__)

os.environ["CUDA_VISIBLE_DEVICES"] = "0"

from curve_dataset import load_mnist
from tensorflow.keras import utils as np_utils

parser = argparse.ArgumentParser(description='tensorflow 2 custom op example.')
parser.add_argument('--eval_only', type=bool, default=False, help='if only evaluate model')
parser.add_argument('--quant', type=bool, default=False, help='if evluate quantized model')

args = parser.parse_args()


class Mylayer(tf.keras.layers.Layer):
  def __init__(self, name="custom_layer", **kwargs):
    super().__init__(name=name, **kwargs)
    self.prelu = tf.keras.layers.PReLU()

  def call(self, inputs, training=None, mask=None):
    x = self.prelu(inputs)
    return x

custom_objects = {"Mylayer": Mylayer}

def build_model():
  inputs = tf.keras.Input((10, 56, 1))
  x = tf.keras.layers.Conv2D(2, (5, 5), activation='relu')(inputs)

  x = tf.keras.layers.MaxPooling2D((2, 2), (2, 2))(x)

  my_model = Mylayer()
  x = my_model(x)

  x = tf.keras.layers.Flatten()(x)
  x = tf.keras.layers.Dense(100, activation='relu')(x)
  x = tf.keras.layers.Dense(3, activation='softmax')(x)

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

def main():
  #################################
  ###### build dataset
  #################################
  (x_train, y_train), (x_test, y_test) = load_mnist(normalize=False, flatten=False)
  trainzip = list(zip(y_train, x_train))
  np.random.shuffle(trainzip)
  y_train, x_train = zip(*trainzip)
  x_train = np.asarray(x_train)
  y_train = np.asarray(y_train)

  testzip = list(zip(y_test, x_test))
  np.random.shuffle(testzip)
  y_test, x_test = zip(*testzip)
  x_test = np.asarray(x_test)
  y_test = np.asarray(y_test)

  x_train = x_train.reshape(x_train.shape[0], 10, 56, 1)
  x_test = x_test.reshape(x_test.shape[0], 10, 56, 1)
  
  x_train = x_train.astype('float32')
  x_test = x_test.astype('float32')
  x_train /= 255
  x_test /= 255

  y_train = y_train.astype('int32')
  y_test = y_test.astype('int32')
  y_train = np_utils.to_categorical(y_train, 3)
  y_test =  np_utils.to_categorical(y_test, 3)

  #################################
  ##### evaluate model
  #################################
  if args.eval_only:
    if args.quant:
      from tensorflow_model_optimization.quantization.keras import vitis_quantize
      # quantized_model = tf.keras.models.load_model("./quantized/quantized.h5",
      #         custom_objects=custom_objects)
      with vitis_quantize.quantize_scope():
        quantized_model = tf.keras.models.load_model("./quantized/quantized_curve_line.h5",
                custom_objects=custom_objects)
        quantized_model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
        eval_results = quantized_model.evaluate(x_test, y_test)
        print("\n***************** Summary *****************")
        print("Quantized model accuracy: ", eval_results[1])
      return
    loaded_model = tf.keras.models.load_model("./keras_curve_cnn2_line.h5",
            custom_objects=custom_objects)
    eval_results = loaded_model.evaluate(x_test, y_test)
    print("\n***************** Summary *****************")
    print("Float model accuracy: ", eval_results[1])
    return
  #################################
  ##### build model
  #################################
  model = build_model()
  model.summary()
  #################################
  ##### compile train
  #################################
  model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
  model.fit(x_train, y_train, epochs=7, shuffle=True)
  eval_results = model.evaluate(x_test, y_test)
  print("\n***************** Summary *****************")
  print("Trained float model accuracy: ", eval_results[1])
  save_path = "./keras_curve_cnn2_line.h5"
  print("Trained float model is saved in ", save_path)
  model.save(save_path)

if __name__ == '__main__':
  main()


quantize_curve_line.py を貼っておく。

# Copyright 2019 Xilinx Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# quantize_curve_line.py
# 2022/12/05 : modified by marsee

import os, sys
import numpy as np
import tensorflow as tf

from curve_dataset import load_mnist
from train_eval_line import custom_objects

print(tf.__version__)
os.environ["CUDA_VISIBLE_DEVICES"] = "0"


def main():
#################################
###### build dataset
#################################
(x_train, y_train), (x_test, y_test) = load_mnist(normalize=False, flatten=False)

testzip = list(zip(y_test, x_test))
np.random.shuffle(testzip)
y_test, x_test = zip(*testzip)
x_test = np.asarray(x_test)
y_test = np.asarray(y_test)
x_test = x_test.reshape(x_test.shape[0], 10, 56, 1)
x_test = x_test.astype('float32')
x_test /= 255

#################################
##### quantize model
#################################
loaded_model = tf.keras.models.load_model("./keras_curve_cnn2_line.h5",
custom_objects=custom_objects)
loaded_model.summary()
from tensorflow_model_optimization.quantization.keras import vitis_quantize
# do quantization
calib_dataset = x_test
quant_model = vitis_quantize.VitisQuantizer(loaded_model, custom_objects=custom_objects).quantize_model(
calib_dataset=calib_dataset,
add_shape_info=True)
# quant_model.summary()
q_save_path = os.path.join('./quantized', 'quantized_curve_line.h5')
quant_model.save(q_save_path)
print("\n***************** Summary *****************")
print("Quantized model is saved in ", q_save_path)

if __name__ == '__main__':
main()


Vitis-AI の Docker を起動して、学習を行った。
./docker_run.sh xilinx/vitis-ai-cpu:2.5
cd tf2_custom_op_demo
conda activate vitis-ai-tensorflow2
python tran_eval_line.py

Custom_OP_Workflow_50_221211.png

量子化を行った。
python quantize_curve_line.py
Custom_OP_Workflow_51_221211.png

コンパイルして、XMODEL を作成した。
vai_c_tensorflow2 -m ./quantized/quantized_curve_line.h5 -a ../kv260_myarch.json -o ./ -n tf2_curve_line
Custom_OP_Workflow_52_221211.png

XMODEL を FileZilla で KV260 の Petalinux 2022.1 にアップロードした。

まずは、kv260 の Petalinux 2022.1 の環境を設定した。
cd ~/kv260_median/dpu
sudo mkdir -p /run/media/mmcblk0p1/
sudo cp dpu.xclbin /run/media/mmcblk0p1/
sudo xmutil unloadapp
sudo xmutil loadapp dpuprj
cd ~/tensorflow2_example/deployment/cpp


今まで、JPG 画像で推論してきたが、元が BMP 画像での学習なので、BMP 画像で推論を行った。

最初は直進のパターンを推論した。
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_00.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_01.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_02.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_03.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_04.bmp

xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_00.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/straight_RED_rect0_00.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:27:18.511101  1328 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/straight_RED_rect0_00.bmp result:
    score[0]   =  0.957431    
    score[1]   =  0.0289119   
    score[2]   =  0.013657    
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_01.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/straight_RED_rect0_01.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:27:29.567533  1341 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/straight_RED_rect0_01.bmp result:
    score[0]   =  0.546549    
    score[1]   =  0.331499    
    score[2]   =  0.121952    
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_02.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/straight_RED_rect0_02.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:27:34.319573  1346 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/straight_RED_rect0_02.bmp result:
    score[0]   =  0.554841    
    score[1]   =  0.432111    
    score[2]   =  0.0130486   
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_03.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/straight_RED_rect0_03.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:27:38.321185  1347 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/straight_RED_rect0_03.bmp result:
    score[0]   =  0.261528    
    score[1]   =  0.710907    
    score[2]   =  0.0275649   
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect0_04.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/straight_RED_rect0_04.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:27:56.568765  1364 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/straight_RED_rect0_04.bmp result:
    score[0]   =  0.74834     
    score[1]   =  0.214403    
    score[2]   =  0.0372576   


5 回推論して、1 回しか合っていないということは。。。

左旋回のパターンを推論した。
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_00.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_01.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_02.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_03.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_04.bmp

xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_00.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/left_turn_RED_rect0_00.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:44:29.216714  2167 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/left_turn_RED_rect0_00.bmp result:
    score[0]   =  0.145139    
    score[1]   =  0.835218    
    score[2]   =  0.0196425   
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_01.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/left_turn_RED_rect0_01.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:44:43.451567  2181 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/left_turn_RED_rect0_01.bmp result:
    score[0]   =  0.542674    
    score[1]   =  0.422635    
    score[2]   =  0.034692    
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_02.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/left_turn_RED_rect0_02.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:44:52.339522  2190 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/left_turn_RED_rect0_02.bmp result:
    score[0]   =  0.960332    
    score[1]   =  0.0289995   
    score[2]   =  0.0106683   
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_03.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/left_turn_RED_rect0_03.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:44:56.608392  2195 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/left_turn_RED_rect0_03.bmp result:
    score[0]   =  0.999186    
    score[1]   =  0.000261046 
    score[2]   =  0.000552634 
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_04.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/left_turn_RED_rect0_04.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:45:00.314903  2196 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/left_turn_RED_rect0_04.bmp result:
    score[0]   =  0.89917     
    score[1]   =  0.00605856  
    score[2]   =  0.0947718   


左旋回は 5 回推論して 4 回当たっている。

右旋回のパターンを推論した。
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_00.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_01.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_02.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_03.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_04.bmp

xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_00.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/right_turn_RED_rect0_00.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:48:50.522089  2382 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/right_turn_RED_rect0_00.bmp result:
    score[0]   =  0.00135824  
    score[1]   =  0.09522     
    score[2]   =  0.903422    
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_01.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/right_turn_RED_rect0_01.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:48:56.709283  2391 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/right_turn_RED_rect0_01.bmp result:
    score[0]   =  5.81789e-05 
    score[1]   =  0.222687    
    score[2]   =  0.777255    
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_02.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/right_turn_RED_rect0_02.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:49:01.729414  2396 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/right_turn_RED_rect0_02.bmp result:
    score[0]   =  0.00404301  
    score[1]   =  0.00666579  
    score[2]   =  0.989291    
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_03.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/right_turn_RED_rect0_03.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:49:16.835510  2409 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/right_turn_RED_rect0_03.bmp result:
    score[0]   =  0.0105812   
    score[1]   =  0.0369319   
    score[2]   =  0.952487    
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_04.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/right_turn_RED_rect0_04.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1210 16:49:21.233657  2410 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/right_turn_RED_rect0_04.bmp result:
    score[0]   =  0.124399    
    score[1]   =  0.159732    
    score[2]   =  0.715869    


右旋回は推論 5 回中 5 回とも当たりだ。

現在の推論結果は 15 回推論して、10 回当たりなので、10 / 15 = 0.76 で 76 % の正答率だった。
大体これで行けているのかも知れない?

(追記)
Vitis-AI/examples/Custom_OP_Demo/tensorflow2_example/deployment/cpp の tf2_custom_op_graph_runner.cpp は bmp ファイルを読めるようになっていないので、修正した。
22 行目の

std::vector supported_ext = {".jpg", ".png"};

std::vector supported_ext = {".jpg", ".png", ".bmp"};

に変更して、
bash build.sh
コマンドでコンパイルして、

tf2_custom_op_graph_runner

を再度生成した。
  1. 2022年12月11日 09:55 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する4

自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する3”の続き。

白線間走行用CNNをKerasで学習する”で学習した白線間走行用 CNN を Vitis-AI のカスタム OP ワークフローで動作させてみたいということで、前回は、量子化とコンパイルを行って、XMODEL を生成した。今回は、XMODEL と テスト用画像を kv260 の Petalinux 2022.1 にアップロードして推論したが、結果が間違っているようだった。

tf2_curve_line.xmodel と 3 個のテスト用画像を Petalinux 2022.1 の ~/tensorflow2_example に FileZilla でアップロードした。
Custom_OP_Workflow_46_221207.png

まずは、kv260 の Petalinux 2022.1 の環境を設定した。
cd ~/kv260_median/dpu
sudo mkdir -p /run/media/mmcblk0p1/
sudo cp dpu.xclbin /run/media/mmcblk0p1/
sudo xmutil unloadapp
sudo xmutil loadapp dpuprj
cd ~/tensorflow2_example/deployment/cpp

Custom_OP_Workflow_46_221208.png

走行方向の判定は直進が score[1]、左旋回が socre[0]、右旋回が score[2] が最大になる予定だ。(”白線追従走行用畳み込みニューラルネットワーク・システムの製作6(実機で確認2)”参照)

まずは直進の画像の straight_RED_rect5_24.jpg を推論してみたところ、score[2] が最大値となった。右旋回となった。
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect5_24.jpg
Custom_OP_Workflow_47_221208.png

xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/straight_RED_rect5_24.jpg
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/straight_RED_rect5_24.jpg
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1208 04:47:28.646189  1217 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/straight_RED_rect5_24.jpg result:
    score[0]   =  0.00664835  
    score[1]   =  0.00664835  
    score[2]   =  0.986703    



次に、左旋回画像の left_turn_RED_rect0_00.jpg を推論したところ、やはり右旋回という結果だった。
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_00.jpg
Custom_OP_Workflow_48_221208.png

xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/left_turn_RED_rect0_00.jpg
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/left_turn_RED_rect0_00.jpg
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1208 04:47:59.089350  1248 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/left_turn_RED_rect0_00.jpg result:
    score[0]   =  0.0108675   
    score[1]   =  0.0108675   
    score[2]   =  0.978265    


最後に右旋回の画像の right_turn_RED_rect0_00.jpg を推論してみたところ右旋回という結果だった。これは正しい。
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_00.jpg
Custom_OP_Workflow_49_221208.png

xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_curve_line.xmodel ~/tensorflow2_example/right_turn_RED_rect0_00.jpg
model_file: /home/petalinux/tensorflow2_example/tf2_curve_line.xmodel
image_path: /home/petalinux/tensorflow2_example/right_turn_RED_rect0_00.jpg
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1208 04:48:13.153605  1261 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/right_turn_RED_rect0_00.jpg result:
    score[0]   =  0.0158762   
    score[1]   =  0.11731     
    score[2]   =  0.866813    


全ての推論結果が右旋回という結果が出た。これは推論がおかしいと思う。
もう一度学習を見直してみたい。

後で、テスト用画像を貼っておく。
  1. 2022年12月10日 05:03 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する3

自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する2”の続き。

白線間走行用CNNをKerasで学習する”で学習した白線間走行用 CNN を Vitis-AI のカスタム OP ワークフローで動作させてみたいということで、前回は、train_eval_line.py による学習を行った。今回は、量子化とコンパイルを行って、XMODEL を生成した。

量子化を行った。
python quantize_curve_line.py
Custom_OP_Workflow_40_221208.png
Custom_OP_Workflow_41_221208.png

(vitis-ai-tensorflow2) Vitis-AI /workspace/tf2_custom_op_demo > python quantize_curve_line.py 
2022-12-08 03:06:20.049079: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/xilinx/xrt/lib:/usr/lib:/usr/lib/x86_64-linux-gnu
2022-12-08 03:06:20.049101: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2.8.0
2.8.0
2022-12-08 03:06:21.606180: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/xilinx/xrt/lib:/usr/lib:/usr/lib/x86_64-linux-gnu
2022-12-08 03:06:21.606207: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)
2022-12-08 03:06:21.606233: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:163] no NVIDIA GPU device is present: /dev/nvidia0 does not exist
2022-12-08 03:06:21.606406: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
Model: "model"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 input_1 (InputLayer)        [(None, 10, 56, 1)]       0         
                                                                 
 conv2d (Conv2D)             (None, 6, 52, 2)          52        
                                                                 
 max_pooling2d (MaxPooling2D  (None, 3, 26, 2)         0         
 )                                                               
                                                                 
 custom_layer (Mylayer)      (None, 3, 26, 2)          156       
                                                                 
 flatten (Flatten)           (None, 156)               0         
                                                                 
 dense (Dense)               (None, 100)               15700     
                                                                 
 dense_1 (Dense)             (None, 3)                 303       
                                                                 
=================================================================
Total params: 16,211
Trainable params: 16,211
Non-trainable params: 0
_________________________________________________________________
[VAI INFO] Update custom_layer_type: ['Mylayer']
[VAI INFO] setting custom layer weights, layer name: custom_layer
[VAI INFO] setting custom layer weights, layer name: custom_layer
[VAI INFO] Start CrossLayerEqualization...
 1/10 [==>...........................] - ETA: 0s[VAI INFO] setting custom layer weights, layer name: custom_layer
 2/10 [=====>........................] - ETA: 0s[VAI INFO] setting custom layer weights, layer name: custom_layer
 3/10 [========>.....................] - ETA: 0s[VAI INFO] setting custom layer weights, layer name: custom_layer
 4/10 [===========>..................] - ETA: 0s[VAI INFO] setting custom layer weights, layer name: custom_layer
 5/10 [==============>...............] - ETA: 0s[VAI INFO] setting custom layer weights, layer name: custom_layer
 6/10 [=================>............] - ETA: 0s[VAI INFO] setting custom layer weights, layer name: custom_layer
 7/10 [====================>.........] - ETA: 0s[VAI INFO] setting custom layer weights, layer name: custom_layer
 8/10 [=======================>......] - ETA: 0s[VAI INFO] setting custom layer weights, layer name: custom_layer
 9/10 [==========================>...] - ETA: 0s[VAI INFO] setting custom layer weights, layer name: custom_layer
10/10 [==============================] - 1s 66ms/step
[VAI INFO] setting custom layer weights, layer name: custom_layer
[VAI INFO] CrossLayerEqualization Done.
[VAI INFO] setting custom layer weights, layer name: custom_layer
[VAI INFO] setting custom layer weights, layer name: custom_layer
[VAI INFO] Layer custom_layer(<class 'train_eval_line.Mylayer'>) is not supported by DPU, it will not be quantized and may be mapped to run on CPU or other IPs. Please see User Guide for list of supported operations and APIs of vai_q_tensorflow2.
[VAI INFO] setting custom layer weights, layer name: custom_layer
[VAI INFO] Start Quantize Calibration...
830/830 [==============================] - 5s 5ms/step
[VAI INFO] Quantize Calibration Done.
[VAI INFO] Start Post-Quant Model Refinement...
[VAI INFO] Start Quantize Position Ajustment...
[VAI INFO] Quantize Position Ajustment Done.
[VAI INFO] Start Getting Shape Information...
[VAI INFO] Getting model layer shape information
[VAI INFO] Getting Shape Information Done.
[VAI INFO] Post-Quant Model Refninement Done.
[VAI INFO] Start Model Finalization...
[VAI INFO] Model Finalization Done.
[VAI INFO] Quantization Finished.
WARNING:tensorflow:Compiled the loaded model, but the compiled metrics have yet to be built. `model.compile_metrics` will be empty until you train or evaluate the model.

***************** Summary *****************
Quantized model is saved in  ./quantized/quantized_curve_line.h5


コンパイルを行った。
vai_c_tensorflow2 -m ./quantized/quantized_curve_line.h5 -a ../kv260_myarch.json -o ./ -n tf2_curve_line
tf2_curve_line.xmodel が生成された。
Custom_OP_Workflow_42_221208.png
Custom_OP_Workflow_43_221208.png

(vitis-ai-tensorflow2) Vitis-AI /workspace/tf2_custom_op_demo > vai_c_tensorflow2 -m ./quantized/quantized_curve_line.h5 -a ../kv260_myarch.json -o ./ -n tf2_curve_line
**************************************************
* VITIS_AI Compilation - Xilinx Inc.
**************************************************
[INFO] Namespace(batchsize=1, inputs_shape=None, layout='NHWC', model_files=['./quantized/quantized_curve_line.h5'], model_type='tensorflow2', named_inputs_shape=None, out_filename='/tmp/tf2_curve_line_0x101000017010406_org.xmodel', proto=None)
[INFO] tensorflow2 model: /workspace/tf2_custom_op_demo/quantized/quantized_curve_line.h5
[INFO] keras version: 2.8.0
[INFO] Tensorflow Keras model type: functional
/opt/vitis_ai/conda/envs/vitis-ai-tensorflow2/lib/python3.7/site-packages/xnnc/translator/tensorflow_translator.py:2537: H5pyDeprecationWarning: dataset.value has been deprecated. Use dataset[()] instead.
  layer['config']['shape'] = h5f['optimizer_weights'][name+':0'].value.tolist()
[INFO] parse raw model     :100%|█| 12/12 [00:00<00:00, 14873.42it/s]           
[INFO] infer shape (NHWC)  :100%|█| 21/21 [00:00<00:00, 22003.59it/s]           
[INFO] perform level-0 opt :100%|█| 2/2 [00:00<00:00, 698.64it/s]               
[INFO] perform level-1 opt :100%|█| 2/2 [00:00<00:00, 2537.39it/s]              
[INFO] generate xmodel     :  0%| | 0/21 [00:00<?, ?it/s]                       WARNING: Logging before InitGoogleLogging() is written to STDERR
W1208 03:08:54.900501  2409 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
[INFO] generate xmodel     :100%|█| 21/21 [00:00<00:00, 5217.72it/s]            
[INFO] dump xmodel: /tmp/tf2_curve_line_0x101000017010406_org.xmodel
[UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
[UNILOG][INFO] Compile mode: dpu
[UNILOG][INFO] Debug mode: function
[UNILOG][INFO] Target architecture: DPUCZDX8G_ISA1_B3136_0101000017010406
[UNILOG][INFO] Graph name: model, with op num: 29
[UNILOG][INFO] Begin to compile...
[UNILOG][INFO] Total device subgraph number 5, DPU subgraph number 2
[UNILOG][INFO] Compile done.
[UNILOG][INFO] The meta json is saved to "/workspace/tf2_custom_op_demo/./meta.json"
[UNILOG][INFO] The compiled xmodel is saved to "/workspace/tf2_custom_op_demo/.//tf2_curve_line.xmodel"
[UNILOG][INFO] The compiled xmodel's md5sum is 47bfeeb7ac6e503ec52b1bd314a5875c, and has been saved to "/workspace/tf2_custom_op_demo/./md5sum.txt"


netronで tf2_curve_line.xmodel の構成を見た。
Custom_OP_Workflow_44_221208.pngCustom_OP_Workflow_45_221208.png

  1. 2022年12月09日 04:53 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する2

自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する1”の続き。

白線間走行用CNNをKerasで学習する”で学習した白線間走行用 CNN を Vitis-AI のカスタム OP ワークフローで動作させてみたいということで、前回は、修正した train_eval_line.py と quntize_curve_line.py を貼っておく。更に、train_curve_run_image、train_curve_run_label、test_curve_run_image、test_curve_run_label、学習用データとテスト・データを読み込む curve_dataset.py を Vitis-AI/tf2_custom_op_demo ディレクトリにコピーした。今回は、train_eval_line.py による学習を行った。

train_eval_line.py による学習を行う。
pytyon train_eval_line.py
Custom_OP_Workflow_38_221207.png
Custom_OP_Workflow_39_221207.png

浮動小数点数モデルの精度は 0.954 程度だった。

ログを貼っておく。

(vitis-ai-tensorflow2) Vitis-AI /workspace/tf2_custom_op_demo > python train_eval_line.py
2022-12-08 02:30:50.225265: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/xilinx/xrt/lib:/usr/lib:/usr/lib/x86_64-linux-gnu
2022-12-08 02:30:50.225295: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2.8.0
2022-12-08 02:30:52.560898: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /opt/xilinx/xrt/lib:/usr/lib:/usr/lib/x86_64-linux-gnu
2022-12-08 02:30:52.560990: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)
2022-12-08 02:30:52.561056: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:163] no NVIDIA GPU device is present: /dev/nvidia0 does not exist
2022-12-08 02:30:52.561320: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
Model: "model"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 input_1 (InputLayer)        [(None, 10, 56, 1)]       0         
                                                                 
 conv2d (Conv2D)             (None, 6, 52, 2)          52        
                                                                 
 max_pooling2d (MaxPooling2D  (None, 3, 26, 2)         0         
 )                                                               
                                                                 
 custom_layer (Mylayer)      (None, 3, 26, 2)          156       
                                                                 
 flatten (Flatten)           (None, 156)               0         
                                                                 
 dense (Dense)               (None, 100)               15700     
                                                                 
 dense_1 (Dense)             (None, 3)                 303       
                                                                 
=================================================================
Total params: 16,211
Trainable params: 16,211
Non-trainable params: 0
_________________________________________________________________

Epoch 1/20
   1/1083 [..............................] - ETA: 7:21 - loss: 0.6856 - accuracy  15/1083 [..............................] - ETA: 3s - loss: 0.6058 - accuracy:   31/1083 [..............................] - ETA: 3s - loss: 0.5595 - accuracy:   46/1083 [>.............................] - ETA: 3s - loss: 0.5350 - accuracy:   62/1083 [>.............................] - ETA: 3s - loss: 0.5056 - accuracy:   77/1083 [=>............................] - ETA: 3s - loss: 0.4778 - accuracy:   92/1083 [=>............................] - ETA: 3s - loss: 0.4577 - accuracy:  107/1083 [=>............................] - ETA: 3s - loss: 0.4427 - accuracy:  123/1083 [==>...........................] - ETA: 3s - loss: 0.4289 - accuracy:  139/1083 [==>...........................] - ETA: 3s - loss: 0.4196 - accuracy:  155/1083 [===>..........................] - ETA: 3s - loss: 0.4084 - accuracy:  170/1083 [===>..........................] - ETA: 3s - loss: 0.4015 - accuracy:  186/1083 [====>.........................] - ETA: 3s - loss: 0.3919 - accuracy:  202/1083 [====>.........................] - ETA: 2s - loss: 0.3844 - accuracy:  218/1083 [=====>........................] - ETA: 2s - loss: 0.3770 - accuracy:  232/1083 [=====>........................] - ETA: 2s - loss: 0.3731 - accuracy:  246/1083 [=====>........................] - ETA: 2s - loss: 0.3672 - accuracy:  261/1083 [======>.......................] - ETA: 2s - loss: 0.3647 - accuracy:  276/1083 [======>.......................] - ETA: 2s - loss: 0.3622 - accuracy:  291/1083 [=======>......................] - ETA: 2s - loss: 0.3582 - accuracy:  306/1083 [=======>......................] - ETA: 2s - loss: 0.3540 - accuracy:  322/1083 [=======>......................] - ETA: 2s - loss: 0.3521 - accuracy:  337/1083 [========>.....................] - ETA: 2s - loss: 0.3490 - accuracy:  353/1083 [========>.....................] - ETA: 2s - loss: 0.3458 - accuracy:  368/1083 [=========>....................] - ETA: 2s - loss: 0.3430 - accuracy:  383/1083 [=========>....................] - ETA: 2s - loss: 0.3394 - accuracy:  397/1083 [=========>....................] - ETA: 2s - loss: 0.3381 - accuracy:  411/1083 [==========>...................] - ETA: 2s - loss: 0.3365 - accuracy:  427/1083 [==========>...................] - ETA: 2s - loss: 0.3348 - accuracy:  442/1083 [===========>..................] - ETA: 2s - loss: 0.3331 - accuracy:  458/1083 [===========>..................] - ETA: 2s - loss: 0.3302 - accuracy:  474/1083 [============>.................] - ETA: 2s - loss: 0.3277 - accuracy:  490/1083 [============>.................] - ETA: 2s - loss: 0.3258 - accuracy:  506/1083 [=============>................] - ETA: 1s - loss: 0.3231 - accuracy:  522/1083 [=============>................] - ETA: 1s - loss: 0.3205 - accuracy:  538/1083 [=============>................] - ETA: 1s - loss: 0.3180 - accuracy:  552/1083 [==============>...............] - ETA: 1s - loss: 0.3154 - accuracy:  568/1083 [==============>...............] - ETA: 1s - loss: 0.3130 - accuracy:  583/1083 [===============>..............] - ETA: 1s - loss: 0.3118 - accuracy:  599/1083 [===============>..............] - ETA: 1s - loss: 0.3101 - accuracy:  614/1083 [================>.............] - ETA: 1s - loss: 0.3080 - accuracy:  629/1083 [================>.............] - ETA: 1s - loss: 0.3060 - accuracy:  644/1083 [================>.............] - ETA: 1s - loss: 0.3040 - accuracy:  660/1083 [=================>............] - ETA: 1s - loss: 0.3024 - accuracy:  674/1083 [=================>............] - ETA: 1s - loss: 0.3003 - accuracy:  689/1083 [==================>...........] - ETA: 1s - loss: 0.2979 - accuracy:  704/1083 [==================>...........] - ETA: 1s - loss: 0.2959 - accuracy:  720/1083 [==================>...........] - ETA: 1s - loss: 0.2944 - accuracy:  735/1083 [===================>..........] - ETA: 1s - loss: 0.2927 - accuracy:  752/1083 [===================>..........] - ETA: 1s - loss: 0.2906 - accuracy:  768/1083 [====================>.........] - ETA: 1s - loss: 0.2894 - accuracy:  784/1083 [====================>.........] - ETA: 1s - loss: 0.2881 - accuracy:  798/1083 [=====================>........] - ETA: 0s - loss: 0.2865 - accuracy:  814/1083 [=====================>........] - ETA: 0s - loss: 0.2852 - accuracy:  828/1083 [=====================>........] - ETA: 0s - loss: 0.2836 - accuracy:  842/1083 [======================>.......] - ETA: 0s - loss: 0.2822 - accuracy:  857/1083 [======================>.......] - ETA: 0s - loss: 0.2807 - accuracy:  873/1083 [=======================>......] - ETA: 0s - loss: 0.2792 - accuracy:  888/1083 [=======================>......] - ETA: 0s - loss: 0.2774 - accuracy:  904/1083 [========================>.....] - ETA: 0s - loss: 0.2759 - accuracy:  918/1083 [========================>.....] - ETA: 0s - loss: 0.2748 - accuracy:  934/1083 [========================>.....] - ETA: 0s - loss: 0.2732 - accuracy:  950/1083 [=========================>....] - ETA: 0s - loss: 0.2716 - accuracy:  965/1083 [=========================>....] - ETA: 0s - loss: 0.2704 - accuracy:  981/1083 [==========================>...] - ETA: 0s - loss: 0.2689 - accuracy:  997/1083 [==========================>...] - ETA: 0s - loss: 0.2671 - accuracy: 1012/1083 [===========================>..] - ETA: 0s - loss: 0.2657 - accuracy: 1028/1083 [===========================>..] - ETA: 0s - loss: 0.2638 - accuracy: 1044/1083 [===========================>..] - ETA: 0s - loss: 0.2622 - accuracy: 1060/1083 [============================>.] - ETA: 0s - loss: 0.2604 - accuracy: 1076/1083 [============================>.] - ETA: 0s - loss: 0.2590 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.2583 - accuracy: 0.8406
Epoch 2/20
   1/1083 [..............................] - ETA: 3s - loss: 0.1257 - accuracy:   16/1083 [..............................] - ETA: 3s - loss: 0.1498 - accuracy:   31/1083 [..............................] - ETA: 3s - loss: 0.1515 - accuracy:   46/1083 [>.............................] - ETA: 3s - loss: 0.1571 - accuracy:   62/1083 [>.............................] - ETA: 3s - loss: 0.1571 - accuracy:   78/1083 [=>............................] - ETA: 3s - loss: 0.1560 - accuracy:   93/1083 [=>............................] - ETA: 3s - loss: 0.1565 - accuracy:  109/1083 [==>...........................] - ETA: 3s - loss: 0.1505 - accuracy:  124/1083 [==>...........................] - ETA: 3s - loss: 0.1482 - accuracy:  140/1083 [==>...........................] - ETA: 3s - loss: 0.1469 - accuracy:  156/1083 [===>..........................] - ETA: 3s - loss: 0.1463 - accuracy:  172/1083 [===>..........................] - ETA: 3s - loss: 0.1459 - accuracy:  186/1083 [====>.........................] - ETA: 2s - loss: 0.1456 - accuracy:  200/1083 [====>.........................] - ETA: 2s - loss: 0.1462 - accuracy:  215/1083 [====>.........................] - ETA: 2s - loss: 0.1446 - accuracy:  231/1083 [=====>........................] - ETA: 2s - loss: 0.1435 - accuracy:  247/1083 [=====>........................] - ETA: 2s - loss: 0.1426 - accuracy:  263/1083 [======>.......................] - ETA: 2s - loss: 0.1415 - accuracy:  278/1083 [======>.......................] - ETA: 2s - loss: 0.1412 - accuracy:  294/1083 [=======>......................] - ETA: 2s - loss: 0.1397 - accuracy:  310/1083 [=======>......................] - ETA: 2s - loss: 0.1397 - accuracy:  324/1083 [=======>......................] - ETA: 2s - loss: 0.1388 - accuracy:  339/1083 [========>.....................] - ETA: 2s - loss: 0.1378 - accuracy:  354/1083 [========>.....................] - ETA: 2s - loss: 0.1374 - accuracy:  369/1083 [=========>....................] - ETA: 2s - loss: 0.1366 - accuracy:  385/1083 [=========>....................] - ETA: 2s - loss: 0.1361 - accuracy:  401/1083 [==========>...................] - ETA: 2s - loss: 0.1356 - accuracy:  416/1083 [==========>...................] - ETA: 2s - loss: 0.1352 - accuracy:  429/1083 [==========>...................] - ETA: 2s - loss: 0.1351 - accuracy:  443/1083 [===========>..................] - ETA: 2s - loss: 0.1349 - accuracy:  457/1083 [===========>..................] - ETA: 2s - loss: 0.1337 - accuracy:  472/1083 [============>.................] - ETA: 2s - loss: 0.1331 - accuracy:  485/1083 [============>.................] - ETA: 2s - loss: 0.1330 - accuracy:  500/1083 [============>.................] - ETA: 1s - loss: 0.1333 - accuracy:  516/1083 [=============>................] - ETA: 1s - loss: 0.1333 - accuracy:  532/1083 [=============>................] - ETA: 1s - loss: 0.1326 - accuracy:  548/1083 [==============>...............] - ETA: 1s - loss: 0.1318 - accuracy:  564/1083 [==============>...............] - ETA: 1s - loss: 0.1312 - accuracy:  579/1083 [===============>..............] - ETA: 1s - loss: 0.1308 - accuracy:  594/1083 [===============>..............] - ETA: 1s - loss: 0.1304 - accuracy:  610/1083 [===============>..............] - ETA: 1s - loss: 0.1299 - accuracy:  626/1083 [================>.............] - ETA: 1s - loss: 0.1296 - accuracy:  642/1083 [================>.............] - ETA: 1s - loss: 0.1294 - accuracy:  658/1083 [=================>............] - ETA: 1s - loss: 0.1286 - accuracy:  674/1083 [=================>............] - ETA: 1s - loss: 0.1285 - accuracy:  689/1083 [==================>...........] - ETA: 1s - loss: 0.1280 - accuracy:  705/1083 [==================>...........] - ETA: 1s - loss: 0.1276 - accuracy:  721/1083 [==================>...........] - ETA: 1s - loss: 0.1275 - accuracy:  737/1083 [===================>..........] - ETA: 1s - loss: 0.1273 - accuracy:  751/1083 [===================>..........] - ETA: 1s - loss: 0.1270 - accuracy:  767/1083 [====================>.........] - ETA: 1s - loss: 0.1267 - accuracy:  782/1083 [====================>.........] - ETA: 1s - loss: 0.1267 - accuracy:  798/1083 [=====================>........] - ETA: 0s - loss: 0.1264 - accuracy:  813/1083 [=====================>........] - ETA: 0s - loss: 0.1257 - accuracy:  828/1083 [=====================>........] - ETA: 0s - loss: 0.1255 - accuracy:  843/1083 [======================>.......] - ETA: 0s - loss: 0.1251 - accuracy:  859/1083 [======================>.......] - ETA: 0s - loss: 0.1246 - accuracy:  874/1083 [=======================>......] - ETA: 0s - loss: 0.1240 - accuracy:  889/1083 [=======================>......] - ETA: 0s - loss: 0.1236 - accuracy:  905/1083 [========================>.....] - ETA: 0s - loss: 0.1232 - accuracy:  921/1083 [========================>.....] - ETA: 0s - loss: 0.1227 - accuracy:  935/1083 [========================>.....] - ETA: 0s - loss: 0.1221 - accuracy:  948/1083 [=========================>....] - ETA: 0s - loss: 0.1216 - accuracy:  963/1083 [=========================>....] - ETA: 0s - loss: 0.1212 - accuracy:  977/1083 [==========================>...] - ETA: 0s - loss: 0.1209 - accuracy:  992/1083 [==========================>...] - ETA: 0s - loss: 0.1202 - accuracy: 1007/1083 [==========================>...] - ETA: 0s - loss: 0.1202 - accuracy: 1022/1083 [===========================>..] - ETA: 0s - loss: 0.1200 - accuracy: 1038/1083 [===========================>..] - ETA: 0s - loss: 0.1194 - accuracy: 1054/1083 [============================>.] - ETA: 0s - loss: 0.1188 - accuracy: 1069/1083 [============================>.] - ETA: 0s - loss: 0.1183 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.1178 - accuracy: 0.9377
Epoch 3/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0658 - accuracy:   16/1083 [..............................] - ETA: 3s - loss: 0.0942 - accuracy:   32/1083 [..............................] - ETA: 3s - loss: 0.0839 - accuracy:   47/1083 [>.............................] - ETA: 3s - loss: 0.0845 - accuracy:   63/1083 [>.............................] - ETA: 3s - loss: 0.0827 - accuracy:   77/1083 [=>............................] - ETA: 3s - loss: 0.0807 - accuracy:   93/1083 [=>............................] - ETA: 3s - loss: 0.0823 - accuracy:  109/1083 [==>...........................] - ETA: 3s - loss: 0.0842 - accuracy:  125/1083 [==>...........................] - ETA: 3s - loss: 0.0869 - accuracy:  140/1083 [==>...........................] - ETA: 3s - loss: 0.0883 - accuracy:  155/1083 [===>..........................] - ETA: 3s - loss: 0.0893 - accuracy:  170/1083 [===>..........................] - ETA: 3s - loss: 0.0878 - accuracy:  186/1083 [====>.........................] - ETA: 3s - loss: 0.0879 - accuracy:  201/1083 [====>.........................] - ETA: 2s - loss: 0.0875 - accuracy:  217/1083 [=====>........................] - ETA: 2s - loss: 0.0878 - accuracy:  232/1083 [=====>........................] - ETA: 2s - loss: 0.0872 - accuracy:  248/1083 [=====>........................] - ETA: 2s - loss: 0.0874 - accuracy:  263/1083 [======>.......................] - ETA: 2s - loss: 0.0876 - accuracy:  279/1083 [======>.......................] - ETA: 2s - loss: 0.0870 - accuracy:  293/1083 [=======>......................] - ETA: 2s - loss: 0.0869 - accuracy:  307/1083 [=======>......................] - ETA: 2s - loss: 0.0876 - accuracy:  320/1083 [=======>......................] - ETA: 2s - loss: 0.0878 - accuracy:  336/1083 [========>.....................] - ETA: 2s - loss: 0.0874 - accuracy:  351/1083 [========>.....................] - ETA: 2s - loss: 0.0866 - accuracy:  367/1083 [=========>....................] - ETA: 2s - loss: 0.0858 - accuracy:  382/1083 [=========>....................] - ETA: 2s - loss: 0.0845 - accuracy:  398/1083 [==========>...................] - ETA: 2s - loss: 0.0840 - accuracy:  413/1083 [==========>...................] - ETA: 2s - loss: 0.0843 - accuracy:  428/1083 [==========>...................] - ETA: 2s - loss: 0.0837 - accuracy:  442/1083 [===========>..................] - ETA: 2s - loss: 0.0835 - accuracy:  457/1083 [===========>..................] - ETA: 2s - loss: 0.0835 - accuracy:  470/1083 [============>.................] - ETA: 2s - loss: 0.0833 - accuracy:  486/1083 [============>.................] - ETA: 2s - loss: 0.0830 - accuracy:  501/1083 [============>.................] - ETA: 1s - loss: 0.0823 - accuracy:  516/1083 [=============>................] - ETA: 1s - loss: 0.0817 - accuracy:  531/1083 [=============>................] - ETA: 1s - loss: 0.0813 - accuracy:  546/1083 [==============>...............] - ETA: 1s - loss: 0.0808 - accuracy:  559/1083 [==============>...............] - ETA: 1s - loss: 0.0809 - accuracy:  572/1083 [==============>...............] - ETA: 1s - loss: 0.0808 - accuracy:  585/1083 [===============>..............] - ETA: 1s - loss: 0.0803 - accuracy:  599/1083 [===============>..............] - ETA: 1s - loss: 0.0802 - accuracy:  613/1083 [===============>..............] - ETA: 1s - loss: 0.0800 - accuracy:  627/1083 [================>.............] - ETA: 1s - loss: 0.0801 - accuracy:  642/1083 [================>.............] - ETA: 1s - loss: 0.0799 - accuracy:  657/1083 [=================>............] - ETA: 1s - loss: 0.0800 - accuracy:  672/1083 [=================>............] - ETA: 1s - loss: 0.0796 - accuracy:  688/1083 [==================>...........] - ETA: 1s - loss: 0.0799 - accuracy:  704/1083 [==================>...........] - ETA: 1s - loss: 0.0800 - accuracy:  720/1083 [==================>...........] - ETA: 1s - loss: 0.0797 - accuracy:  736/1083 [===================>..........] - ETA: 1s - loss: 0.0797 - accuracy:  752/1083 [===================>..........] - ETA: 1s - loss: 0.0796 - accuracy:  768/1083 [====================>.........] - ETA: 1s - loss: 0.0794 - accuracy:  783/1083 [====================>.........] - ETA: 1s - loss: 0.0795 - accuracy:  798/1083 [=====================>........] - ETA: 0s - loss: 0.0792 - accuracy:  812/1083 [=====================>........] - ETA: 0s - loss: 0.0790 - accuracy:  824/1083 [=====================>........] - ETA: 0s - loss: 0.0788 - accuracy:  834/1083 [======================>.......] - ETA: 0s - loss: 0.0789 - accuracy:  845/1083 [======================>.......] - ETA: 0s - loss: 0.0788 - accuracy:  858/1083 [======================>.......] - ETA: 0s - loss: 0.0787 - accuracy:  872/1083 [=======================>......] - ETA: 0s - loss: 0.0784 - accuracy:  885/1083 [=======================>......] - ETA: 0s - loss: 0.0782 - accuracy:  898/1083 [=======================>......] - ETA: 0s - loss: 0.0780 - accuracy:  911/1083 [========================>.....] - ETA: 0s - loss: 0.0779 - accuracy:  924/1083 [========================>.....] - ETA: 0s - loss: 0.0778 - accuracy:  931/1083 [========================>.....] - ETA: 0s - loss: 0.0777 - accuracy:  939/1083 [=========================>....] - ETA: 0s - loss: 0.0777 - accuracy:  948/1083 [=========================>....] - ETA: 0s - loss: 0.0775 - accuracy:  958/1083 [=========================>....] - ETA: 0s - loss: 0.0773 - accuracy:  966/1083 [=========================>....] - ETA: 0s - loss: 0.0770 - accuracy:  976/1083 [==========================>...] - ETA: 0s - loss: 0.0770 - accuracy:  984/1083 [==========================>...] - ETA: 0s - loss: 0.0770 - accuracy:  991/1083 [==========================>...] - ETA: 0s - loss: 0.0768 - accuracy: 1000/1083 [==========================>...] - ETA: 0s - loss: 0.0766 - accuracy: 1012/1083 [===========================>..] - ETA: 0s - loss: 0.0765 - accuracy: 1020/1083 [===========================>..] - ETA: 0s - loss: 0.0765 - accuracy: 1030/1083 [===========================>..] - ETA: 0s - loss: 0.0764 - accuracy: 1040/1083 [===========================>..] - ETA: 0s - loss: 0.0763 - accuracy: 1048/1083 [============================>.] - ETA: 0s - loss: 0.0763 - accuracy: 1057/1083 [============================>.] - ETA: 0s - loss: 0.0761 - accuracy: 1065/1083 [============================>.] - ETA: 0s - loss: 0.0761 - accuracy: 1074/1083 [============================>.] - ETA: 0s - loss: 0.0759 - accuracy: 1083/1083 [==============================] - ETA: 0s - loss: 0.0759 - accuracy: 1083/1083 [==============================] - 4s 4ms/step - loss: 0.0759 - accuracy: 0.9612
Epoch 4/20
   1/1083 [..............................] - ETA: 7s - loss: 0.0091 - accuracy:   11/1083 [..............................] - ETA: 5s - loss: 0.0536 - accuracy:   22/1083 [..............................] - ETA: 5s - loss: 0.0535 - accuracy:   32/1083 [..............................] - ETA: 5s - loss: 0.0607 - accuracy:   42/1083 [>.............................] - ETA: 5s - loss: 0.0642 - accuracy:   54/1083 [>.............................] - ETA: 5s - loss: 0.0607 - accuracy:   65/1083 [>.............................] - ETA: 5s - loss: 0.0589 - accuracy:   76/1083 [=>............................] - ETA: 4s - loss: 0.0601 - accuracy:   88/1083 [=>............................] - ETA: 4s - loss: 0.0602 - accuracy:  100/1083 [=>............................] - ETA: 4s - loss: 0.0608 - accuracy:  113/1083 [==>...........................] - ETA: 4s - loss: 0.0610 - accuracy:  125/1083 [==>...........................] - ETA: 4s - loss: 0.0599 - accuracy:  138/1083 [==>...........................] - ETA: 4s - loss: 0.0596 - accuracy:  150/1083 [===>..........................] - ETA: 4s - loss: 0.0600 - accuracy:  163/1083 [===>..........................] - ETA: 4s - loss: 0.0599 - accuracy:  176/1083 [===>..........................] - ETA: 4s - loss: 0.0609 - accuracy:  190/1083 [====>.........................] - ETA: 3s - loss: 0.0610 - accuracy:  204/1083 [====>.........................] - ETA: 3s - loss: 0.0614 - accuracy:  219/1083 [=====>........................] - ETA: 3s - loss: 0.0610 - accuracy:  233/1083 [=====>........................] - ETA: 3s - loss: 0.0614 - accuracy:  248/1083 [=====>........................] - ETA: 3s - loss: 0.0609 - accuracy:  262/1083 [======>.......................] - ETA: 3s - loss: 0.0606 - accuracy:  277/1083 [======>.......................] - ETA: 3s - loss: 0.0601 - accuracy:  291/1083 [=======>......................] - ETA: 3s - loss: 0.0600 - accuracy:  305/1083 [=======>......................] - ETA: 3s - loss: 0.0596 - accuracy:  316/1083 [=======>......................] - ETA: 3s - loss: 0.0599 - accuracy:  331/1083 [========>.....................] - ETA: 3s - loss: 0.0598 - accuracy:  346/1083 [========>.....................] - ETA: 2s - loss: 0.0595 - accuracy:  360/1083 [========>.....................] - ETA: 2s - loss: 0.0592 - accuracy:  374/1083 [=========>....................] - ETA: 2s - loss: 0.0586 - accuracy:  388/1083 [=========>....................] - ETA: 2s - loss: 0.0590 - accuracy:  402/1083 [==========>...................] - ETA: 2s - loss: 0.0586 - accuracy:  415/1083 [==========>...................] - ETA: 2s - loss: 0.0588 - accuracy:  428/1083 [==========>...................] - ETA: 2s - loss: 0.0589 - accuracy:  442/1083 [===========>..................] - ETA: 2s - loss: 0.0586 - accuracy:  457/1083 [===========>..................] - ETA: 2s - loss: 0.0582 - accuracy:  472/1083 [============>.................] - ETA: 2s - loss: 0.0579 - accuracy:  486/1083 [============>.................] - ETA: 2s - loss: 0.0578 - accuracy:  503/1083 [============>.................] - ETA: 2s - loss: 0.0577 - accuracy:  517/1083 [=============>................] - ETA: 2s - loss: 0.0580 - accuracy:  528/1083 [=============>................] - ETA: 2s - loss: 0.0576 - accuracy:  537/1083 [=============>................] - ETA: 2s - loss: 0.0576 - accuracy:  546/1083 [==============>...............] - ETA: 2s - loss: 0.0576 - accuracy:  555/1083 [==============>...............] - ETA: 2s - loss: 0.0576 - accuracy:  565/1083 [==============>...............] - ETA: 2s - loss: 0.0574 - accuracy:  575/1083 [==============>...............] - ETA: 2s - loss: 0.0574 - accuracy:  587/1083 [===============>..............] - ETA: 2s - loss: 0.0571 - accuracy:  596/1083 [===============>..............] - ETA: 1s - loss: 0.0569 - accuracy:  607/1083 [===============>..............] - ETA: 1s - loss: 0.0569 - accuracy:  615/1083 [================>.............] - ETA: 1s - loss: 0.0568 - accuracy:  623/1083 [================>.............] - ETA: 1s - loss: 0.0569 - accuracy:  636/1083 [================>.............] - ETA: 1s - loss: 0.0570 - accuracy:  648/1083 [================>.............] - ETA: 1s - loss: 0.0568 - accuracy:  661/1083 [=================>............] - ETA: 1s - loss: 0.0568 - accuracy:  673/1083 [=================>............] - ETA: 1s - loss: 0.0565 - accuracy:  686/1083 [==================>...........] - ETA: 1s - loss: 0.0564 - accuracy:  700/1083 [==================>...........] - ETA: 1s - loss: 0.0560 - accuracy:  713/1083 [==================>...........] - ETA: 1s - loss: 0.0557 - accuracy:  725/1083 [===================>..........] - ETA: 1s - loss: 0.0556 - accuracy:  737/1083 [===================>..........] - ETA: 1s - loss: 0.0553 - accuracy:  748/1083 [===================>..........] - ETA: 1s - loss: 0.0552 - accuracy:  760/1083 [====================>.........] - ETA: 1s - loss: 0.0551 - accuracy:  772/1083 [====================>.........] - ETA: 1s - loss: 0.0550 - accuracy:  784/1083 [====================>.........] - ETA: 1s - loss: 0.0552 - accuracy:  796/1083 [=====================>........] - ETA: 1s - loss: 0.0552 - accuracy:  808/1083 [=====================>........] - ETA: 1s - loss: 0.0553 - accuracy:  819/1083 [=====================>........] - ETA: 1s - loss: 0.0552 - accuracy:  835/1083 [======================>.......] - ETA: 1s - loss: 0.0551 - accuracy:  850/1083 [======================>.......] - ETA: 0s - loss: 0.0550 - accuracy:  866/1083 [======================>.......] - ETA: 0s - loss: 0.0549 - accuracy:  880/1083 [=======================>......] - ETA: 0s - loss: 0.0550 - accuracy:  895/1083 [=======================>......] - ETA: 0s - loss: 0.0549 - accuracy:  910/1083 [========================>.....] - ETA: 0s - loss: 0.0548 - accuracy:  926/1083 [========================>.....] - ETA: 0s - loss: 0.0549 - accuracy:  942/1083 [=========================>....] - ETA: 0s - loss: 0.0547 - accuracy:  959/1083 [=========================>....] - ETA: 0s - loss: 0.0546 - accuracy:  975/1083 [==========================>...] - ETA: 0s - loss: 0.0544 - accuracy:  990/1083 [==========================>...] - ETA: 0s - loss: 0.0543 - accuracy: 1004/1083 [==========================>...] - ETA: 0s - loss: 0.0541 - accuracy: 1018/1083 [===========================>..] - ETA: 0s - loss: 0.0540 - accuracy: 1032/1083 [===========================>..] - ETA: 0s - loss: 0.0538 - accuracy: 1047/1083 [============================>.] - ETA: 0s - loss: 0.0536 - accuracy: 1059/1083 [============================>.] - ETA: 0s - loss: 0.0537 - accuracy: 1075/1083 [============================>.] - ETA: 0s - loss: 0.0537 - accuracy: 1083/1083 [==============================] - 4s 4ms/step - loss: 0.0537 - accuracy: 0.9720
Epoch 5/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0340 - accuracy:   17/1083 [..............................] - ETA: 3s - loss: 0.0334 - accuracy:   33/1083 [..............................] - ETA: 3s - loss: 0.0339 - accuracy:   47/1083 [>.............................] - ETA: 3s - loss: 0.0383 - accuracy:   61/1083 [>.............................] - ETA: 3s - loss: 0.0386 - accuracy:   74/1083 [=>............................] - ETA: 3s - loss: 0.0388 - accuracy:   84/1083 [=>............................] - ETA: 3s - loss: 0.0386 - accuracy:   94/1083 [=>............................] - ETA: 3s - loss: 0.0400 - accuracy:  102/1083 [=>............................] - ETA: 4s - loss: 0.0395 - accuracy:  111/1083 [==>...........................] - ETA: 4s - loss: 0.0384 - accuracy:  120/1083 [==>...........................] - ETA: 4s - loss: 0.0378 - accuracy:  130/1083 [==>...........................] - ETA: 4s - loss: 0.0384 - accuracy:  142/1083 [==>...........................] - ETA: 4s - loss: 0.0385 - accuracy:  152/1083 [===>..........................] - ETA: 4s - loss: 0.0389 - accuracy:  162/1083 [===>..........................] - ETA: 4s - loss: 0.0392 - accuracy:  172/1083 [===>..........................] - ETA: 4s - loss: 0.0395 - accuracy:  183/1083 [====>.........................] - ETA: 4s - loss: 0.0410 - accuracy:  191/1083 [====>.........................] - ETA: 4s - loss: 0.0414 - accuracy:  199/1083 [====>.........................] - ETA: 4s - loss: 0.0413 - accuracy:  208/1083 [====>.........................] - ETA: 4s - loss: 0.0407 - accuracy:  219/1083 [=====>........................] - ETA: 4s - loss: 0.0413 - accuracy:  230/1083 [=====>........................] - ETA: 4s - loss: 0.0417 - accuracy:  240/1083 [=====>........................] - ETA: 4s - loss: 0.0419 - accuracy:  249/1083 [=====>........................] - ETA: 4s - loss: 0.0428 - accuracy:  259/1083 [======>.......................] - ETA: 4s - loss: 0.0428 - accuracy:  269/1083 [======>.......................] - ETA: 4s - loss: 0.0432 - accuracy:  279/1083 [======>.......................] - ETA: 3s - loss: 0.0433 - accuracy:  289/1083 [=======>......................] - ETA: 3s - loss: 0.0436 - accuracy:  299/1083 [=======>......................] - ETA: 3s - loss: 0.0438 - accuracy:  308/1083 [=======>......................] - ETA: 3s - loss: 0.0435 - accuracy:  315/1083 [=======>......................] - ETA: 3s - loss: 0.0436 - accuracy:  326/1083 [========>.....................] - ETA: 3s - loss: 0.0432 - accuracy:  339/1083 [========>.....................] - ETA: 3s - loss: 0.0427 - accuracy:  351/1083 [========>.....................] - ETA: 3s - loss: 0.0425 - accuracy:  363/1083 [=========>....................] - ETA: 3s - loss: 0.0429 - accuracy:  376/1083 [=========>....................] - ETA: 3s - loss: 0.0430 - accuracy:  388/1083 [=========>....................] - ETA: 3s - loss: 0.0433 - accuracy:  402/1083 [==========>...................] - ETA: 3s - loss: 0.0435 - accuracy:  417/1083 [==========>...................] - ETA: 3s - loss: 0.0434 - accuracy:  433/1083 [==========>...................] - ETA: 3s - loss: 0.0438 - accuracy:  448/1083 [===========>..................] - ETA: 2s - loss: 0.0445 - accuracy:  464/1083 [===========>..................] - ETA: 2s - loss: 0.0445 - accuracy:  479/1083 [============>.................] - ETA: 2s - loss: 0.0446 - accuracy:  495/1083 [============>.................] - ETA: 2s - loss: 0.0447 - accuracy:  511/1083 [=============>................] - ETA: 2s - loss: 0.0441 - accuracy:  527/1083 [=============>................] - ETA: 2s - loss: 0.0441 - accuracy:  542/1083 [==============>...............] - ETA: 2s - loss: 0.0439 - accuracy:  557/1083 [==============>...............] - ETA: 2s - loss: 0.0438 - accuracy:  572/1083 [==============>...............] - ETA: 2s - loss: 0.0436 - accuracy:  588/1083 [===============>..............] - ETA: 2s - loss: 0.0434 - accuracy:  603/1083 [===============>..............] - ETA: 2s - loss: 0.0432 - accuracy:  618/1083 [================>.............] - ETA: 2s - loss: 0.0433 - accuracy:  633/1083 [================>.............] - ETA: 1s - loss: 0.0432 - accuracy:  648/1083 [================>.............] - ETA: 1s - loss: 0.0434 - accuracy:  662/1083 [=================>............] - ETA: 1s - loss: 0.0435 - accuracy:  678/1083 [=================>............] - ETA: 1s - loss: 0.0433 - accuracy:  692/1083 [==================>...........] - ETA: 1s - loss: 0.0432 - accuracy:  707/1083 [==================>...........] - ETA: 1s - loss: 0.0429 - accuracy:  722/1083 [===================>..........] - ETA: 1s - loss: 0.0430 - accuracy:  738/1083 [===================>..........] - ETA: 1s - loss: 0.0429 - accuracy:  753/1083 [===================>..........] - ETA: 1s - loss: 0.0430 - accuracy:  768/1083 [====================>.........] - ETA: 1s - loss: 0.0430 - accuracy:  782/1083 [====================>.........] - ETA: 1s - loss: 0.0429 - accuracy:  797/1083 [=====================>........] - ETA: 1s - loss: 0.0428 - accuracy:  812/1083 [=====================>........] - ETA: 1s - loss: 0.0426 - accuracy:  827/1083 [=====================>........] - ETA: 1s - loss: 0.0427 - accuracy:  840/1083 [======================>.......] - ETA: 1s - loss: 0.0425 - accuracy:  856/1083 [======================>.......] - ETA: 0s - loss: 0.0423 - accuracy:  871/1083 [=======================>......] - ETA: 0s - loss: 0.0425 - accuracy:  886/1083 [=======================>......] - ETA: 0s - loss: 0.0425 - accuracy:  901/1083 [=======================>......] - ETA: 0s - loss: 0.0423 - accuracy:  917/1083 [========================>.....] - ETA: 0s - loss: 0.0422 - accuracy:  932/1083 [========================>.....] - ETA: 0s - loss: 0.0423 - accuracy:  948/1083 [=========================>....] - ETA: 0s - loss: 0.0422 - accuracy:  963/1083 [=========================>....] - ETA: 0s - loss: 0.0423 - accuracy:  979/1083 [==========================>...] - ETA: 0s - loss: 0.0423 - accuracy:  994/1083 [==========================>...] - ETA: 0s - loss: 0.0424 - accuracy: 1009/1083 [==========================>...] - ETA: 0s - loss: 0.0422 - accuracy: 1024/1083 [===========================>..] - ETA: 0s - loss: 0.0421 - accuracy: 1034/1083 [===========================>..] - ETA: 0s - loss: 0.0421 - accuracy: 1045/1083 [===========================>..] - ETA: 0s - loss: 0.0419 - accuracy: 1058/1083 [============================>.] - ETA: 0s - loss: 0.0419 - accuracy: 1071/1083 [============================>.] - ETA: 0s - loss: 0.0418 - accuracy: 1083/1083 [==============================] - 4s 4ms/step - loss: 0.0418 - accuracy: 0.9789
Epoch 6/20
   1/1083 [..............................] - ETA: 4s - loss: 0.0699 - accuracy:   14/1083 [..............................] - ETA: 4s - loss: 0.0301 - accuracy:   27/1083 [..............................] - ETA: 4s - loss: 0.0335 - accuracy:   40/1083 [>.............................] - ETA: 4s - loss: 0.0353 - accuracy:   53/1083 [>.............................] - ETA: 4s - loss: 0.0389 - accuracy:   66/1083 [>.............................] - ETA: 4s - loss: 0.0374 - accuracy:   79/1083 [=>............................] - ETA: 3s - loss: 0.0371 - accuracy:   92/1083 [=>............................] - ETA: 3s - loss: 0.0373 - accuracy:  106/1083 [=>............................] - ETA: 3s - loss: 0.0378 - accuracy:  119/1083 [==>...........................] - ETA: 3s - loss: 0.0365 - accuracy:  133/1083 [==>...........................] - ETA: 3s - loss: 0.0367 - accuracy:  147/1083 [===>..........................] - ETA: 3s - loss: 0.0357 - accuracy:  158/1083 [===>..........................] - ETA: 3s - loss: 0.0366 - accuracy:  172/1083 [===>..........................] - ETA: 3s - loss: 0.0365 - accuracy:  188/1083 [====>.........................] - ETA: 3s - loss: 0.0367 - accuracy:  203/1083 [====>.........................] - ETA: 3s - loss: 0.0367 - accuracy:  219/1083 [=====>........................] - ETA: 3s - loss: 0.0365 - accuracy:  234/1083 [=====>........................] - ETA: 3s - loss: 0.0367 - accuracy:  250/1083 [=====>........................] - ETA: 3s - loss: 0.0368 - accuracy:  264/1083 [======>.......................] - ETA: 3s - loss: 0.0365 - accuracy:  280/1083 [======>.......................] - ETA: 2s - loss: 0.0362 - accuracy:  295/1083 [=======>......................] - ETA: 2s - loss: 0.0362 - accuracy:  310/1083 [=======>......................] - ETA: 2s - loss: 0.0367 - accuracy:  325/1083 [========>.....................] - ETA: 2s - loss: 0.0370 - accuracy:  341/1083 [========>.....................] - ETA: 2s - loss: 0.0369 - accuracy:  356/1083 [========>.....................] - ETA: 2s - loss: 0.0372 - accuracy:  372/1083 [=========>....................] - ETA: 2s - loss: 0.0370 - accuracy:  387/1083 [=========>....................] - ETA: 2s - loss: 0.0368 - accuracy:  402/1083 [==========>...................] - ETA: 2s - loss: 0.0369 - accuracy:  417/1083 [==========>...................] - ETA: 2s - loss: 0.0367 - accuracy:  433/1083 [==========>...................] - ETA: 2s - loss: 0.0367 - accuracy:  448/1083 [===========>..................] - ETA: 2s - loss: 0.0367 - accuracy:  463/1083 [===========>..................] - ETA: 2s - loss: 0.0370 - accuracy:  478/1083 [============>.................] - ETA: 2s - loss: 0.0365 - accuracy:  493/1083 [============>.................] - ETA: 2s - loss: 0.0363 - accuracy:  508/1083 [=============>................] - ETA: 2s - loss: 0.0360 - accuracy:  524/1083 [=============>................] - ETA: 1s - loss: 0.0360 - accuracy:  540/1083 [=============>................] - ETA: 1s - loss: 0.0356 - accuracy:  555/1083 [==============>...............] - ETA: 1s - loss: 0.0357 - accuracy:  570/1083 [==============>...............] - ETA: 1s - loss: 0.0353 - accuracy:  585/1083 [===============>..............] - ETA: 1s - loss: 0.0352 - accuracy:  598/1083 [===============>..............] - ETA: 1s - loss: 0.0352 - accuracy:  613/1083 [===============>..............] - ETA: 1s - loss: 0.0352 - accuracy:  626/1083 [================>.............] - ETA: 1s - loss: 0.0354 - accuracy:  642/1083 [================>.............] - ETA: 1s - loss: 0.0357 - accuracy:  658/1083 [=================>............] - ETA: 1s - loss: 0.0356 - accuracy:  674/1083 [=================>............] - ETA: 1s - loss: 0.0358 - accuracy:  689/1083 [==================>...........] - ETA: 1s - loss: 0.0357 - accuracy:  705/1083 [==================>...........] - ETA: 1s - loss: 0.0355 - accuracy:  720/1083 [==================>...........] - ETA: 1s - loss: 0.0358 - accuracy:  736/1083 [===================>..........] - ETA: 1s - loss: 0.0362 - accuracy:  748/1083 [===================>..........] - ETA: 1s - loss: 0.0365 - accuracy:  763/1083 [====================>.........] - ETA: 1s - loss: 0.0366 - accuracy:  778/1083 [====================>.........] - ETA: 1s - loss: 0.0366 - accuracy:  794/1083 [====================>.........] - ETA: 1s - loss: 0.0365 - accuracy:  810/1083 [=====================>........] - ETA: 0s - loss: 0.0364 - accuracy:  826/1083 [=====================>........] - ETA: 0s - loss: 0.0362 - accuracy:  841/1083 [======================>.......] - ETA: 0s - loss: 0.0362 - accuracy:  857/1083 [======================>.......] - ETA: 0s - loss: 0.0361 - accuracy:  873/1083 [=======================>......] - ETA: 0s - loss: 0.0360 - accuracy:  888/1083 [=======================>......] - ETA: 0s - loss: 0.0359 - accuracy:  901/1083 [=======================>......] - ETA: 0s - loss: 0.0358 - accuracy:  917/1083 [========================>.....] - ETA: 0s - loss: 0.0356 - accuracy:  932/1083 [========================>.....] - ETA: 0s - loss: 0.0356 - accuracy:  948/1083 [=========================>....] - ETA: 0s - loss: 0.0354 - accuracy:  963/1083 [=========================>....] - ETA: 0s - loss: 0.0353 - accuracy:  979/1083 [==========================>...] - ETA: 0s - loss: 0.0353 - accuracy:  994/1083 [==========================>...] - ETA: 0s - loss: 0.0352 - accuracy: 1010/1083 [==========================>...] - ETA: 0s - loss: 0.0351 - accuracy: 1025/1083 [===========================>..] - ETA: 0s - loss: 0.0350 - accuracy: 1041/1083 [===========================>..] - ETA: 0s - loss: 0.0349 - accuracy: 1055/1083 [============================>.] - ETA: 0s - loss: 0.0348 - accuracy: 1071/1083 [============================>.] - ETA: 0s - loss: 0.0346 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0345 - accuracy: 0.9821
Epoch 7/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0441 - accuracy:   16/1083 [..............................] - ETA: 3s - loss: 0.0328 - accuracy:   32/1083 [..............................] - ETA: 3s - loss: 0.0287 - accuracy:   49/1083 [>.............................] - ETA: 3s - loss: 0.0303 - accuracy:   64/1083 [>.............................] - ETA: 3s - loss: 0.0289 - accuracy:   80/1083 [=>............................] - ETA: 3s - loss: 0.0271 - accuracy:   96/1083 [=>............................] - ETA: 3s - loss: 0.0263 - accuracy:  111/1083 [==>...........................] - ETA: 3s - loss: 0.0255 - accuracy:  126/1083 [==>...........................] - ETA: 3s - loss: 0.0263 - accuracy:  142/1083 [==>...........................] - ETA: 3s - loss: 0.0270 - accuracy:  157/1083 [===>..........................] - ETA: 3s - loss: 0.0270 - accuracy:  173/1083 [===>..........................] - ETA: 3s - loss: 0.0274 - accuracy:  189/1083 [====>.........................] - ETA: 2s - loss: 0.0282 - accuracy:  205/1083 [====>.........................] - ETA: 2s - loss: 0.0279 - accuracy:  221/1083 [=====>........................] - ETA: 2s - loss: 0.0280 - accuracy:  237/1083 [=====>........................] - ETA: 2s - loss: 0.0278 - accuracy:  250/1083 [=====>........................] - ETA: 2s - loss: 0.0280 - accuracy:  264/1083 [======>.......................] - ETA: 2s - loss: 0.0282 - accuracy:  279/1083 [======>.......................] - ETA: 2s - loss: 0.0280 - accuracy:  293/1083 [=======>......................] - ETA: 2s - loss: 0.0277 - accuracy:  308/1083 [=======>......................] - ETA: 2s - loss: 0.0275 - accuracy:  323/1083 [=======>......................] - ETA: 2s - loss: 0.0280 - accuracy:  339/1083 [========>.....................] - ETA: 2s - loss: 0.0278 - accuracy:  354/1083 [========>.....................] - ETA: 2s - loss: 0.0275 - accuracy:  369/1083 [=========>....................] - ETA: 2s - loss: 0.0280 - accuracy:  385/1083 [=========>....................] - ETA: 2s - loss: 0.0279 - accuracy:  400/1083 [==========>...................] - ETA: 2s - loss: 0.0278 - accuracy:  416/1083 [==========>...................] - ETA: 2s - loss: 0.0279 - accuracy:  432/1083 [==========>...................] - ETA: 2s - loss: 0.0282 - accuracy:  448/1083 [===========>..................] - ETA: 2s - loss: 0.0283 - accuracy:  464/1083 [===========>..................] - ETA: 2s - loss: 0.0282 - accuracy:  480/1083 [============>.................] - ETA: 2s - loss: 0.0281 - accuracy:  495/1083 [============>.................] - ETA: 1s - loss: 0.0280 - accuracy:  511/1083 [=============>................] - ETA: 1s - loss: 0.0282 - accuracy:  527/1083 [=============>................] - ETA: 1s - loss: 0.0281 - accuracy:  543/1083 [==============>...............] - ETA: 1s - loss: 0.0280 - accuracy:  558/1083 [==============>...............] - ETA: 1s - loss: 0.0280 - accuracy:  574/1083 [==============>...............] - ETA: 1s - loss: 0.0281 - accuracy:  590/1083 [===============>..............] - ETA: 1s - loss: 0.0280 - accuracy:  606/1083 [===============>..............] - ETA: 1s - loss: 0.0280 - accuracy:  622/1083 [================>.............] - ETA: 1s - loss: 0.0280 - accuracy:  638/1083 [================>.............] - ETA: 1s - loss: 0.0281 - accuracy:  653/1083 [=================>............] - ETA: 1s - loss: 0.0282 - accuracy:  669/1083 [=================>............] - ETA: 1s - loss: 0.0282 - accuracy:  685/1083 [=================>............] - ETA: 1s - loss: 0.0284 - accuracy:  700/1083 [==================>...........] - ETA: 1s - loss: 0.0284 - accuracy:  714/1083 [==================>...........] - ETA: 1s - loss: 0.0284 - accuracy:  730/1083 [===================>..........] - ETA: 1s - loss: 0.0283 - accuracy:  745/1083 [===================>..........] - ETA: 1s - loss: 0.0284 - accuracy:  761/1083 [====================>.........] - ETA: 1s - loss: 0.0284 - accuracy:  777/1083 [====================>.........] - ETA: 1s - loss: 0.0285 - accuracy:  792/1083 [====================>.........] - ETA: 0s - loss: 0.0283 - accuracy:  807/1083 [=====================>........] - ETA: 0s - loss: 0.0284 - accuracy:  823/1083 [=====================>........] - ETA: 0s - loss: 0.0285 - accuracy:  839/1083 [======================>.......] - ETA: 0s - loss: 0.0284 - accuracy:  848/1083 [======================>.......] - ETA: 0s - loss: 0.0285 - accuracy:  861/1083 [======================>.......] - ETA: 0s - loss: 0.0285 - accuracy:  876/1083 [=======================>......] - ETA: 0s - loss: 0.0285 - accuracy:  890/1083 [=======================>......] - ETA: 0s - loss: 0.0285 - accuracy:  905/1083 [========================>.....] - ETA: 0s - loss: 0.0285 - accuracy:  918/1083 [========================>.....] - ETA: 0s - loss: 0.0284 - accuracy:  933/1083 [========================>.....] - ETA: 0s - loss: 0.0283 - accuracy:  948/1083 [=========================>....] - ETA: 0s - loss: 0.0283 - accuracy:  963/1083 [=========================>....] - ETA: 0s - loss: 0.0282 - accuracy:  976/1083 [==========================>...] - ETA: 0s - loss: 0.0282 - accuracy:  991/1083 [==========================>...] - ETA: 0s - loss: 0.0281 - accuracy: 1007/1083 [==========================>...] - ETA: 0s - loss: 0.0282 - accuracy: 1023/1083 [===========================>..] - ETA: 0s - loss: 0.0281 - accuracy: 1031/1083 [===========================>..] - ETA: 0s - loss: 0.0281 - accuracy: 1046/1083 [===========================>..] - ETA: 0s - loss: 0.0281 - accuracy: 1062/1083 [============================>.] - ETA: 0s - loss: 0.0281 - accuracy: 1079/1083 [============================>.] - ETA: 0s - loss: 0.0280 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0279 - accuracy: 0.9862
Epoch 8/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0036 - accuracy:   16/1083 [..............................] - ETA: 3s - loss: 0.0283 - accuracy:   31/1083 [..............................] - ETA: 3s - loss: 0.0266 - accuracy:   47/1083 [>.............................] - ETA: 3s - loss: 0.0285 - accuracy:   63/1083 [>.............................] - ETA: 3s - loss: 0.0301 - accuracy:   80/1083 [=>............................] - ETA: 3s - loss: 0.0290 - accuracy:   96/1083 [=>............................] - ETA: 3s - loss: 0.0284 - accuracy:  111/1083 [==>...........................] - ETA: 3s - loss: 0.0282 - accuracy:  127/1083 [==>...........................] - ETA: 3s - loss: 0.0280 - accuracy:  143/1083 [==>...........................] - ETA: 3s - loss: 0.0277 - accuracy:  158/1083 [===>..........................] - ETA: 3s - loss: 0.0285 - accuracy:  175/1083 [===>..........................] - ETA: 2s - loss: 0.0301 - accuracy:  190/1083 [====>.........................] - ETA: 2s - loss: 0.0298 - accuracy:  204/1083 [====>.........................] - ETA: 2s - loss: 0.0302 - accuracy:  218/1083 [=====>........................] - ETA: 2s - loss: 0.0296 - accuracy:  233/1083 [=====>........................] - ETA: 2s - loss: 0.0296 - accuracy:  248/1083 [=====>........................] - ETA: 2s - loss: 0.0298 - accuracy:  264/1083 [======>.......................] - ETA: 2s - loss: 0.0293 - accuracy:  279/1083 [======>.......................] - ETA: 2s - loss: 0.0291 - accuracy:  295/1083 [=======>......................] - ETA: 2s - loss: 0.0287 - accuracy:  311/1083 [=======>......................] - ETA: 2s - loss: 0.0283 - accuracy:  327/1083 [========>.....................] - ETA: 2s - loss: 0.0281 - accuracy:  341/1083 [========>.....................] - ETA: 2s - loss: 0.0278 - accuracy:  354/1083 [========>.....................] - ETA: 2s - loss: 0.0275 - accuracy:  369/1083 [=========>....................] - ETA: 2s - loss: 0.0273 - accuracy:  385/1083 [=========>....................] - ETA: 2s - loss: 0.0269 - accuracy:  400/1083 [==========>...................] - ETA: 2s - loss: 0.0270 - accuracy:  417/1083 [==========>...................] - ETA: 2s - loss: 0.0268 - accuracy:  433/1083 [==========>...................] - ETA: 2s - loss: 0.0268 - accuracy:  449/1083 [===========>..................] - ETA: 2s - loss: 0.0269 - accuracy:  464/1083 [===========>..................] - ETA: 2s - loss: 0.0266 - accuracy:  480/1083 [============>.................] - ETA: 2s - loss: 0.0264 - accuracy:  495/1083 [============>.................] - ETA: 1s - loss: 0.0264 - accuracy:  510/1083 [=============>................] - ETA: 1s - loss: 0.0262 - accuracy:  524/1083 [=============>................] - ETA: 1s - loss: 0.0262 - accuracy:  540/1083 [=============>................] - ETA: 1s - loss: 0.0260 - accuracy:  556/1083 [==============>...............] - ETA: 1s - loss: 0.0258 - accuracy:  570/1083 [==============>...............] - ETA: 1s - loss: 0.0257 - accuracy:  584/1083 [===============>..............] - ETA: 1s - loss: 0.0255 - accuracy:  599/1083 [===============>..............] - ETA: 1s - loss: 0.0254 - accuracy:  615/1083 [================>.............] - ETA: 1s - loss: 0.0255 - accuracy:  631/1083 [================>.............] - ETA: 1s - loss: 0.0256 - accuracy:  647/1083 [================>.............] - ETA: 1s - loss: 0.0255 - accuracy:  663/1083 [=================>............] - ETA: 1s - loss: 0.0254 - accuracy:  678/1083 [=================>............] - ETA: 1s - loss: 0.0253 - accuracy:  694/1083 [==================>...........] - ETA: 1s - loss: 0.0252 - accuracy:  709/1083 [==================>...........] - ETA: 1s - loss: 0.0249 - accuracy:  724/1083 [===================>..........] - ETA: 1s - loss: 0.0249 - accuracy:  739/1083 [===================>..........] - ETA: 1s - loss: 0.0249 - accuracy:  756/1083 [===================>..........] - ETA: 1s - loss: 0.0249 - accuracy:  771/1083 [====================>.........] - ETA: 1s - loss: 0.0254 - accuracy:  787/1083 [====================>.........] - ETA: 0s - loss: 0.0254 - accuracy:  802/1083 [=====================>........] - ETA: 0s - loss: 0.0253 - accuracy:  817/1083 [=====================>........] - ETA: 0s - loss: 0.0253 - accuracy:  833/1083 [======================>.......] - ETA: 0s - loss: 0.0252 - accuracy:  848/1083 [======================>.......] - ETA: 0s - loss: 0.0252 - accuracy:  862/1083 [======================>.......] - ETA: 0s - loss: 0.0252 - accuracy:  878/1083 [=======================>......] - ETA: 0s - loss: 0.0252 - accuracy:  894/1083 [=======================>......] - ETA: 0s - loss: 0.0250 - accuracy:  910/1083 [========================>.....] - ETA: 0s - loss: 0.0250 - accuracy:  926/1083 [========================>.....] - ETA: 0s - loss: 0.0249 - accuracy:  941/1083 [=========================>....] - ETA: 0s - loss: 0.0248 - accuracy:  954/1083 [=========================>....] - ETA: 0s - loss: 0.0248 - accuracy:  969/1083 [=========================>....] - ETA: 0s - loss: 0.0246 - accuracy:  986/1083 [==========================>...] - ETA: 0s - loss: 0.0245 - accuracy: 1002/1083 [==========================>...] - ETA: 0s - loss: 0.0244 - accuracy: 1017/1083 [===========================>..] - ETA: 0s - loss: 0.0243 - accuracy: 1033/1083 [===========================>..] - ETA: 0s - loss: 0.0241 - accuracy: 1046/1083 [===========================>..] - ETA: 0s - loss: 0.0241 - accuracy: 1060/1083 [============================>.] - ETA: 0s - loss: 0.0242 - accuracy: 1074/1083 [============================>.] - ETA: 0s - loss: 0.0240 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0241 - accuracy: 0.9885
Epoch 9/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0073 - accuracy:   17/1083 [..............................] - ETA: 3s - loss: 0.0169 - accuracy:   32/1083 [..............................] - ETA: 3s - loss: 0.0165 - accuracy:   48/1083 [>.............................] - ETA: 3s - loss: 0.0188 - accuracy:   63/1083 [>.............................] - ETA: 3s - loss: 0.0180 - accuracy:   79/1083 [=>............................] - ETA: 3s - loss: 0.0181 - accuracy:   95/1083 [=>............................] - ETA: 3s - loss: 0.0187 - accuracy:  111/1083 [==>...........................] - ETA: 3s - loss: 0.0186 - accuracy:  127/1083 [==>...........................] - ETA: 3s - loss: 0.0180 - accuracy:  143/1083 [==>...........................] - ETA: 3s - loss: 0.0185 - accuracy:  156/1083 [===>..........................] - ETA: 3s - loss: 0.0181 - accuracy:  171/1083 [===>..........................] - ETA: 3s - loss: 0.0190 - accuracy:  186/1083 [====>.........................] - ETA: 3s - loss: 0.0192 - accuracy:  202/1083 [====>.........................] - ETA: 2s - loss: 0.0191 - accuracy:  217/1083 [=====>........................] - ETA: 2s - loss: 0.0193 - accuracy:  233/1083 [=====>........................] - ETA: 2s - loss: 0.0201 - accuracy:  249/1083 [=====>........................] - ETA: 2s - loss: 0.0201 - accuracy:  265/1083 [======>.......................] - ETA: 2s - loss: 0.0203 - accuracy:  281/1083 [======>.......................] - ETA: 2s - loss: 0.0201 - accuracy:  297/1083 [=======>......................] - ETA: 2s - loss: 0.0203 - accuracy:  312/1083 [=======>......................] - ETA: 2s - loss: 0.0205 - accuracy:  328/1083 [========>.....................] - ETA: 2s - loss: 0.0205 - accuracy:  343/1083 [========>.....................] - ETA: 2s - loss: 0.0207 - accuracy:  358/1083 [========>.....................] - ETA: 2s - loss: 0.0212 - accuracy:  374/1083 [=========>....................] - ETA: 2s - loss: 0.0210 - accuracy:  390/1083 [=========>....................] - ETA: 2s - loss: 0.0213 - accuracy:  404/1083 [==========>...................] - ETA: 2s - loss: 0.0214 - accuracy:  420/1083 [==========>...................] - ETA: 2s - loss: 0.0212 - accuracy:  436/1083 [===========>..................] - ETA: 2s - loss: 0.0210 - accuracy:  450/1083 [===========>..................] - ETA: 2s - loss: 0.0209 - accuracy:  464/1083 [===========>..................] - ETA: 2s - loss: 0.0210 - accuracy:  480/1083 [============>.................] - ETA: 2s - loss: 0.0211 - accuracy:  494/1083 [============>.................] - ETA: 1s - loss: 0.0210 - accuracy:  510/1083 [=============>................] - ETA: 1s - loss: 0.0212 - accuracy:  526/1083 [=============>................] - ETA: 1s - loss: 0.0212 - accuracy:  541/1083 [=============>................] - ETA: 1s - loss: 0.0213 - accuracy:  556/1083 [==============>...............] - ETA: 1s - loss: 0.0213 - accuracy:  572/1083 [==============>...............] - ETA: 1s - loss: 0.0212 - accuracy:  586/1083 [===============>..............] - ETA: 1s - loss: 0.0214 - accuracy:  601/1083 [===============>..............] - ETA: 1s - loss: 0.0213 - accuracy:  617/1083 [================>.............] - ETA: 1s - loss: 0.0213 - accuracy:  633/1083 [================>.............] - ETA: 1s - loss: 0.0214 - accuracy:  648/1083 [================>.............] - ETA: 1s - loss: 0.0216 - accuracy:  663/1083 [=================>............] - ETA: 1s - loss: 0.0215 - accuracy:  679/1083 [=================>............] - ETA: 1s - loss: 0.0213 - accuracy:  695/1083 [==================>...........] - ETA: 1s - loss: 0.0214 - accuracy:  709/1083 [==================>...........] - ETA: 1s - loss: 0.0214 - accuracy:  725/1083 [===================>..........] - ETA: 1s - loss: 0.0212 - accuracy:  740/1083 [===================>..........] - ETA: 1s - loss: 0.0211 - accuracy:  756/1083 [===================>..........] - ETA: 1s - loss: 0.0210 - accuracy:  772/1083 [====================>.........] - ETA: 1s - loss: 0.0211 - accuracy:  788/1083 [====================>.........] - ETA: 0s - loss: 0.0211 - accuracy:  803/1083 [=====================>........] - ETA: 0s - loss: 0.0211 - accuracy:  819/1083 [=====================>........] - ETA: 0s - loss: 0.0210 - accuracy:  834/1083 [======================>.......] - ETA: 0s - loss: 0.0211 - accuracy:  850/1083 [======================>.......] - ETA: 0s - loss: 0.0210 - accuracy:  865/1083 [======================>.......] - ETA: 0s - loss: 0.0209 - accuracy:  881/1083 [=======================>......] - ETA: 0s - loss: 0.0209 - accuracy:  896/1083 [=======================>......] - ETA: 0s - loss: 0.0209 - accuracy:  911/1083 [========================>.....] - ETA: 0s - loss: 0.0207 - accuracy:  926/1083 [========================>.....] - ETA: 0s - loss: 0.0206 - accuracy:  941/1083 [=========================>....] - ETA: 0s - loss: 0.0206 - accuracy:  956/1083 [=========================>....] - ETA: 0s - loss: 0.0206 - accuracy:  972/1083 [=========================>....] - ETA: 0s - loss: 0.0205 - accuracy:  987/1083 [==========================>...] - ETA: 0s - loss: 0.0205 - accuracy: 1003/1083 [==========================>...] - ETA: 0s - loss: 0.0205 - accuracy: 1018/1083 [===========================>..] - ETA: 0s - loss: 0.0206 - accuracy: 1034/1083 [===========================>..] - ETA: 0s - loss: 0.0205 - accuracy: 1047/1083 [============================>.] - ETA: 0s - loss: 0.0204 - accuracy: 1062/1083 [============================>.] - ETA: 0s - loss: 0.0205 - accuracy: 1078/1083 [============================>.] - ETA: 0s - loss: 0.0205 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0204 - accuracy: 0.9897
Epoch 10/20
   1/1083 [..............................] - ETA: 4s - loss: 0.0178 - accuracy:   18/1083 [..............................] - ETA: 3s - loss: 0.0250 - accuracy:   34/1083 [..............................] - ETA: 3s - loss: 0.0211 - accuracy:   50/1083 [>.............................] - ETA: 3s - loss: 0.0180 - accuracy:   65/1083 [>.............................] - ETA: 3s - loss: 0.0188 - accuracy:   82/1083 [=>............................] - ETA: 3s - loss: 0.0173 - accuracy:   97/1083 [=>............................] - ETA: 3s - loss: 0.0177 - accuracy:  112/1083 [==>...........................] - ETA: 3s - loss: 0.0177 - accuracy:  127/1083 [==>...........................] - ETA: 3s - loss: 0.0185 - accuracy:  142/1083 [==>...........................] - ETA: 3s - loss: 0.0189 - accuracy:  157/1083 [===>..........................] - ETA: 3s - loss: 0.0190 - accuracy:  173/1083 [===>..........................] - ETA: 2s - loss: 0.0190 - accuracy:  189/1083 [====>.........................] - ETA: 2s - loss: 0.0186 - accuracy:  205/1083 [====>.........................] - ETA: 2s - loss: 0.0180 - accuracy:  221/1083 [=====>........................] - ETA: 2s - loss: 0.0178 - accuracy:  237/1083 [=====>........................] - ETA: 2s - loss: 0.0172 - accuracy:  253/1083 [======>.......................] - ETA: 2s - loss: 0.0175 - accuracy:  269/1083 [======>.......................] - ETA: 2s - loss: 0.0171 - accuracy:  284/1083 [======>.......................] - ETA: 2s - loss: 0.0172 - accuracy:  300/1083 [=======>......................] - ETA: 2s - loss: 0.0178 - accuracy:  316/1083 [=======>......................] - ETA: 2s - loss: 0.0180 - accuracy:  332/1083 [========>.....................] - ETA: 2s - loss: 0.0181 - accuracy:  347/1083 [========>.....................] - ETA: 2s - loss: 0.0178 - accuracy:  363/1083 [=========>....................] - ETA: 2s - loss: 0.0176 - accuracy:  378/1083 [=========>....................] - ETA: 2s - loss: 0.0180 - accuracy:  394/1083 [=========>....................] - ETA: 2s - loss: 0.0180 - accuracy:  410/1083 [==========>...................] - ETA: 2s - loss: 0.0177 - accuracy:  425/1083 [==========>...................] - ETA: 2s - loss: 0.0178 - accuracy:  440/1083 [===========>..................] - ETA: 2s - loss: 0.0175 - accuracy:  456/1083 [===========>..................] - ETA: 2s - loss: 0.0175 - accuracy:  472/1083 [============>.................] - ETA: 2s - loss: 0.0173 - accuracy:  487/1083 [============>.................] - ETA: 1s - loss: 0.0174 - accuracy:  502/1083 [============>.................] - ETA: 1s - loss: 0.0172 - accuracy:  518/1083 [=============>................] - ETA: 1s - loss: 0.0170 - accuracy:  534/1083 [=============>................] - ETA: 1s - loss: 0.0171 - accuracy:  550/1083 [==============>...............] - ETA: 1s - loss: 0.0174 - accuracy:  566/1083 [==============>...............] - ETA: 1s - loss: 0.0175 - accuracy:  581/1083 [===============>..............] - ETA: 1s - loss: 0.0175 - accuracy:  594/1083 [===============>..............] - ETA: 1s - loss: 0.0175 - accuracy:  610/1083 [===============>..............] - ETA: 1s - loss: 0.0176 - accuracy:  626/1083 [================>.............] - ETA: 1s - loss: 0.0176 - accuracy:  643/1083 [================>.............] - ETA: 1s - loss: 0.0176 - accuracy:  659/1083 [=================>............] - ETA: 1s - loss: 0.0175 - accuracy:  675/1083 [=================>............] - ETA: 1s - loss: 0.0173 - accuracy:  691/1083 [==================>...........] - ETA: 1s - loss: 0.0174 - accuracy:  707/1083 [==================>...........] - ETA: 1s - loss: 0.0177 - accuracy:  723/1083 [===================>..........] - ETA: 1s - loss: 0.0176 - accuracy:  739/1083 [===================>..........] - ETA: 1s - loss: 0.0178 - accuracy:  754/1083 [===================>..........] - ETA: 1s - loss: 0.0177 - accuracy:  769/1083 [====================>.........] - ETA: 1s - loss: 0.0178 - accuracy:  784/1083 [====================>.........] - ETA: 0s - loss: 0.0177 - accuracy:  800/1083 [=====================>........] - ETA: 0s - loss: 0.0178 - accuracy:  816/1083 [=====================>........] - ETA: 0s - loss: 0.0177 - accuracy:  831/1083 [======================>.......] - ETA: 0s - loss: 0.0177 - accuracy:  846/1083 [======================>.......] - ETA: 0s - loss: 0.0177 - accuracy:  862/1083 [======================>.......] - ETA: 0s - loss: 0.0177 - accuracy:  876/1083 [=======================>......] - ETA: 0s - loss: 0.0177 - accuracy:  892/1083 [=======================>......] - ETA: 0s - loss: 0.0178 - accuracy:  907/1083 [========================>.....] - ETA: 0s - loss: 0.0177 - accuracy:  922/1083 [========================>.....] - ETA: 0s - loss: 0.0177 - accuracy:  937/1083 [========================>.....] - ETA: 0s - loss: 0.0178 - accuracy:  952/1083 [=========================>....] - ETA: 0s - loss: 0.0178 - accuracy:  968/1083 [=========================>....] - ETA: 0s - loss: 0.0177 - accuracy:  984/1083 [==========================>...] - ETA: 0s - loss: 0.0176 - accuracy:  994/1083 [==========================>...] - ETA: 0s - loss: 0.0176 - accuracy: 1004/1083 [==========================>...] - ETA: 0s - loss: 0.0175 - accuracy: 1016/1083 [===========================>..] - ETA: 0s - loss: 0.0175 - accuracy: 1031/1083 [===========================>..] - ETA: 0s - loss: 0.0174 - accuracy: 1046/1083 [===========================>..] - ETA: 0s - loss: 0.0174 - accuracy: 1062/1083 [============================>.] - ETA: 0s - loss: 0.0173 - accuracy: 1077/1083 [============================>.] - ETA: 0s - loss: 0.0172 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0172 - accuracy: 0.9914
Epoch 11/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0013 - accuracy:   17/1083 [..............................] - ETA: 3s - loss: 0.0195 - accuracy:   32/1083 [..............................] - ETA: 3s - loss: 0.0164 - accuracy:   47/1083 [>.............................] - ETA: 3s - loss: 0.0137 - accuracy:   62/1083 [>.............................] - ETA: 3s - loss: 0.0143 - accuracy:   76/1083 [=>............................] - ETA: 3s - loss: 0.0141 - accuracy:   91/1083 [=>............................] - ETA: 3s - loss: 0.0155 - accuracy:  106/1083 [=>............................] - ETA: 3s - loss: 0.0163 - accuracy:  122/1083 [==>...........................] - ETA: 3s - loss: 0.0161 - accuracy:  138/1083 [==>...........................] - ETA: 3s - loss: 0.0161 - accuracy:  154/1083 [===>..........................] - ETA: 3s - loss: 0.0156 - accuracy:  170/1083 [===>..........................] - ETA: 3s - loss: 0.0148 - accuracy:  186/1083 [====>.........................] - ETA: 3s - loss: 0.0145 - accuracy:  202/1083 [====>.........................] - ETA: 2s - loss: 0.0145 - accuracy:  218/1083 [=====>........................] - ETA: 2s - loss: 0.0143 - accuracy:  234/1083 [=====>........................] - ETA: 2s - loss: 0.0148 - accuracy:  249/1083 [=====>........................] - ETA: 2s - loss: 0.0151 - accuracy:  264/1083 [======>.......................] - ETA: 2s - loss: 0.0152 - accuracy:  280/1083 [======>.......................] - ETA: 2s - loss: 0.0149 - accuracy:  296/1083 [=======>......................] - ETA: 2s - loss: 0.0151 - accuracy:  312/1083 [=======>......................] - ETA: 2s - loss: 0.0148 - accuracy:  328/1083 [========>.....................] - ETA: 2s - loss: 0.0148 - accuracy:  341/1083 [========>.....................] - ETA: 2s - loss: 0.0150 - accuracy:  357/1083 [========>.....................] - ETA: 2s - loss: 0.0151 - accuracy:  372/1083 [=========>....................] - ETA: 2s - loss: 0.0153 - accuracy:  387/1083 [=========>....................] - ETA: 2s - loss: 0.0155 - accuracy:  403/1083 [==========>...................] - ETA: 2s - loss: 0.0155 - accuracy:  419/1083 [==========>...................] - ETA: 2s - loss: 0.0154 - accuracy:  435/1083 [===========>..................] - ETA: 2s - loss: 0.0154 - accuracy:  452/1083 [===========>..................] - ETA: 2s - loss: 0.0154 - accuracy:  466/1083 [===========>..................] - ETA: 2s - loss: 0.0153 - accuracy:  482/1083 [============>.................] - ETA: 2s - loss: 0.0155 - accuracy:  497/1083 [============>.................] - ETA: 1s - loss: 0.0155 - accuracy:  512/1083 [=============>................] - ETA: 1s - loss: 0.0155 - accuracy:  525/1083 [=============>................] - ETA: 1s - loss: 0.0154 - accuracy:  540/1083 [=============>................] - ETA: 1s - loss: 0.0154 - accuracy:  553/1083 [==============>...............] - ETA: 1s - loss: 0.0153 - accuracy:  568/1083 [==============>...............] - ETA: 1s - loss: 0.0152 - accuracy:  582/1083 [===============>..............] - ETA: 1s - loss: 0.0151 - accuracy:  597/1083 [===============>..............] - ETA: 1s - loss: 0.0152 - accuracy:  610/1083 [===============>..............] - ETA: 1s - loss: 0.0153 - accuracy:  626/1083 [================>.............] - ETA: 1s - loss: 0.0153 - accuracy:  641/1083 [================>.............] - ETA: 1s - loss: 0.0151 - accuracy:  655/1083 [=================>............] - ETA: 1s - loss: 0.0151 - accuracy:  668/1083 [=================>............] - ETA: 1s - loss: 0.0151 - accuracy:  684/1083 [=================>............] - ETA: 1s - loss: 0.0149 - accuracy:  697/1083 [==================>...........] - ETA: 1s - loss: 0.0150 - accuracy:  712/1083 [==================>...........] - ETA: 1s - loss: 0.0149 - accuracy:  726/1083 [===================>..........] - ETA: 1s - loss: 0.0149 - accuracy:  741/1083 [===================>..........] - ETA: 1s - loss: 0.0148 - accuracy:  755/1083 [===================>..........] - ETA: 1s - loss: 0.0147 - accuracy:  769/1083 [====================>.........] - ETA: 1s - loss: 0.0146 - accuracy:  784/1083 [====================>.........] - ETA: 1s - loss: 0.0145 - accuracy:  795/1083 [=====================>........] - ETA: 0s - loss: 0.0147 - accuracy:  807/1083 [=====================>........] - ETA: 0s - loss: 0.0149 - accuracy:  823/1083 [=====================>........] - ETA: 0s - loss: 0.0150 - accuracy:  835/1083 [======================>.......] - ETA: 0s - loss: 0.0150 - accuracy:  846/1083 [======================>.......] - ETA: 0s - loss: 0.0149 - accuracy:  861/1083 [======================>.......] - ETA: 0s - loss: 0.0150 - accuracy:  876/1083 [=======================>......] - ETA: 0s - loss: 0.0150 - accuracy:  892/1083 [=======================>......] - ETA: 0s - loss: 0.0152 - accuracy:  908/1083 [========================>.....] - ETA: 0s - loss: 0.0152 - accuracy:  922/1083 [========================>.....] - ETA: 0s - loss: 0.0152 - accuracy:  936/1083 [========================>.....] - ETA: 0s - loss: 0.0152 - accuracy:  946/1083 [=========================>....] - ETA: 0s - loss: 0.0151 - accuracy:  960/1083 [=========================>....] - ETA: 0s - loss: 0.0150 - accuracy:  973/1083 [=========================>....] - ETA: 0s - loss: 0.0151 - accuracy:  986/1083 [==========================>...] - ETA: 0s - loss: 0.0151 - accuracy: 1000/1083 [==========================>...] - ETA: 0s - loss: 0.0152 - accuracy: 1016/1083 [===========================>..] - ETA: 0s - loss: 0.0152 - accuracy: 1030/1083 [===========================>..] - ETA: 0s - loss: 0.0151 - accuracy: 1040/1083 [===========================>..] - ETA: 0s - loss: 0.0152 - accuracy: 1050/1083 [============================>.] - ETA: 0s - loss: 0.0151 - accuracy: 1063/1083 [============================>.] - ETA: 0s - loss: 0.0150 - accuracy: 1075/1083 [============================>.] - ETA: 0s - loss: 0.0150 - accuracy: 1083/1083 [==============================] - 4s 4ms/step - loss: 0.0150 - accuracy: 0.9924
Epoch 12/20
   1/1083 [..............................] - ETA: 4s - loss: 0.0026 - accuracy:   13/1083 [..............................] - ETA: 4s - loss: 0.0092 - accuracy:   25/1083 [..............................] - ETA: 4s - loss: 0.0106 - accuracy:   37/1083 [>.............................] - ETA: 4s - loss: 0.0107 - accuracy:   50/1083 [>.............................] - ETA: 4s - loss: 0.0122 - accuracy:   63/1083 [>.............................] - ETA: 4s - loss: 0.0125 - accuracy:   76/1083 [=>............................] - ETA: 4s - loss: 0.0127 - accuracy:   87/1083 [=>............................] - ETA: 4s - loss: 0.0120 - accuracy:  100/1083 [=>............................] - ETA: 4s - loss: 0.0126 - accuracy:  113/1083 [==>...........................] - ETA: 4s - loss: 0.0123 - accuracy:  129/1083 [==>...........................] - ETA: 3s - loss: 0.0121 - accuracy:  144/1083 [==>...........................] - ETA: 3s - loss: 0.0124 - accuracy:  159/1083 [===>..........................] - ETA: 3s - loss: 0.0133 - accuracy:  174/1083 [===>..........................] - ETA: 3s - loss: 0.0133 - accuracy:  187/1083 [====>.........................] - ETA: 3s - loss: 0.0132 - accuracy:  201/1083 [====>.........................] - ETA: 3s - loss: 0.0133 - accuracy:  216/1083 [====>.........................] - ETA: 3s - loss: 0.0129 - accuracy:  230/1083 [=====>........................] - ETA: 3s - loss: 0.0127 - accuracy:  243/1083 [=====>........................] - ETA: 3s - loss: 0.0131 - accuracy:  255/1083 [======>.......................] - ETA: 3s - loss: 0.0130 - accuracy:  269/1083 [======>.......................] - ETA: 3s - loss: 0.0130 - accuracy:  282/1083 [======>.......................] - ETA: 3s - loss: 0.0129 - accuracy:  297/1083 [=======>......................] - ETA: 3s - loss: 0.0128 - accuracy:  311/1083 [=======>......................] - ETA: 2s - loss: 0.0126 - accuracy:  320/1083 [=======>......................] - ETA: 2s - loss: 0.0127 - accuracy:  332/1083 [========>.....................] - ETA: 2s - loss: 0.0128 - accuracy:  345/1083 [========>.....................] - ETA: 2s - loss: 0.0126 - accuracy:  356/1083 [========>.....................] - ETA: 2s - loss: 0.0127 - accuracy:  367/1083 [=========>....................] - ETA: 2s - loss: 0.0127 - accuracy:  378/1083 [=========>....................] - ETA: 2s - loss: 0.0128 - accuracy:  390/1083 [=========>....................] - ETA: 2s - loss: 0.0127 - accuracy:  403/1083 [==========>...................] - ETA: 2s - loss: 0.0131 - accuracy:  415/1083 [==========>...................] - ETA: 2s - loss: 0.0131 - accuracy:  428/1083 [==========>...................] - ETA: 2s - loss: 0.0133 - accuracy:  441/1083 [===========>..................] - ETA: 2s - loss: 0.0134 - accuracy:  455/1083 [===========>..................] - ETA: 2s - loss: 0.0134 - accuracy:  468/1083 [===========>..................] - ETA: 2s - loss: 0.0133 - accuracy:  482/1083 [============>.................] - ETA: 2s - loss: 0.0132 - accuracy:  495/1083 [============>.................] - ETA: 2s - loss: 0.0131 - accuracy:  509/1083 [=============>................] - ETA: 2s - loss: 0.0132 - accuracy:  522/1083 [=============>................] - ETA: 2s - loss: 0.0131 - accuracy:  535/1083 [=============>................] - ETA: 2s - loss: 0.0130 - accuracy:  548/1083 [==============>...............] - ETA: 2s - loss: 0.0132 - accuracy:  562/1083 [==============>...............] - ETA: 2s - loss: 0.0132 - accuracy:  575/1083 [==============>...............] - ETA: 2s - loss: 0.0132 - accuracy:  591/1083 [===============>..............] - ETA: 1s - loss: 0.0131 - accuracy:  604/1083 [===============>..............] - ETA: 1s - loss: 0.0132 - accuracy:  620/1083 [================>.............] - ETA: 1s - loss: 0.0132 - accuracy:  636/1083 [================>.............] - ETA: 1s - loss: 0.0130 - accuracy:  652/1083 [=================>............] - ETA: 1s - loss: 0.0129 - accuracy:  667/1083 [=================>............] - ETA: 1s - loss: 0.0130 - accuracy:  683/1083 [=================>............] - ETA: 1s - loss: 0.0131 - accuracy:  698/1083 [==================>...........] - ETA: 1s - loss: 0.0129 - accuracy:  714/1083 [==================>...........] - ETA: 1s - loss: 0.0129 - accuracy:  729/1083 [===================>..........] - ETA: 1s - loss: 0.0130 - accuracy:  744/1083 [===================>..........] - ETA: 1s - loss: 0.0129 - accuracy:  759/1083 [====================>.........] - ETA: 1s - loss: 0.0128 - accuracy:  775/1083 [====================>.........] - ETA: 1s - loss: 0.0127 - accuracy:  790/1083 [====================>.........] - ETA: 1s - loss: 0.0128 - accuracy:  806/1083 [=====================>........] - ETA: 1s - loss: 0.0128 - accuracy:  821/1083 [=====================>........] - ETA: 0s - loss: 0.0128 - accuracy:  837/1083 [======================>.......] - ETA: 0s - loss: 0.0127 - accuracy:  852/1083 [======================>.......] - ETA: 0s - loss: 0.0127 - accuracy:  868/1083 [=======================>......] - ETA: 0s - loss: 0.0126 - accuracy:  884/1083 [=======================>......] - ETA: 0s - loss: 0.0125 - accuracy:  899/1083 [=======================>......] - ETA: 0s - loss: 0.0124 - accuracy:  914/1083 [========================>.....] - ETA: 0s - loss: 0.0124 - accuracy:  929/1083 [========================>.....] - ETA: 0s - loss: 0.0124 - accuracy:  943/1083 [=========================>....] - ETA: 0s - loss: 0.0124 - accuracy:  959/1083 [=========================>....] - ETA: 0s - loss: 0.0125 - accuracy:  973/1083 [=========================>....] - ETA: 0s - loss: 0.0125 - accuracy:  988/1083 [==========================>...] - ETA: 0s - loss: 0.0124 - accuracy: 1004/1083 [==========================>...] - ETA: 0s - loss: 0.0126 - accuracy: 1020/1083 [===========================>..] - ETA: 0s - loss: 0.0126 - accuracy: 1034/1083 [===========================>..] - ETA: 0s - loss: 0.0125 - accuracy: 1049/1083 [============================>.] - ETA: 0s - loss: 0.0125 - accuracy: 1065/1083 [============================>.] - ETA: 0s - loss: 0.0124 - accuracy: 1081/1083 [============================>.] - ETA: 0s - loss: 0.0123 - accuracy: 1083/1083 [==============================] - 4s 4ms/step - loss: 0.0123 - accuracy: 0.9937
Epoch 13/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0072 - accuracy:   16/1083 [..............................] - ETA: 3s - loss: 0.0097 - accuracy:   32/1083 [..............................] - ETA: 3s - loss: 0.0112 - accuracy:   48/1083 [>.............................] - ETA: 3s - loss: 0.0114 - accuracy:   63/1083 [>.............................] - ETA: 3s - loss: 0.0102 - accuracy:   78/1083 [=>............................] - ETA: 3s - loss: 0.0121 - accuracy:   93/1083 [=>............................] - ETA: 3s - loss: 0.0119 - accuracy:  106/1083 [=>............................] - ETA: 3s - loss: 0.0123 - accuracy:  121/1083 [==>...........................] - ETA: 3s - loss: 0.0126 - accuracy:  137/1083 [==>...........................] - ETA: 3s - loss: 0.0124 - accuracy:  152/1083 [===>..........................] - ETA: 3s - loss: 0.0125 - accuracy:  168/1083 [===>..........................] - ETA: 3s - loss: 0.0126 - accuracy:  183/1083 [====>.........................] - ETA: 3s - loss: 0.0126 - accuracy:  199/1083 [====>.........................] - ETA: 2s - loss: 0.0126 - accuracy:  213/1083 [====>.........................] - ETA: 2s - loss: 0.0124 - accuracy:  229/1083 [=====>........................] - ETA: 2s - loss: 0.0125 - accuracy:  243/1083 [=====>........................] - ETA: 2s - loss: 0.0123 - accuracy:  259/1083 [======>.......................] - ETA: 2s - loss: 0.0122 - accuracy:  274/1083 [======>.......................] - ETA: 2s - loss: 0.0119 - accuracy:  290/1083 [=======>......................] - ETA: 2s - loss: 0.0117 - accuracy:  306/1083 [=======>......................] - ETA: 2s - loss: 0.0116 - accuracy:  321/1083 [=======>......................] - ETA: 2s - loss: 0.0115 - accuracy:  336/1083 [========>.....................] - ETA: 2s - loss: 0.0114 - accuracy:  351/1083 [========>.....................] - ETA: 2s - loss: 0.0116 - accuracy:  366/1083 [=========>....................] - ETA: 2s - loss: 0.0114 - accuracy:  382/1083 [=========>....................] - ETA: 2s - loss: 0.0117 - accuracy:  397/1083 [=========>....................] - ETA: 2s - loss: 0.0118 - accuracy:  413/1083 [==========>...................] - ETA: 2s - loss: 0.0115 - accuracy:  428/1083 [==========>...................] - ETA: 2s - loss: 0.0116 - accuracy:  444/1083 [===========>..................] - ETA: 2s - loss: 0.0115 - accuracy:  459/1083 [===========>..................] - ETA: 2s - loss: 0.0115 - accuracy:  474/1083 [============>.................] - ETA: 2s - loss: 0.0114 - accuracy:  489/1083 [============>.................] - ETA: 2s - loss: 0.0113 - accuracy:  505/1083 [============>.................] - ETA: 1s - loss: 0.0114 - accuracy:  520/1083 [=============>................] - ETA: 1s - loss: 0.0113 - accuracy:  536/1083 [=============>................] - ETA: 1s - loss: 0.0111 - accuracy:  550/1083 [==============>...............] - ETA: 1s - loss: 0.0110 - accuracy:  565/1083 [==============>...............] - ETA: 1s - loss: 0.0112 - accuracy:  579/1083 [===============>..............] - ETA: 1s - loss: 0.0112 - accuracy:  594/1083 [===============>..............] - ETA: 1s - loss: 0.0112 - accuracy:  609/1083 [===============>..............] - ETA: 1s - loss: 0.0110 - accuracy:  625/1083 [================>.............] - ETA: 1s - loss: 0.0109 - accuracy:  640/1083 [================>.............] - ETA: 1s - loss: 0.0109 - accuracy:  656/1083 [=================>............] - ETA: 1s - loss: 0.0109 - accuracy:  672/1083 [=================>............] - ETA: 1s - loss: 0.0109 - accuracy:  689/1083 [==================>...........] - ETA: 1s - loss: 0.0107 - accuracy:  702/1083 [==================>...........] - ETA: 1s - loss: 0.0107 - accuracy:  717/1083 [==================>...........] - ETA: 1s - loss: 0.0105 - accuracy:  731/1083 [===================>..........] - ETA: 1s - loss: 0.0106 - accuracy:  746/1083 [===================>..........] - ETA: 1s - loss: 0.0106 - accuracy:  762/1083 [====================>.........] - ETA: 1s - loss: 0.0107 - accuracy:  778/1083 [====================>.........] - ETA: 1s - loss: 0.0106 - accuracy:  794/1083 [====================>.........] - ETA: 0s - loss: 0.0107 - accuracy:  810/1083 [=====================>........] - ETA: 0s - loss: 0.0107 - accuracy:  824/1083 [=====================>........] - ETA: 0s - loss: 0.0108 - accuracy:  840/1083 [======================>.......] - ETA: 0s - loss: 0.0109 - accuracy:  855/1083 [======================>.......] - ETA: 0s - loss: 0.0111 - accuracy:  871/1083 [=======================>......] - ETA: 0s - loss: 0.0110 - accuracy:  886/1083 [=======================>......] - ETA: 0s - loss: 0.0111 - accuracy:  902/1083 [=======================>......] - ETA: 0s - loss: 0.0111 - accuracy:  918/1083 [========================>.....] - ETA: 0s - loss: 0.0111 - accuracy:  933/1083 [========================>.....] - ETA: 0s - loss: 0.0110 - accuracy:  948/1083 [=========================>....] - ETA: 0s - loss: 0.0109 - accuracy:  964/1083 [=========================>....] - ETA: 0s - loss: 0.0108 - accuracy:  979/1083 [==========================>...] - ETA: 0s - loss: 0.0108 - accuracy:  995/1083 [==========================>...] - ETA: 0s - loss: 0.0108 - accuracy: 1010/1083 [==========================>...] - ETA: 0s - loss: 0.0107 - accuracy: 1026/1083 [===========================>..] - ETA: 0s - loss: 0.0108 - accuracy: 1041/1083 [===========================>..] - ETA: 0s - loss: 0.0109 - accuracy: 1057/1083 [============================>.] - ETA: 0s - loss: 0.0109 - accuracy: 1072/1083 [============================>.] - ETA: 0s - loss: 0.0110 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0109 - accuracy: 0.9947
Epoch 14/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0081 - accuracy:   15/1083 [..............................] - ETA: 3s - loss: 0.0077 - accuracy:   30/1083 [..............................] - ETA: 3s - loss: 0.0073 - accuracy:   45/1083 [>.............................] - ETA: 3s - loss: 0.0069 - accuracy:   61/1083 [>.............................] - ETA: 3s - loss: 0.0068 - accuracy:   77/1083 [=>............................] - ETA: 3s - loss: 0.0082 - accuracy:   92/1083 [=>............................] - ETA: 3s - loss: 0.0089 - accuracy:  107/1083 [=>............................] - ETA: 3s - loss: 0.0084 - accuracy:  123/1083 [==>...........................] - ETA: 3s - loss: 0.0087 - accuracy:  138/1083 [==>...........................] - ETA: 3s - loss: 0.0090 - accuracy:  154/1083 [===>..........................] - ETA: 3s - loss: 0.0094 - accuracy:  169/1083 [===>..........................] - ETA: 3s - loss: 0.0098 - accuracy:  185/1083 [====>.........................] - ETA: 3s - loss: 0.0097 - accuracy:  201/1083 [====>.........................] - ETA: 2s - loss: 0.0100 - accuracy:  216/1083 [====>.........................] - ETA: 2s - loss: 0.0097 - accuracy:  231/1083 [=====>........................] - ETA: 2s - loss: 0.0094 - accuracy:  247/1083 [=====>........................] - ETA: 2s - loss: 0.0095 - accuracy:  262/1083 [======>.......................] - ETA: 2s - loss: 0.0095 - accuracy:  277/1083 [======>.......................] - ETA: 2s - loss: 0.0092 - accuracy:  293/1083 [=======>......................] - ETA: 2s - loss: 0.0091 - accuracy:  308/1083 [=======>......................] - ETA: 2s - loss: 0.0092 - accuracy:  324/1083 [=======>......................] - ETA: 2s - loss: 0.0090 - accuracy:  340/1083 [========>.....................] - ETA: 2s - loss: 0.0091 - accuracy:  354/1083 [========>.....................] - ETA: 2s - loss: 0.0091 - accuracy:  369/1083 [=========>....................] - ETA: 2s - loss: 0.0089 - accuracy:  384/1083 [=========>....................] - ETA: 2s - loss: 0.0090 - accuracy:  399/1083 [==========>...................] - ETA: 2s - loss: 0.0091 - accuracy:  414/1083 [==========>...................] - ETA: 2s - loss: 0.0092 - accuracy:  430/1083 [==========>...................] - ETA: 2s - loss: 0.0093 - accuracy:  445/1083 [===========>..................] - ETA: 2s - loss: 0.0097 - accuracy:  461/1083 [===========>..................] - ETA: 2s - loss: 0.0097 - accuracy:  477/1083 [============>.................] - ETA: 2s - loss: 0.0097 - accuracy:  493/1083 [============>.................] - ETA: 1s - loss: 0.0096 - accuracy:  509/1083 [=============>................] - ETA: 1s - loss: 0.0095 - accuracy:  525/1083 [=============>................] - ETA: 1s - loss: 0.0094 - accuracy:  541/1083 [=============>................] - ETA: 1s - loss: 0.0095 - accuracy:  557/1083 [==============>...............] - ETA: 1s - loss: 0.0095 - accuracy:  573/1083 [==============>...............] - ETA: 1s - loss: 0.0094 - accuracy:  588/1083 [===============>..............] - ETA: 1s - loss: 0.0093 - accuracy:  604/1083 [===============>..............] - ETA: 1s - loss: 0.0094 - accuracy:  620/1083 [================>.............] - ETA: 1s - loss: 0.0093 - accuracy:  633/1083 [================>.............] - ETA: 1s - loss: 0.0094 - accuracy:  648/1083 [================>.............] - ETA: 1s - loss: 0.0094 - accuracy:  663/1083 [=================>............] - ETA: 1s - loss: 0.0093 - accuracy:  677/1083 [=================>............] - ETA: 1s - loss: 0.0093 - accuracy:  690/1083 [==================>...........] - ETA: 1s - loss: 0.0093 - accuracy:  706/1083 [==================>...........] - ETA: 1s - loss: 0.0092 - accuracy:  717/1083 [==================>...........] - ETA: 1s - loss: 0.0092 - accuracy:  731/1083 [===================>..........] - ETA: 1s - loss: 0.0092 - accuracy:  746/1083 [===================>..........] - ETA: 1s - loss: 0.0092 - accuracy:  762/1083 [====================>.........] - ETA: 1s - loss: 0.0092 - accuracy:  777/1083 [====================>.........] - ETA: 1s - loss: 0.0092 - accuracy:  792/1083 [====================>.........] - ETA: 0s - loss: 0.0092 - accuracy:  807/1083 [=====================>........] - ETA: 0s - loss: 0.0093 - accuracy:  823/1083 [=====================>........] - ETA: 0s - loss: 0.0092 - accuracy:  838/1083 [======================>.......] - ETA: 0s - loss: 0.0091 - accuracy:  854/1083 [======================>.......] - ETA: 0s - loss: 0.0091 - accuracy:  869/1083 [=======================>......] - ETA: 0s - loss: 0.0092 - accuracy:  884/1083 [=======================>......] - ETA: 0s - loss: 0.0092 - accuracy:  898/1083 [=======================>......] - ETA: 0s - loss: 0.0092 - accuracy:  914/1083 [========================>.....] - ETA: 0s - loss: 0.0092 - accuracy:  929/1083 [========================>.....] - ETA: 0s - loss: 0.0093 - accuracy:  945/1083 [=========================>....] - ETA: 0s - loss: 0.0094 - accuracy:  961/1083 [=========================>....] - ETA: 0s - loss: 0.0095 - accuracy:  976/1083 [==========================>...] - ETA: 0s - loss: 0.0095 - accuracy:  992/1083 [==========================>...] - ETA: 0s - loss: 0.0095 - accuracy: 1008/1083 [==========================>...] - ETA: 0s - loss: 0.0095 - accuracy: 1023/1083 [===========================>..] - ETA: 0s - loss: 0.0096 - accuracy: 1039/1083 [===========================>..] - ETA: 0s - loss: 0.0096 - accuracy: 1054/1083 [============================>.] - ETA: 0s - loss: 0.0096 - accuracy: 1070/1083 [============================>.] - ETA: 0s - loss: 0.0096 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0096 - accuracy: 0.9953
Epoch 15/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0057 - accuracy:   15/1083 [..............................] - ETA: 3s - loss: 0.0060 - accuracy:   30/1083 [..............................] - ETA: 3s - loss: 0.0072 - accuracy:   45/1083 [>.............................] - ETA: 3s - loss: 0.0076 - accuracy:   61/1083 [>.............................] - ETA: 3s - loss: 0.0082 - accuracy:   77/1083 [=>............................] - ETA: 3s - loss: 0.0086 - accuracy:   93/1083 [=>............................] - ETA: 3s - loss: 0.0078 - accuracy:  109/1083 [==>...........................] - ETA: 3s - loss: 0.0077 - accuracy:  124/1083 [==>...........................] - ETA: 3s - loss: 0.0076 - accuracy:  139/1083 [==>...........................] - ETA: 3s - loss: 0.0073 - accuracy:  153/1083 [===>..........................] - ETA: 3s - loss: 0.0076 - accuracy:  169/1083 [===>..........................] - ETA: 3s - loss: 0.0075 - accuracy:  184/1083 [====>.........................] - ETA: 3s - loss: 0.0076 - accuracy:  199/1083 [====>.........................] - ETA: 2s - loss: 0.0074 - accuracy:  212/1083 [====>.........................] - ETA: 2s - loss: 0.0073 - accuracy:  227/1083 [=====>........................] - ETA: 2s - loss: 0.0073 - accuracy:  242/1083 [=====>........................] - ETA: 2s - loss: 0.0076 - accuracy:  259/1083 [======>.......................] - ETA: 2s - loss: 0.0075 - accuracy:  273/1083 [======>.......................] - ETA: 2s - loss: 0.0078 - accuracy:  289/1083 [=======>......................] - ETA: 2s - loss: 0.0076 - accuracy:  301/1083 [=======>......................] - ETA: 2s - loss: 0.0076 - accuracy:  317/1083 [=======>......................] - ETA: 2s - loss: 0.0077 - accuracy:  331/1083 [========>.....................] - ETA: 2s - loss: 0.0079 - accuracy:  347/1083 [========>.....................] - ETA: 2s - loss: 0.0078 - accuracy:  362/1083 [=========>....................] - ETA: 2s - loss: 0.0078 - accuracy:  377/1083 [=========>....................] - ETA: 2s - loss: 0.0079 - accuracy:  390/1083 [=========>....................] - ETA: 2s - loss: 0.0079 - accuracy:  402/1083 [==========>...................] - ETA: 2s - loss: 0.0080 - accuracy:  417/1083 [==========>...................] - ETA: 2s - loss: 0.0078 - accuracy:  432/1083 [==========>...................] - ETA: 2s - loss: 0.0079 - accuracy:  446/1083 [===========>..................] - ETA: 2s - loss: 0.0079 - accuracy:  461/1083 [===========>..................] - ETA: 2s - loss: 0.0080 - accuracy:  476/1083 [============>.................] - ETA: 2s - loss: 0.0080 - accuracy:  492/1083 [============>.................] - ETA: 2s - loss: 0.0080 - accuracy:  507/1083 [=============>................] - ETA: 1s - loss: 0.0081 - accuracy:  523/1083 [=============>................] - ETA: 1s - loss: 0.0083 - accuracy:  538/1083 [=============>................] - ETA: 1s - loss: 0.0082 - accuracy:  555/1083 [==============>...............] - ETA: 1s - loss: 0.0083 - accuracy:  571/1083 [==============>...............] - ETA: 1s - loss: 0.0083 - accuracy:  587/1083 [===============>..............] - ETA: 1s - loss: 0.0082 - accuracy:  602/1083 [===============>..............] - ETA: 1s - loss: 0.0082 - accuracy:  617/1083 [================>.............] - ETA: 1s - loss: 0.0081 - accuracy:  631/1083 [================>.............] - ETA: 1s - loss: 0.0081 - accuracy:  646/1083 [================>.............] - ETA: 1s - loss: 0.0082 - accuracy:  661/1083 [=================>............] - ETA: 1s - loss: 0.0082 - accuracy:  676/1083 [=================>............] - ETA: 1s - loss: 0.0082 - accuracy:  691/1083 [==================>...........] - ETA: 1s - loss: 0.0082 - accuracy:  707/1083 [==================>...........] - ETA: 1s - loss: 0.0081 - accuracy:  722/1083 [===================>..........] - ETA: 1s - loss: 0.0081 - accuracy:  735/1083 [===================>..........] - ETA: 1s - loss: 0.0081 - accuracy:  749/1083 [===================>..........] - ETA: 1s - loss: 0.0081 - accuracy:  765/1083 [====================>.........] - ETA: 1s - loss: 0.0080 - accuracy:  781/1083 [====================>.........] - ETA: 1s - loss: 0.0079 - accuracy:  797/1083 [=====================>........] - ETA: 0s - loss: 0.0079 - accuracy:  812/1083 [=====================>........] - ETA: 0s - loss: 0.0079 - accuracy:  828/1083 [=====================>........] - ETA: 0s - loss: 0.0079 - accuracy:  844/1083 [======================>.......] - ETA: 0s - loss: 0.0079 - accuracy:  860/1083 [======================>.......] - ETA: 0s - loss: 0.0079 - accuracy:  875/1083 [=======================>......] - ETA: 0s - loss: 0.0079 - accuracy:  889/1083 [=======================>......] - ETA: 0s - loss: 0.0079 - accuracy:  904/1083 [========================>.....] - ETA: 0s - loss: 0.0079 - accuracy:  920/1083 [========================>.....] - ETA: 0s - loss: 0.0079 - accuracy:  935/1083 [========================>.....] - ETA: 0s - loss: 0.0079 - accuracy:  950/1083 [=========================>....] - ETA: 0s - loss: 0.0079 - accuracy:  966/1083 [=========================>....] - ETA: 0s - loss: 0.0078 - accuracy:  982/1083 [==========================>...] - ETA: 0s - loss: 0.0078 - accuracy:  997/1083 [==========================>...] - ETA: 0s - loss: 0.0078 - accuracy: 1013/1083 [===========================>..] - ETA: 0s - loss: 0.0078 - accuracy: 1028/1083 [===========================>..] - ETA: 0s - loss: 0.0078 - accuracy: 1044/1083 [===========================>..] - ETA: 0s - loss: 0.0078 - accuracy: 1059/1083 [============================>.] - ETA: 0s - loss: 0.0078 - accuracy: 1074/1083 [============================>.] - ETA: 0s - loss: 0.0077 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0077 - accuracy: 0.9967
Epoch 16/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0016 - accuracy:   16/1083 [..............................] - ETA: 3s - loss: 0.0065 - accuracy:   32/1083 [..............................] - ETA: 3s - loss: 0.0059 - accuracy:   47/1083 [>.............................] - ETA: 3s - loss: 0.0056 - accuracy:   62/1083 [>.............................] - ETA: 3s - loss: 0.0075 - accuracy:   78/1083 [=>............................] - ETA: 3s - loss: 0.0070 - accuracy:   92/1083 [=>............................] - ETA: 3s - loss: 0.0075 - accuracy:  108/1083 [=>............................] - ETA: 3s - loss: 0.0076 - accuracy:  123/1083 [==>...........................] - ETA: 3s - loss: 0.0078 - accuracy:  139/1083 [==>...........................] - ETA: 3s - loss: 0.0075 - accuracy:  155/1083 [===>..........................] - ETA: 3s - loss: 0.0072 - accuracy:  171/1083 [===>..........................] - ETA: 3s - loss: 0.0074 - accuracy:  187/1083 [====>.........................] - ETA: 3s - loss: 0.0073 - accuracy:  203/1083 [====>.........................] - ETA: 2s - loss: 0.0071 - accuracy:  219/1083 [=====>........................] - ETA: 2s - loss: 0.0081 - accuracy:  235/1083 [=====>........................] - ETA: 2s - loss: 0.0081 - accuracy:  250/1083 [=====>........................] - ETA: 2s - loss: 0.0086 - accuracy:  265/1083 [======>.......................] - ETA: 2s - loss: 0.0086 - accuracy:  280/1083 [======>.......................] - ETA: 2s - loss: 0.0086 - accuracy:  295/1083 [=======>......................] - ETA: 2s - loss: 0.0086 - accuracy:  310/1083 [=======>......................] - ETA: 2s - loss: 0.0083 - accuracy:  326/1083 [========>.....................] - ETA: 2s - loss: 0.0082 - accuracy:  341/1083 [========>.....................] - ETA: 2s - loss: 0.0080 - accuracy:  357/1083 [========>.....................] - ETA: 2s - loss: 0.0079 - accuracy:  371/1083 [=========>....................] - ETA: 2s - loss: 0.0079 - accuracy:  386/1083 [=========>....................] - ETA: 2s - loss: 0.0079 - accuracy:  400/1083 [==========>...................] - ETA: 2s - loss: 0.0079 - accuracy:  414/1083 [==========>...................] - ETA: 2s - loss: 0.0079 - accuracy:  429/1083 [==========>...................] - ETA: 2s - loss: 0.0078 - accuracy:  445/1083 [===========>..................] - ETA: 2s - loss: 0.0077 - accuracy:  460/1083 [===========>..................] - ETA: 2s - loss: 0.0077 - accuracy:  475/1083 [============>.................] - ETA: 2s - loss: 0.0075 - accuracy:  490/1083 [============>.................] - ETA: 2s - loss: 0.0075 - accuracy:  506/1083 [=============>................] - ETA: 1s - loss: 0.0074 - accuracy:  521/1083 [=============>................] - ETA: 1s - loss: 0.0075 - accuracy:  536/1083 [=============>................] - ETA: 1s - loss: 0.0076 - accuracy:  550/1083 [==============>...............] - ETA: 1s - loss: 0.0076 - accuracy:  566/1083 [==============>...............] - ETA: 1s - loss: 0.0075 - accuracy:  580/1083 [===============>..............] - ETA: 1s - loss: 0.0075 - accuracy:  595/1083 [===============>..............] - ETA: 1s - loss: 0.0075 - accuracy:  611/1083 [===============>..............] - ETA: 1s - loss: 0.0074 - accuracy:  627/1083 [================>.............] - ETA: 1s - loss: 0.0074 - accuracy:  643/1083 [================>.............] - ETA: 1s - loss: 0.0076 - accuracy:  658/1083 [=================>............] - ETA: 1s - loss: 0.0075 - accuracy:  673/1083 [=================>............] - ETA: 1s - loss: 0.0075 - accuracy:  689/1083 [==================>...........] - ETA: 1s - loss: 0.0075 - accuracy:  704/1083 [==================>...........] - ETA: 1s - loss: 0.0075 - accuracy:  720/1083 [==================>...........] - ETA: 1s - loss: 0.0075 - accuracy:  734/1083 [===================>..........] - ETA: 1s - loss: 0.0074 - accuracy:  749/1083 [===================>..........] - ETA: 1s - loss: 0.0074 - accuracy:  764/1083 [====================>.........] - ETA: 1s - loss: 0.0074 - accuracy:  780/1083 [====================>.........] - ETA: 1s - loss: 0.0074 - accuracy:  795/1083 [=====================>........] - ETA: 0s - loss: 0.0074 - accuracy:  811/1083 [=====================>........] - ETA: 0s - loss: 0.0074 - accuracy:  825/1083 [=====================>........] - ETA: 0s - loss: 0.0075 - accuracy:  839/1083 [======================>.......] - ETA: 0s - loss: 0.0075 - accuracy:  853/1083 [======================>.......] - ETA: 0s - loss: 0.0075 - accuracy:  869/1083 [=======================>......] - ETA: 0s - loss: 0.0074 - accuracy:  884/1083 [=======================>......] - ETA: 0s - loss: 0.0074 - accuracy:  900/1083 [=======================>......] - ETA: 0s - loss: 0.0074 - accuracy:  915/1083 [========================>.....] - ETA: 0s - loss: 0.0075 - accuracy:  930/1083 [========================>.....] - ETA: 0s - loss: 0.0075 - accuracy:  945/1083 [=========================>....] - ETA: 0s - loss: 0.0074 - accuracy:  961/1083 [=========================>....] - ETA: 0s - loss: 0.0074 - accuracy:  978/1083 [==========================>...] - ETA: 0s - loss: 0.0075 - accuracy:  992/1083 [==========================>...] - ETA: 0s - loss: 0.0075 - accuracy: 1008/1083 [==========================>...] - ETA: 0s - loss: 0.0075 - accuracy: 1024/1083 [===========================>..] - ETA: 0s - loss: 0.0075 - accuracy: 1040/1083 [===========================>..] - ETA: 0s - loss: 0.0074 - accuracy: 1056/1083 [============================>.] - ETA: 0s - loss: 0.0074 - accuracy: 1071/1083 [============================>.] - ETA: 0s - loss: 0.0074 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0074 - accuracy: 0.9961
Epoch 17/20
   1/1083 [..............................] - ETA: 3s - loss: 0.0114 - accuracy:   15/1083 [..............................] - ETA: 3s - loss: 0.0045 - accuracy:   31/1083 [..............................] - ETA: 3s - loss: 0.0065 - accuracy:   47/1083 [>.............................] - ETA: 3s - loss: 0.0069 - accuracy:   61/1083 [>.............................] - ETA: 3s - loss: 0.0071 - accuracy:   77/1083 [=>............................] - ETA: 3s - loss: 0.0073 - accuracy:   92/1083 [=>............................] - ETA: 3s - loss: 0.0079 - accuracy:  107/1083 [=>............................] - ETA: 3s - loss: 0.0078 - accuracy:  123/1083 [==>...........................] - ETA: 3s - loss: 0.0075 - accuracy:  136/1083 [==>...........................] - ETA: 3s - loss: 0.0075 - accuracy:  145/1083 [===>..........................] - ETA: 3s - loss: 0.0078 - accuracy:  157/1083 [===>..........................] - ETA: 3s - loss: 0.0076 - accuracy:  172/1083 [===>..........................] - ETA: 3s - loss: 0.0073 - accuracy:  187/1083 [====>.........................] - ETA: 3s - loss: 0.0072 - accuracy:  201/1083 [====>.........................] - ETA: 3s - loss: 0.0074 - accuracy:  217/1083 [=====>........................] - ETA: 3s - loss: 0.0072 - accuracy:  232/1083 [=====>........................] - ETA: 3s - loss: 0.0071 - accuracy:  248/1083 [=====>........................] - ETA: 2s - loss: 0.0069 - accuracy:  263/1083 [======>.......................] - ETA: 2s - loss: 0.0067 - accuracy:  277/1083 [======>.......................] - ETA: 2s - loss: 0.0065 - accuracy:  291/1083 [=======>......................] - ETA: 2s - loss: 0.0066 - accuracy:  306/1083 [=======>......................] - ETA: 2s - loss: 0.0066 - accuracy:  321/1083 [=======>......................] - ETA: 2s - loss: 0.0064 - accuracy:  336/1083 [========>.....................] - ETA: 2s - loss: 0.0064 - accuracy:  351/1083 [========>.....................] - ETA: 2s - loss: 0.0063 - accuracy:  366/1083 [=========>....................] - ETA: 2s - loss: 0.0062 - accuracy:  381/1083 [=========>....................] - ETA: 2s - loss: 0.0060 - accuracy:  396/1083 [=========>....................] - ETA: 2s - loss: 0.0059 - accuracy:  411/1083 [==========>...................] - ETA: 2s - loss: 0.0058 - accuracy:  427/1083 [==========>...................] - ETA: 2s - loss: 0.0058 - accuracy:  443/1083 [===========>..................] - ETA: 2s - loss: 0.0059 - accuracy:  458/1083 [===========>..................] - ETA: 2s - loss: 0.0059 - accuracy:  473/1083 [============>.................] - ETA: 2s - loss: 0.0059 - accuracy:  486/1083 [============>.................] - ETA: 2s - loss: 0.0058 - accuracy:  501/1083 [============>.................] - ETA: 2s - loss: 0.0058 - accuracy:  517/1083 [=============>................] - ETA: 1s - loss: 0.0057 - accuracy:  532/1083 [=============>................] - ETA: 1s - loss: 0.0058 - accuracy:  548/1083 [==============>...............] - ETA: 1s - loss: 0.0059 - accuracy:  564/1083 [==============>...............] - ETA: 1s - loss: 0.0062 - accuracy:  580/1083 [===============>..............] - ETA: 1s - loss: 0.0062 - accuracy:  596/1083 [===============>..............] - ETA: 1s - loss: 0.0061 - accuracy:  612/1083 [===============>..............] - ETA: 1s - loss: 0.0061 - accuracy:  626/1083 [================>.............] - ETA: 1s - loss: 0.0061 - accuracy:  641/1083 [================>.............] - ETA: 1s - loss: 0.0061 - accuracy:  656/1083 [=================>............] - ETA: 1s - loss: 0.0061 - accuracy:  671/1083 [=================>............] - ETA: 1s - loss: 0.0061 - accuracy:  686/1083 [==================>...........] - ETA: 1s - loss: 0.0062 - accuracy:  702/1083 [==================>...........] - ETA: 1s - loss: 0.0061 - accuracy:  718/1083 [==================>...........] - ETA: 1s - loss: 0.0062 - accuracy:  734/1083 [===================>..........] - ETA: 1s - loss: 0.0063 - accuracy:  749/1083 [===================>..........] - ETA: 1s - loss: 0.0064 - accuracy:  766/1083 [====================>.........] - ETA: 1s - loss: 0.0064 - accuracy:  781/1083 [====================>.........] - ETA: 1s - loss: 0.0063 - accuracy:  797/1083 [=====================>........] - ETA: 0s - loss: 0.0063 - accuracy:  812/1083 [=====================>........] - ETA: 0s - loss: 0.0063 - accuracy:  827/1083 [=====================>........] - ETA: 0s - loss: 0.0064 - accuracy:  842/1083 [======================>.......] - ETA: 0s - loss: 0.0064 - accuracy:  858/1083 [======================>.......] - ETA: 0s - loss: 0.0064 - accuracy:  874/1083 [=======================>......] - ETA: 0s - loss: 0.0064 - accuracy:  890/1083 [=======================>......] - ETA: 0s - loss: 0.0064 - accuracy:  905/1083 [========================>.....] - ETA: 0s - loss: 0.0064 - accuracy:  921/1083 [========================>.....] - ETA: 0s - loss: 0.0064 - accuracy:  935/1083 [========================>.....] - ETA: 0s - loss: 0.0063 - accuracy:  950/1083 [=========================>....] - ETA: 0s - loss: 0.0063 - accuracy:  966/1083 [=========================>....] - ETA: 0s - loss: 0.0063 - accuracy:  982/1083 [==========================>...] - ETA: 0s - loss: 0.0063 - accuracy:  998/1083 [==========================>...] - ETA: 0s - loss: 0.0062 - accuracy: 1014/1083 [===========================>..] - ETA: 0s - loss: 0.0063 - accuracy: 1030/1083 [===========================>..] - ETA: 0s - loss: 0.0063 - accuracy: 1046/1083 [===========================>..] - ETA: 0s - loss: 0.0063 - accuracy: 1061/1083 [============================>.] - ETA: 0s - loss: 0.0063 - accuracy: 1075/1083 [============================>.] - ETA: 0s - loss: 0.0063 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0062 - accuracy: 0.9975
Epoch 18/20
   1/1083 [..............................] - ETA: 3s - loss: 2.6458e-05 - accura  16/1083 [..............................] - ETA: 3s - loss: 0.0044 - accuracy:   31/1083 [..............................] - ETA: 3s - loss: 0.0044 - accuracy:   47/1083 [>.............................] - ETA: 3s - loss: 0.0051 - accuracy:   59/1083 [>.............................] - ETA: 3s - loss: 0.0060 - accuracy:   75/1083 [=>............................] - ETA: 3s - loss: 0.0057 - accuracy:   91/1083 [=>............................] - ETA: 3s - loss: 0.0051 - accuracy:  106/1083 [=>............................] - ETA: 3s - loss: 0.0050 - accuracy:  121/1083 [==>...........................] - ETA: 3s - loss: 0.0052 - accuracy:  137/1083 [==>...........................] - ETA: 3s - loss: 0.0048 - accuracy:  150/1083 [===>..........................] - ETA: 3s - loss: 0.0048 - accuracy:  166/1083 [===>..........................] - ETA: 3s - loss: 0.0046 - accuracy:  181/1083 [====>.........................] - ETA: 3s - loss: 0.0047 - accuracy:  196/1083 [====>.........................] - ETA: 3s - loss: 0.0046 - accuracy:  212/1083 [====>.........................] - ETA: 2s - loss: 0.0047 - accuracy:  228/1083 [=====>........................] - ETA: 2s - loss: 0.0048 - accuracy:  243/1083 [=====>........................] - ETA: 2s - loss: 0.0050 - accuracy:  259/1083 [======>.......................] - ETA: 2s - loss: 0.0049 - accuracy:  274/1083 [======>.......................] - ETA: 2s - loss: 0.0048 - accuracy:  290/1083 [=======>......................] - ETA: 2s - loss: 0.0047 - accuracy:  305/1083 [=======>......................] - ETA: 2s - loss: 0.0047 - accuracy:  321/1083 [=======>......................] - ETA: 2s - loss: 0.0047 - accuracy:  336/1083 [========>.....................] - ETA: 2s - loss: 0.0046 - accuracy:  352/1083 [========>.....................] - ETA: 2s - loss: 0.0047 - accuracy:  368/1083 [=========>....................] - ETA: 2s - loss: 0.0047 - accuracy:  384/1083 [=========>....................] - ETA: 2s - loss: 0.0048 - accuracy:  399/1083 [==========>...................] - ETA: 2s - loss: 0.0049 - accuracy:  415/1083 [==========>...................] - ETA: 2s - loss: 0.0049 - accuracy:  430/1083 [==========>...................] - ETA: 2s - loss: 0.0049 - accuracy:  443/1083 [===========>..................] - ETA: 2s - loss: 0.0049 - accuracy:  457/1083 [===========>..................] - ETA: 2s - loss: 0.0050 - accuracy:  473/1083 [============>.................] - ETA: 2s - loss: 0.0049 - accuracy:  488/1083 [============>.................] - ETA: 2s - loss: 0.0048 - accuracy:  504/1083 [============>.................] - ETA: 1s - loss: 0.0049 - accuracy:  520/1083 [=============>................] - ETA: 1s - loss: 0.0050 - accuracy:  535/1083 [=============>................] - ETA: 1s - loss: 0.0051 - accuracy:  549/1083 [==============>...............] - ETA: 1s - loss: 0.0051 - accuracy:  565/1083 [==============>...............] - ETA: 1s - loss: 0.0052 - accuracy:  578/1083 [===============>..............] - ETA: 1s - loss: 0.0051 - accuracy:  592/1083 [===============>..............] - ETA: 1s - loss: 0.0051 - accuracy:  607/1083 [===============>..............] - ETA: 1s - loss: 0.0051 - accuracy:  623/1083 [================>.............] - ETA: 1s - loss: 0.0051 - accuracy:  638/1083 [================>.............] - ETA: 1s - loss: 0.0052 - accuracy:  654/1083 [=================>............] - ETA: 1s - loss: 0.0052 - accuracy:  669/1083 [=================>............] - ETA: 1s - loss: 0.0051 - accuracy:  682/1083 [=================>............] - ETA: 1s - loss: 0.0051 - accuracy:  695/1083 [==================>...........] - ETA: 1s - loss: 0.0051 - accuracy:  710/1083 [==================>...........] - ETA: 1s - loss: 0.0052 - accuracy:  723/1083 [===================>..........] - ETA: 1s - loss: 0.0052 - accuracy:  738/1083 [===================>..........] - ETA: 1s - loss: 0.0052 - accuracy:  753/1083 [===================>..........] - ETA: 1s - loss: 0.0053 - accuracy:  769/1083 [====================>.........] - ETA: 1s - loss: 0.0053 - accuracy:  784/1083 [====================>.........] - ETA: 1s - loss: 0.0053 - accuracy:  800/1083 [=====================>........] - ETA: 0s - loss: 0.0052 - accuracy:  815/1083 [=====================>........] - ETA: 0s - loss: 0.0052 - accuracy:  831/1083 [======================>.......] - ETA: 0s - loss: 0.0052 - accuracy:  846/1083 [======================>.......] - ETA: 0s - loss: 0.0052 - accuracy:  862/1083 [======================>.......] - ETA: 0s - loss: 0.0052 - accuracy:  877/1083 [=======================>......] - ETA: 0s - loss: 0.0052 - accuracy:  893/1083 [=======================>......] - ETA: 0s - loss: 0.0052 - accuracy:  908/1083 [========================>.....] - ETA: 0s - loss: 0.0051 - accuracy:  924/1083 [========================>.....] - ETA: 0s - loss: 0.0051 - accuracy:  939/1083 [=========================>....] - ETA: 0s - loss: 0.0051 - accuracy:  955/1083 [=========================>....] - ETA: 0s - loss: 0.0051 - accuracy:  969/1083 [=========================>....] - ETA: 0s - loss: 0.0052 - accuracy:  982/1083 [==========================>...] - ETA: 0s - loss: 0.0052 - accuracy:  994/1083 [==========================>...] - ETA: 0s - loss: 0.0052 - accuracy: 1006/1083 [==========================>...] - ETA: 0s - loss: 0.0052 - accuracy: 1019/1083 [===========================>..] - ETA: 0s - loss: 0.0053 - accuracy: 1033/1083 [===========================>..] - ETA: 0s - loss: 0.0053 - accuracy: 1047/1083 [============================>.] - ETA: 0s - loss: 0.0053 - accuracy: 1062/1083 [============================>.] - ETA: 0s - loss: 0.0053 - accuracy: 1075/1083 [============================>.] - ETA: 0s - loss: 0.0053 - accuracy: 1083/1083 [==============================] - 4s 3ms/step - loss: 0.0054 - accuracy: 0.9979
Epoch 19/20
   1/1083 [..............................] - ETA: 4s - loss: 0.0110 - accuracy:   14/1083 [..............................] - ETA: 4s - loss: 0.0099 - accuracy:   28/1083 [..............................] - ETA: 4s - loss: 0.0068 - accuracy:   42/1083 [>.............................] - ETA: 4s - loss: 0.0061 - accuracy:   55/1083 [>.............................] - ETA: 4s - loss: 0.0055 - accuracy:   69/1083 [>.............................] - ETA: 3s - loss: 0.0049 - accuracy:   84/1083 [=>............................] - ETA: 3s - loss: 0.0050 - accuracy:   97/1083 [=>............................] - ETA: 3s - loss: 0.0050 - accuracy:  111/1083 [==>...........................] - ETA: 3s - loss: 0.0046 - accuracy:  125/1083 [==>...........................] - ETA: 3s - loss: 0.0044 - accuracy:  135/1083 [==>...........................] - ETA: 3s - loss: 0.0042 - accuracy:  145/1083 [===>..........................] - ETA: 3s - loss: 0.0041 - accuracy:  158/1083 [===>..........................] - ETA: 3s - loss: 0.0040 - accuracy:  170/1083 [===>..........................] - ETA: 3s - loss: 0.0040 - accuracy:  182/1083 [====>.........................] - ETA: 3s - loss: 0.0042 - accuracy:  194/1083 [====>.........................] - ETA: 3s - loss: 0.0044 - accuracy:  207/1083 [====>.........................] - ETA: 3s - loss: 0.0044 - accuracy:  221/1083 [=====>........................] - ETA: 3s - loss: 0.0044 - accuracy:  235/1083 [=====>........................] - ETA: 3s - loss: 0.0043 - accuracy:  248/1083 [=====>........................] - ETA: 3s - loss: 0.0043 - accuracy:  261/1083 [======>.......................] - ETA: 3s - loss: 0.0042 - accuracy:  274/1083 [======>.......................] - ETA: 3s - loss: 0.0042 - accuracy:  288/1083 [======>.......................] - ETA: 3s - loss: 0.0041 - accuracy:  302/1083 [=======>......................] - ETA: 3s - loss: 0.0044 - accuracy:  315/1083 [=======>......................] - ETA: 3s - loss: 0.0045 - accuracy:  326/1083 [========>.....................] - ETA: 3s - loss: 0.0045 - accuracy:  338/1083 [========>.....................] - ETA: 2s - loss: 0.0046 - accuracy:  352/1083 [========>.....................] - ETA: 2s - loss: 0.0047 - accuracy:  364/1083 [=========>....................] - ETA: 2s - loss: 0.0047 - accuracy:  378/1083 [=========>....................] - ETA: 2s - loss: 0.0047 - accuracy:  391/1083 [=========>....................] - ETA: 2s - loss: 0.0046 - accuracy:  404/1083 [==========>...................] - ETA: 2s - loss: 0.0046 - accuracy:  418/1083 [==========>...................] - ETA: 2s - loss: 0.0046 - accuracy:  432/1083 [==========>...................] - ETA: 2s - loss: 0.0046 - accuracy:  444/1083 [===========>..................] - ETA: 2s - loss: 0.0045 - accuracy:  459/1083 [===========>..................] - ETA: 2s - loss: 0.0046 - accuracy:  473/1083 [============>.................] - ETA: 2s - loss: 0.0046 - accuracy:  486/1083 [============>.................] - ETA: 2s - loss: 0.0046 - accuracy:  502/1083 [============>.................] - ETA: 2s - loss: 0.0046 - accuracy:  517/1083 [=============>................] - ETA: 2s - loss: 0.0045 - accuracy:  532/1083 [=============>................] - ETA: 2s - loss: 0.0045 - accuracy:  545/1083 [==============>...............] - ETA: 2s - loss: 0.0046 - accuracy:  561/1083 [==============>...............] - ETA: 2s - loss: 0.0047 - accuracy:  572/1083 [==============>...............] - ETA: 1s - loss: 0.0047 - accuracy:  587/1083 [===============>..............] - ETA: 1s - loss: 0.0048 - accuracy:  603/1083 [===============>..............] - ETA: 1s - loss: 0.0047 - accuracy:  618/1083 [================>.............] - ETA: 1s - loss: 0.0047 - accuracy:  633/1083 [================>.............] - ETA: 1s - loss: 0.0047 - accuracy:  648/1083 [================>.............] - ETA: 1s - loss: 0.0048 - accuracy:  663/1083 [=================>............] - ETA: 1s - loss: 0.0047 - accuracy:  678/1083 [=================>............] - ETA: 1s - loss: 0.0047 - accuracy:  693/1083 [==================>...........] - ETA: 1s - loss: 0.0046 - accuracy:  708/1083 [==================>...........] - ETA: 1s - loss: 0.0046 - accuracy:  723/1083 [===================>..........] - ETA: 1s - loss: 0.0047 - accuracy:  739/1083 [===================>..........] - ETA: 1s - loss: 0.0046 - accuracy:  753/1083 [===================>..........] - ETA: 1s - loss: 0.0046 - accuracy:  769/1083 [====================>.........] - ETA: 1s - loss: 0.0046 - accuracy:  783/1083 [====================>.........] - ETA: 1s - loss: 0.0046 - accuracy:  799/1083 [=====================>........] - ETA: 1s - loss: 0.0046 - accuracy:  813/1083 [=====================>........] - ETA: 1s - loss: 0.0046 - accuracy:  827/1083 [=====================>........] - ETA: 0s - loss: 0.0045 - accuracy:  842/1083 [======================>.......] - ETA: 0s - loss: 0.0045 - accuracy:  858/1083 [======================>.......] - ETA: 0s - loss: 0.0045 - accuracy:  872/1083 [=======================>......] - ETA: 0s - loss: 0.0045 - accuracy:  888/1083 [=======================>......] - ETA: 0s - loss: 0.0045 - accuracy:  903/1083 [========================>.....] - ETA: 0s - loss: 0.0045 - accuracy:  916/1083 [========================>.....] - ETA: 0s - loss: 0.0045 - accuracy:  931/1083 [========================>.....] - ETA: 0s - loss: 0.0045 - accuracy:  947/1083 [=========================>....] - ETA: 0s - loss: 0.0045 - accuracy:  962/1083 [=========================>....] - ETA: 0s - loss: 0.0045 - accuracy:  978/1083 [==========================>...] - ETA: 0s - loss: 0.0044 - accuracy:  993/1083 [==========================>...] - ETA: 0s - loss: 0.0045 - accuracy: 1004/1083 [==========================>...] - ETA: 0s - loss: 0.0044 - accuracy: 1018/1083 [===========================>..] - ETA: 0s - loss: 0.0044 - accuracy: 1031/1083 [===========================>..] - ETA: 0s - loss: 0.0044 - accuracy: 1045/1083 [===========================>..] - ETA: 0s - loss: 0.0044 - accuracy: 1060/1083 [============================>.] - ETA: 0s - loss: 0.0044 - accuracy: 1075/1083 [============================>.] - ETA: 0s - loss: 0.0044 - accuracy: 1083/1083 [==============================] - 4s 4ms/step - loss: 0.0044 - accuracy: 0.9984
Epoch 20/20
   1/1083 [..............................] - ETA: 4s - loss: 0.0036 - accuracy:   15/1083 [..............................] - ETA: 4s - loss: 0.0059 - accuracy:   28/1083 [..............................] - ETA: 4s - loss: 0.0040 - accuracy:   41/1083 [>.............................] - ETA: 4s - loss: 0.0053 - accuracy:   54/1083 [>.............................] - ETA: 4s - loss: 0.0057 - accuracy:   70/1083 [>.............................] - ETA: 3s - loss: 0.0059 - accuracy:   84/1083 [=>............................] - ETA: 3s - loss: 0.0058 - accuracy:   99/1083 [=>............................] - ETA: 3s - loss: 0.0052 - accuracy:  114/1083 [==>...........................] - ETA: 3s - loss: 0.0052 - accuracy:  127/1083 [==>...........................] - ETA: 3s - loss: 0.0051 - accuracy:  139/1083 [==>...........................] - ETA: 3s - loss: 0.0050 - accuracy:  153/1083 [===>..........................] - ETA: 3s - loss: 0.0047 - accuracy:  167/1083 [===>..........................] - ETA: 3s - loss: 0.0045 - accuracy:  179/1083 [===>..........................] - ETA: 3s - loss: 0.0046 - accuracy:  191/1083 [====>.........................] - ETA: 3s - loss: 0.0048 - accuracy:  204/1083 [====>.........................] - ETA: 3s - loss: 0.0051 - accuracy:  218/1083 [=====>........................] - ETA: 3s - loss: 0.0049 - accuracy:  233/1083 [=====>........................] - ETA: 3s - loss: 0.0047 - accuracy:  248/1083 [=====>........................] - ETA: 3s - loss: 0.0048 - accuracy:  264/1083 [======>.......................] - ETA: 3s - loss: 0.0050 - accuracy:  278/1083 [======>.......................] - ETA: 3s - loss: 0.0051 - accuracy:  293/1083 [=======>......................] - ETA: 2s - loss: 0.0052 - accuracy:  307/1083 [=======>......................] - ETA: 2s - loss: 0.0050 - accuracy:  322/1083 [=======>......................] - ETA: 2s - loss: 0.0049 - accuracy:  334/1083 [========>.....................] - ETA: 2s - loss: 0.0049 - accuracy:  347/1083 [========>.....................] - ETA: 2s - loss: 0.0049 - accuracy:  359/1083 [========>.....................] - ETA: 2s - loss: 0.0048 - accuracy:  372/1083 [=========>....................] - ETA: 2s - loss: 0.0047 - accuracy:  386/1083 [=========>....................] - ETA: 2s - loss: 0.0046 - accuracy:  400/1083 [==========>...................] - ETA: 2s - loss: 0.0046 - accuracy:  411/1083 [==========>...................] - ETA: 2s - loss: 0.0045 - accuracy:  425/1083 [==========>...................] - ETA: 2s - loss: 0.0045 - accuracy:  439/1083 [===========>..................] - ETA: 2s - loss: 0.0045 - accuracy:  453/1083 [===========>..................] - ETA: 2s - loss: 0.0044 - accuracy:  467/1083 [===========>..................] - ETA: 2s - loss: 0.0044 - accuracy:  483/1083 [============>.................] - ETA: 2s - loss: 0.0044 - accuracy:  498/1083 [============>.................] - ETA: 2s - loss: 0.0043 - accuracy:  514/1083 [=============>................] - ETA: 2s - loss: 0.0042 - accuracy:  530/1083 [=============>................] - ETA: 2s - loss: 0.0042 - accuracy:  545/1083 [==============>...............] - ETA: 2s - loss: 0.0042 - accuracy:  561/1083 [==============>...............] - ETA: 1s - loss: 0.0042 - accuracy:  576/1083 [==============>...............] - ETA: 1s - loss: 0.0042 - accuracy:  591/1083 [===============>..............] - ETA: 1s - loss: 0.0042 - accuracy:  605/1083 [===============>..............] - ETA: 1s - loss: 0.0042 - accuracy:  619/1083 [================>.............] - ETA: 1s - loss: 0.0041 - accuracy:  631/1083 [================>.............] - ETA: 1s - loss: 0.0041 - accuracy:  644/1083 [================>.............] - ETA: 1s - loss: 0.0041 - accuracy:  657/1083 [=================>............] - ETA: 1s - loss: 0.0041 - accuracy:  670/1083 [=================>............] - ETA: 1s - loss: 0.0041 - accuracy:  684/1083 [=================>............] - ETA: 1s - loss: 0.0042 - accuracy:  698/1083 [==================>...........] - ETA: 1s - loss: 0.0042 - accuracy:  713/1083 [==================>...........] - ETA: 1s - loss: 0.0042 - accuracy:  724/1083 [===================>..........] - ETA: 1s - loss: 0.0042 - accuracy:  738/1083 [===================>..........] - ETA: 1s - loss: 0.0042 - accuracy:  751/1083 [===================>..........] - ETA: 1s - loss: 0.0041 - accuracy:  763/1083 [====================>.........] - ETA: 1s - loss: 0.0041 - accuracy:  776/1083 [====================>.........] - ETA: 1s - loss: 0.0041 - accuracy:  789/1083 [====================>.........] - ETA: 1s - loss: 0.0041 - accuracy:  802/1083 [=====================>........] - ETA: 1s - loss: 0.0041 - accuracy:  814/1083 [=====================>........] - ETA: 1s - loss: 0.0041 - accuracy:  826/1083 [=====================>........] - ETA: 0s - loss: 0.0041 - accuracy:  838/1083 [======================>.......] - ETA: 0s - loss: 0.0041 - accuracy:  851/1083 [======================>.......] - ETA: 0s - loss: 0.0040 - accuracy:  866/1083 [======================>.......] - ETA: 0s - loss: 0.0040 - accuracy:  881/1083 [=======================>......] - ETA: 0s - loss: 0.0040 - accuracy:  897/1083 [=======================>......] - ETA: 0s - loss: 0.0040 - accuracy:  912/1083 [========================>.....] - ETA: 0s - loss: 0.0041 - accuracy:  928/1083 [========================>.....] - ETA: 0s - loss: 0.0042 - accuracy:  943/1083 [=========================>....] - ETA: 0s - loss: 0.0042 - accuracy:  958/1083 [=========================>....] - ETA: 0s - loss: 0.0042 - accuracy:  973/1083 [=========================>....] - ETA: 0s - loss: 0.0042 - accuracy:  988/1083 [==========================>...] - ETA: 0s - loss: 0.0042 - accuracy: 1003/1083 [==========================>...] - ETA: 0s - loss: 0.0041 - accuracy: 1019/1083 [===========================>..] - ETA: 0s - loss: 0.0042 - accuracy: 1035/1083 [===========================>..] - ETA: 0s - loss: 0.0041 - accuracy: 1051/1083 [============================>.] - ETA: 0s - loss: 0.0042 - accuracy: 1067/1083 [============================>.] - ETA: 0s - loss: 0.0042 - accuracy: 1082/1083 [============================>.] - ETA: 0s - loss: 0.0042 - accuracy: 1083/1083 [==============================] - 4s 4ms/step - loss: 0.0042 - accuracy: 0.9984
  1/830 [..............................] - ETA: 1:33 - loss: 0.0585 - accuracy:  25/830 [..............................] - ETA: 1s - loss: 0.0983 - accuracy: 0. 53/830 [>.............................] - ETA: 1s - loss: 0.1087 - accuracy: 0. 81/830 [=>............................] - ETA: 1s - loss: 0.0959 - accuracy: 0.109/830 [==>...........................] - ETA: 1s - loss: 0.0939 - accuracy: 0.135/830 [===>..........................] - ETA: 1s - loss: 0.1021 - accuracy: 0.162/830 [====>.........................] - ETA: 1s - loss: 0.1010 - accuracy: 0.189/830 [=====>........................] - ETA: 1s - loss: 0.0975 - accuracy: 0.217/830 [======>.......................] - ETA: 1s - loss: 0.0987 - accuracy: 0.244/830 [=======>......................] - ETA: 1s - loss: 0.0966 - accuracy: 0.270/830 [========>.....................] - ETA: 1s - loss: 0.0952 - accuracy: 0.296/830 [=========>....................] - ETA: 1s - loss: 0.0945 - accuracy: 0.323/830 [==========>...................] - ETA: 0s - loss: 0.0945 - accuracy: 0.350/830 [===========>..................] - ETA: 0s - loss: 0.0967 - accuracy: 0.377/830 [============>.................] - ETA: 0s - loss: 0.0952 - accuracy: 0.405/830 [=============>................] - ETA: 0s - loss: 0.0950 - accuracy: 0.431/830 [==============>...............] - ETA: 0s - loss: 0.0953 - accuracy: 0.458/830 [===============>..............] - ETA: 0s - loss: 0.0976 - accuracy: 0.485/830 [================>.............] - ETA: 0s - loss: 0.0984 - accuracy: 0.511/830 [=================>............] - ETA: 0s - loss: 0.0980 - accuracy: 0.539/830 [==================>...........] - ETA: 0s - loss: 0.1020 - accuracy: 0.563/830 [===================>..........] - ETA: 0s - loss: 0.1016 - accuracy: 0.589/830 [====================>.........] - ETA: 0s - loss: 0.1038 - accuracy: 0.616/830 [=====================>........] - ETA: 0s - loss: 0.1044 - accuracy: 0.642/830 [======================>.......] - ETA: 0s - loss: 0.1035 - accuracy: 0.667/830 [=======================>......] - ETA: 0s - loss: 0.1038 - accuracy: 0.693/830 [========================>.....] - ETA: 0s - loss: 0.1044 - accuracy: 0.714/830 [========================>.....] - ETA: 0s - loss: 0.1038 - accuracy: 0.739/830 [=========================>....] - ETA: 0s - loss: 0.1029 - accuracy: 0.765/830 [==========================>...] - ETA: 0s - loss: 0.1038 - accuracy: 0.792/830 [===========================>..] - ETA: 0s - loss: 0.1040 - accuracy: 0.820/830 [============================>.] - ETA: 0s - loss: 0.1044 - accuracy: 0.830/830 [==============================] - 2s 2ms/step - loss: 0.1044 - accuracy: 0.9624

***************** Summary *****************
Trained float model accuracy:  0.962410569190979
Trained float model is saved in  ./keras_curve_cnn2_line.h5

  1. 2022年12月08日 00:43 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

自作の白線間走行用 CNN を Vitis-AI の Custom OP WorkFlow で実行する1

白線間走行用CNNをKerasで学習する”で学習した白線間走行用 CNN を Vitis-AI のカスタム OP ワークフローで動作させてみたいということで、今回は、修正した train_eval_line.py と quntize_curve_line.py を貼っておく。更に、train_curve_run_image、train_curve_run_label、test_curve_run_image、test_curve_run_label、学習用データとテスト・データを読み込む curve_dataset.py を Vitis-AI/tf2_custom_op_demo ディレクトリにコピーした。

(2022/11/11:追記) train_eval_line.py と quntize_curve_line.py を 12/11 に変更した。詳しくは、”自作の白線間走行用 CNN を Vitis-AI の Custom OP Flow で実行する5”を参照のこと。

Vitis-AI/tf2_custom_op_demo の tran_eval.py と quntize.py をコピーして名前を train_eval_line.py と quntize_curve_line.py に変更した。そして、train_eval_line.py と quntize_curve_line.py の内容を一部変更した。

train_eval_line.py を示す。

# Copyright 2019 Xilinx Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# train_eval_line.py
# 2022/12/05 : modified by marsee
# 2022/12/08 : modified by marsee

import os, sys
import numpy as np
import tensorflow as tf
import argparse

print(tf.__version__)

os.environ["CUDA_VISIBLE_DEVICES"] = "0"

from curve_dataset import load_mnist
from tensorflow.keras import utils as np_utils

parser = argparse.ArgumentParser(description='tensorflow 2 custom op example.')
parser.add_argument('--eval_only', type=bool, default=False, help='if only evaluate model')
parser.add_argument('--quant', type=bool, default=False, help='if evluate quantized model')

args = parser.parse_args()


class Mylayer(tf.keras.layers.Layer):
  def __init__(self, name="custom_layer", **kwargs):
    super().__init__(name=name, **kwargs)
    self.prelu = tf.keras.layers.PReLU()

  def call(self, inputs, training=None, mask=None):
    x = self.prelu(inputs)
    return x

custom_objects = {"Mylayer": Mylayer}

def build_model():
  inputs = tf.keras.Input((10, 56, 1))
  x = tf.keras.layers.Conv2D(2, (5, 5), activation='relu')(inputs)

  x = tf.keras.layers.MaxPooling2D((2, 2), (2, 2))(x)

  my_model = Mylayer()
  x = my_model(x)

  x = tf.keras.layers.Flatten()(x)
  x = tf.keras.layers.Dense(100, activation='relu')(x)
  x = tf.keras.layers.Dense(3, activation='softmax')(x)

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

def main():
  #################################
  ###### build dataset
  #################################
  (x_train, y_train), (x_test, y_test) = load_mnist(normalize=False, flatten=False)
  trainzip = list(zip(y_train, x_train))
  np.random.shuffle(trainzip)
  y_train, x_train = zip(*trainzip)
  x_train = np.asarray(x_train)
  y_train = np.asarray(y_train)
  x_train = np.transpose(x_train,(0,2,3,1))

  testzip = list(zip(y_test, x_test))
  np.random.shuffle(testzip)
  y_test, x_test = zip(*testzip)
  x_test = np.asarray(x_test)
  y_test = np.asarray(y_test)
  x_test = np.transpose(x_test,(0,2,3,1))

  x_train = x_train.astype('float32')
  x_test = x_test.astype('float32')
  x_train /= 255
  x_test /= 255

  y_train = y_train.astype('int32')
  y_test = y_test.astype('int32')
  y_train = np_utils.to_categorical(y_train, 3)
  y_test =  np_utils.to_categorical(y_test, 3)

  #################################
  ##### evaluate model
  #################################
  if args.eval_only:
    if args.quant:
      from tensorflow_model_optimization.quantization.keras import vitis_quantize
      # quantized_model = tf.keras.models.load_model("./quantized/quantized.h5",
      #         custom_objects=custom_objects)
      with vitis_quantize.quantize_scope():
        quantized_model = tf.keras.models.load_model("./quantized/quantized_curve_line.h5",
                custom_objects=custom_objects)
        quantized_model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
        eval_results = quantized_model.evaluate(x_test, y_test)
        print("\n***************** Summary *****************")
        print("Quantized model accuracy: ", eval_results[1])
      return
    loaded_model = tf.keras.models.load_model("./keras_curve_cnn2_line.h5",
            custom_objects=custom_objects)
    eval_results = loaded_model.evaluate(x_test, y_test)
    print("\n***************** Summary *****************")
    print("Float model accuracy: ", eval_results[1])
    return
  #################################
  ##### build model
  #################################
  model = build_model()
  model.summary()
  #################################
  ##### compile train
  #################################
  model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
  model.fit(x_train, y_train, epochs=20, shuffle=True)
  eval_results = model.evaluate(x_test, y_test)
  print("\n***************** Summary *****************")
  print("Trained float model accuracy: ", eval_results[1])
  save_path = "./keras_curve_cnn2_line.h5"
  print("Trained float model is saved in ", save_path)
  model.save(save_path)

if __name__ == '__main__':
  main()


quntize_curve_line.py を示す。

# Copyright 2019 Xilinx Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# quantize_curve_line.py
# 2022/12/05 : modified by marsee

import os, sys
import numpy as np
import tensorflow as tf

from curve_dataset import load_mnist
from train_eval_line import custom_objects

print(tf.__version__)
os.environ["CUDA_VISIBLE_DEVICES"] = "0"


def main():
  #################################
  ###### build dataset
  #################################
  (x_train, y_train), (x_test, y_test) = load_mnist(normalize=False, flatten=False)
  
  testzip = list(zip(y_test, x_test))
  np.random.shuffle(testzip)
  y_test, x_test = zip(*testzip)
  x_test = np.asarray(x_test)
  y_test = np.asarray(y_test)
  x_test = np.transpose(x_test,(0,2,3,1))
  x_test = x_test.astype('float32')
  x_test /= 255

  #################################
  ##### quantize model
  #################################
  loaded_model = tf.keras.models.load_model("./keras_curve_cnn2_line.h5",
          custom_objects=custom_objects)
  loaded_model.summary()
  from tensorflow_model_optimization.quantization.keras import vitis_quantize
  # do quantization
  calib_dataset = x_test
  quant_model = vitis_quantize.VitisQuantizer(loaded_model, custom_objects=custom_objects).quantize_model(
      calib_dataset=calib_dataset,
      add_shape_info=True)
  # quant_model.summary()
  q_save_path = os.path.join('./quantized', 'quantized_curve_line.h5')
  quant_model.save(q_save_path)
  print("\n***************** Summary *****************")
  print("Quantized model is saved in ", q_save_path)

if __name__ == '__main__':
  main()


学習用データ・セットをコピーした。
カーブ、直線用白線間走行用畳み込みニューラルネットワーク5(トレーニング用データの生成)”で生成した train_curve_run_image と train_curve_run_label を Vitis-AI/tf2_custom_op_demo ディレクトリにコピーした。
カーブ、直線用白線間走行用畳み込みニューラルネットワーク7(テスト用データの作成)”で生成した test_curve_run_image のテスト用画像ファイルと test_curve_run_label のテスト用ラベル・ファイルを Vitis-AI/tf2_custom_op_demo ディレクトリにコピーした。

これらの学習用データとテスト・データを読み込む curve_dataset.py を貼っておく。

# curve_dataset.py
# 2017/12/18 白線追従走行用CNNに変更 by marsee
# 元になったコードは、https://github.com/oreilly-japan/deep-learning-from-scratch の mnist.py です
# 改変したコードもMITライセンスとします。 2017/12/18 by marsee

# coding: utf-8
try:
    import urllib.request
except ImportError:
    raise ImportError('You should use Python 3.x')
import os.path
import gzip
import pickle
import os
import numpy as np


key_file = {
    'train_img':'train_curve_run_image',
    'train_label':'train_curve_run_label',
    'test_img':'test_curve_run_image',
    'test_label':'test_curve_run_label'
}

dataset_dir = os.path.dirname(os.path.abspath(__file__))
save_file = dataset_dir + "/mnist.pkl"

train_num = 34650
test_num = 26550
img_dim = (1, 10, 56)
img_size = 560


def _load_label(file_name):
    file_path = dataset_dir + "/" + file_name
    
    print("Converting " + file_name + " to NumPy Array ...")
    with open(file_path, 'rb') as f:
            labels = np.frombuffer(f.read(), np.uint8, offset=8)
    print("Done")
    
    return labels

def _load_img(file_name):
    file_path = dataset_dir + "/" + file_name
    
    print("Converting " + file_name + " to NumPy Array ...")    
    with open(file_path, 'rb') as f:
            data = np.frombuffer(f.read(), np.uint8, offset=16)
    data = data.reshape(-1, img_size)
    print("Done")
    
    return data
    
def _convert_numpy():
    dataset = {}
    dataset['train_img'] =  _load_img(key_file['train_img'])
    dataset['train_label'] = _load_label(key_file['train_label'])    
    dataset['test_img'] = _load_img(key_file['test_img'])
    dataset['test_label'] = _load_label(key_file['test_label'])
    
    return dataset

def init_mnist():
    dataset = _convert_numpy()
    print("Creating pickle file ...")
    with open(save_file, 'wb') as f:
        pickle.dump(dataset, f, -1)
    print("Done!")

def _change_one_hot_label(X):
    T = np.zeros((X.size, 3))
    for idx, row in enumerate(T):
        row[X[idx]] = 1
        
    return T
    

def load_mnist(normalize=True, flatten=True, one_hot_label=False):
    """MNISTデータセットの読み込み
    
    Parameters
    ----------
    normalize : 画像のピクセル値を0.0~1.0に正規化する
    one_hot_label : 
        one_hot_labelがTrueの場合、ラベルはone-hot配列として返す
        one-hot配列とは、たとえば[0,0,1,0,0,0,0,0,0,0]のような配列
    flatten : 画像を一次元配列に平にするかどうか 
    
    Returns
    -------
    (訓練画像, 訓練ラベル), (テスト画像, テストラベル)
    """
    if not os.path.exists(save_file):
        init_mnist()
        
    with open(save_file, 'rb') as f:
        dataset = pickle.load(f)
    
    if normalize:
        for key in ('train_img', 'test_img'):
            dataset[key] = dataset[key].astype(np.float32)
            dataset[key] /= 255.0
            
    if one_hot_label:
        dataset['train_label'] = _change_one_hot_label(dataset['train_label'])
        dataset['test_label'] = _change_one_hot_label(dataset['test_label'])
    
    if not flatten:
         for key in ('train_img', 'test_img'):
            dataset[key] = dataset[key].reshape(-1, 1, 10, 56)

    return (dataset['train_img'], dataset['train_label']), (dataset['test_img'], dataset['test_label']) 


if __name__ == '__main__':
    init_mnist()


Custom_OP_Workflow_37_221207.png
  1. 2022年12月07日 04:23 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートを使って、TensorFlow + Keras で学習した MNIST を XMDEL にする2

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートを使って、TensorFlow + Keras で学習した MNIST を XMDEL にする”の続き。

前回は、私が自分で学習した MNIST の h5 ファイルを使用して、XMODEL を作成した。今回は、その XMODEL を使用して、KV260 の Petalinux 2022.1 で実際に MNIST を動作させてみよう。

KV260 の Petalinux 2022.1 の設定は、”Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる3”で全てやってあるので、XMODEL を転送して、実行してみれば良いはずだ。

FileZilla で tf2_minist_cnn5.xmodel を KV260 の Petalinux 2022.1 にアップロードした。
Custom_OP_Workflow_33_221206.png

カスタム OP デモを実行する。
cd ~/kv260_median/dpu
sudo mkdir -p /run/media/mmcblk0p1/
sudo cp dpu.xclbin /run/media/mmcblk0p1/
sudo xmutil unloadapp
sudo xmutil loadapp dpuprj
cd ~/tensorflow2_example/deployment/cpp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_mnist_cnn5.xmodel ~/tensorflow2_example/sample.jpg

Custom_OP_Workflow_34_221206.png
Custom_OP_Workflow_35_221206.png

xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_mnist_cnn5.xmodel ~/tensorflow2_example/sample.jpg
model_file: /home/petalinux/tensorflow2_example/tf2_mnist_cnn5.xmodel
image_path: /home/petalinux/tensorflow2_example/sample.jpg
image file /home/petalinux/tensorflow2_example/sample.jpg result:
 score[0]   =  0           
 score[1]   =  0           
 score[2]   =  nan         
 score[3]   =  nan         
 score[4]   =  0           
 score[5]   =  0           
 score[6]   =  0           
 score[7]   =  nan         
 score[8]   =  0           
 score[9]   =  nan         


数字の 7 の画像を認識できなかった。やはり、層の構造が違っているネットワークを無理やり XMODEL にしたのが原因なのか?

最後の層を softmax にしていないので、nan が出ているのかも知れない?そうなると score[7] = nan だし、うまく行っている可能性もあるのか?
  1. 2022年12月06日 04:04 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0
»