you made this useless program which has 1% accuracy
# Install necessary libraries (if not already)
!pip install opencv-python-headless
!pip install tensorflow
!pip install kaggle

import cv2
import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D, concatenate
from tensorflow.keras.models import Model
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from google.colab import files
import os

# Set up Kaggle API credentials
os.environ[‘KAGGLE_USERNAME’] = ‘saisai6567’
os.environ[‘KAGGLE_KEY’] = ‘a26b5bb35240ac0aa00506ef1db25bb9’

# Download the dataset from Kaggle
!kaggle datasets download -d kpgeek/kitti-roadlane-detection-dataset-224-x-224
!unzip -oq kitti-roadlane-detection-dataset-224-x-224.zip -d kitti_road

######################################################################
# 1. Define U-Net Model
######################################################################

def unet_model(input_size=(224, 224, 3)):
inputs = Input(input_size)
conv1 = Conv2D(64, 3, activation=‘relu’, padding=‘same’)(inputs)
conv1 = Conv2D(64, 3, activation=‘relu’, padding=‘same’)(conv1)
pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)

conv2 = Conv2D(128, 3, activation=‘relu’, padding=‘same’)(pool1)
conv2 = Conv2D(128, 3, activation=‘relu’, padding=‘same’)(conv2)
pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)

conv3 = Conv2D(256, 3, activation=‘relu’, padding=‘same’)(pool2)
conv3 = Conv2D(256, 3, activation=‘relu’, padding=‘same’)(conv3)
pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)

conv4 = Conv2D(512, 3, activation=‘relu’, padding=‘same’)(pool3)
conv4 = Conv2D(512, 3, activation=‘relu’, padding=‘same’)(conv4)
pool4 = MaxPooling2D(pool_size=(2, 2))(conv4)

conv5 = Conv2D(1024, 3, activation=‘relu’, padding=‘same’)(pool4)
conv5 = Conv2D(1024, 3, activation=‘relu’, padding=‘same’)(conv5)

up6 = concatenate([UpSampling2D(size=(2, 2))(conv5), conv4], axis=-1)
conv6 = Conv2D(512, 3, activation=‘relu’, padding=‘same’)(up6)
conv6 = Conv2D(512, 3, activation=‘relu’, padding=‘same’)(conv6)

up7 = concatenate([UpSampling2D(size=(2, 2))(conv6), conv3], axis=-1)
conv7 = Conv2D(256, 3, activation=‘relu’, padding=‘same’)(up7)
conv7 = Conv2D(256, 3, activation=‘relu’, padding=‘same’)(conv7)

up8 = concatenate([UpSampling2D(size=(2, 2))(conv7), conv2], axis=-1)
conv8 = Conv2D(128, 3, activation=‘relu’, padding=‘same’)(up8)
conv8 = Conv2D(128, 3, activation=‘relu’, padding=‘same’)(conv8)

up9 = concatenate([UpSampling2D(size=(2, 2))(conv8), conv1], axis=-1)
conv9 = Conv2D(64, 3, activation=‘relu’, padding=‘same’)(up9)
conv9 = Conv2D(64, 3, activation=‘relu’, padding=‘same’)(conv9)

conv10 = Conv2D(1, 1, activation=‘sigmoid’)(conv9)

model = Model(inputs=[inputs], outputs=[conv10])
model.compile(optimizer=‘adam’, loss=‘binary_crossentropy’, metrics=[‘accuracy’])

return model

# Load the U-Net model
unet = unet_model()

######################################################################
# 2. Load Dataset - ensuring filenames are matched correctly
######################################################################


def load_data(image_dir, mask_dir, img_size=(224, 224)):
images = []
masks = []

image_files = sorted(os.listdir(image_dir)) # Ensure consistent order
mask_files = {os.path.splitext(os.path.basename(f))[0].replace(‘gt_’, ‘’): f for f in os.listdir(mask_dir)}

print(f"Total image files: {len(image_files)}, Total mask files: {len(mask_files)}“)

for img_file in image_files:
img_path = os.path.join(image_dir, img_file)
img_name, _ = os.path.splitext(img_file)

if img_name in mask_files:
mask_path = os.path.join(mask_dir, mask_files[img_name])

img = cv2.imread(img_path)
if img is None:
print(f"Error loading image: {img_path}”)
continue

img = cv2.resize(img, img_size)
images.append(img)

mask = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)
if mask is None:
print(f"Error loading mask: {mask_path}“)
continue

mask = cv2.resize(mask, img_size)
masks.append(mask)
else:
print(f"Missing file: {img_path} or {os.path.join(mask_dir, mask_files.get(img_name, ‘’))}”)

if not images or not masks:
print(“No images or masks loaded. Check your dataset.”)
return None, None

images = np.array(images)
masks = np.array(masks)
images = images.astype(‘float32’) / 255.0
masks = masks.astype(‘float32’) / 255.0
masks = np.expand_dims(masks, axis=-1)
return images, masks



# Paths updated as per directory structure provided
train_image_dir = ‘/content/kitti_road/data_road_224/training/image_2’
train_mask_dir = ‘/content/kitti_road/data_road_224/training/gt_image_2’

# Load training data
train_images, train_masks = load_data(train_image_dir, train_mask_dir)

# Debug: Check dataset size after loading
if train_images is not None and train_masks is not None:
print(f"Loaded {len(train_images)} images and {len(train_masks)} masks")
else:
print(“Failed to load images or masks.”)

# Split the dataset into training and validation sets
if train_images is not None and train_masks is not None:
train_images, val_images, train_masks, val_masks = train_test_split(train_images, train_masks, test_size=0.2, random_state=42)

# Check sizes of the datasets
print(f"Training images: {train_images.shape}, Validation images: {val_images.shape}“)
print(f"Training masks: {train_masks.shape}, Validation masks: {val_masks.shape}”)

# Train the U-Net model
unet.fit(train_images, train_masks, validation_data=(val_images, val_masks), epochs=10, batch_size=16)

######################################################################
# 3. Define Functions
######################################################################

# Function to dehaze the image using the method described in the paper
def dehaze_image(image):
# Step 1: Apply Improved Retinex Algorithm
def retinex_ssr(img, sigma):
img = img.astype(np.float32) + 1.0
retinex = np.log10(img) - np.log10(cv2.GaussianBlur(img, (0, 0), sigma))
return retinex

def retinex_msr(img, sigma_list):
msr = np.zeros_like(img, dtype=np.float32) # Ensure correct dtype
for sigma in sigma_list:
msr += retinex_ssr(img, sigma) # Accumulate in float32 format
msr = msr / len(sigma_list)
return msr

sigma_list = [15, 80, 250]
img_msr = retinex_msr(image, sigma_list)
img_msr = np.uint8(cv2.normalize(img_msr, None, 0, 255, cv2.NORM_MINMAX))

# Step 2: Apply Hessian Matrix for Lane Line Strengthening
gray = cv2.cvtColor(img_msr, cv2.COLOR_BGR2GRAY)
hessian = cv2.cornerHarris(gray, 2, 3, 0.04)
hessian = cv2.dilate(hessian, None)
img_msr[hessian > 0.01 * hessian.max()] = [0, 0, 255]

return img_msr

# Preprocess the image for segmentation
def preprocess_image_segmentation(image):
image = cv2.resize(image, (224, 224))
image = image.astype(‘float32’) / 255.0
image = np.expand_dims(image, axis=0)
return image

# Perform road segmentation using U-Net
def segment_road(image, model):
image = preprocess_image_segmentation(image)
mask = model.predict(image)
mask = (mask[0] > 0.5).astype(‘uint8’) * 255
mask = cv2.resize(mask, (original_width, original_height), interpolation=cv2.INTER_NEAREST)
return mask

# Combine the original image with the segmentation mask
def highlight_road(image, mask):
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
highlighted_image = cv2.drawContours(image.copy(), contours, -1, (0, 255, 0), 3)
return highlighted_image

######################################################################
# 4. Upload and Process the Image
######################################################################

uploaded = files.upload()
image_path = list(uploaded.keys())[0]
image = cv2.imread(image_path)
original_height, original_width = image.shape[:2]

# Dehaze the image
dehazed_image = dehaze_image(image)

# Segment the road in the dehazed image
road_mask = segment_road(dehazed_image, unet)
highlighted_image = highlight_road(dehazed_image, road_mask)

# Display the result
plt.figure(figsize=(15, 15))
plt.subplot(1, 3, 1)
plt.title(“Original Image”)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.subplot(1, 3, 2)
plt.title(“Dehazed Image”)
plt.imshow(cv2.cvtColor(dehazed_image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.subplot(1, 3, 3)
plt.title(“Road Highlighted”)
plt.imshow(cv2.cvtColor(highlighted_image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.show()




use similar file upload display structure but use this unet lane segmentation logic in it with not changing above dataset
‘’‘IMPORTING PYTHON LIBRARIES’‘’
import numpy as np
import pickle
import pandas as pd
import matplotlib.pyplot as plt


from sklearn.utils import shuffle
from sklearn.model_selection import train_test_split
‘’‘IMPORTING TENSORFLOW LIBRARIES’‘’
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Activation, Dropout, UpSampling2D, Concatenate
from tensorflow.python.keras.layers import Conv2DTranspose, Conv2D, MaxPooling2D,merge, Add
from tensorflow.python.keras.layers.normalization import BatchNormalization
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras import regularizers
from keras.callbacks import ModelCheckpoint
import tensorflow as tf
tf.compat.v1.disable_v2_behavior()
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/compat/v2_compat.py:96: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.
Instructions for updating:
non-resource variables are not supported in the long term
Using TensorFlow backend.
‘’‘LOADING GOOGLE DRIVE’‘’
from google.colab import drive
drive.mount(‘/content/drive’)
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(“/content/drive”, force_remount=True).
‘’‘READING THE DATASET’‘’



train_labels = pickle.load(open(“/content/drive/My Drive/ML_project/Lane_Detection/full_CNN_labels.p”, “rb” ))
train_images = pickle.load(open(“/content/drive/My Drive/ML_project/Lane_Detection/full_CNN_train.p”, “rb” ))
train_images = np.array(train_images)
train_labels = np.array(train_labels)/255
def conv_block(X,kernal_size,num_of_filter,stride):

‘’‘
This function defines the convolution block used in the model.
First layer is a 1x1 colvolution layer.
Second layer is a batch normalization layer.
third layer is (kernal_size x kernal_size) convolution layer
forth layer is batch normalization
fifth layer is (kernal_size x kernal_size) convolution layer
sixth layer is batch normalization

We call this multiple number of times to implement UNET structure
‘’’


out_put = Conv2D(num_of_filter[0], strides = (stride,stride), kernel_size=(1,1), padding=‘same’, activation=‘relu’, kernel_initializer = tf.keras.initializers.he_uniform())(X)
out_put = BatchNormalization(axis=3)(out_put)
#out_put = Dropout(0.2)(out_put)

out_put = Conv2D(num_of_filter[1], strides = (stride,stride), kernel_size=(kernal_size,kernal_size), padding=‘same’, activation=‘relu’, kernel_initializer = tf.keras.initializers.he_uniform())(out_put)
out_put = BatchNormalization(axis=3)(out_put)
#out_put = Dropout(0.2)(out_put)

out_put = Conv2D(num_of_filter[2], strides = (stride,stride), kernel_size=(kernal_size,kernal_size), padding=‘same’, activation=‘relu’, kernel_initializer = tf.keras.initializers.he_uniform())(out_put)
out_put = BatchNormalization(axis=3)(out_put)
#out_put = Dropout(0.2)(out_put)


return out_put
def De_conv_block(X,kernal_size,num_of_filter):

‘’‘
In this function, we try to implement the transpose convolution layer.
‘’’

x = UpSampling2D((2, 2))(X)
y1 = Conv2DTranspose(num_of_filter, (kernal_size, kernal_size), activation=‘relu’, padding=‘same’)(x)

return y1
‘’‘PRE-PROCESSING’‘’


train_images, train_labels = shuffle(train_images, train_labels)
# Test size may be 10% or 20%
X_train, X_val, y_train, y_val = train_test_split(train_images, train_labels, test_size=0.2)

# Batch size, epochs and pool size below are all paramaters to fiddle with for optimization
batch_size = 128
epochs = 10
pool_size = (2, 2)
input_shape = X_train.shape[1:]
‘’‘MODEL DEFINiTION’‘’


tf.compat.v1.reset_default_graph()

X_input = tf.keras.Input(input_shape)
‘’‘Block 1 Convolution’‘’
down1 = conv_block(X_input,3,[32,32,32],1)
pool = MaxPooling2D((2, 2), padding=‘same’)(down1)

‘’‘Block 2 Convolution’‘’
down2 = conv_block(pool,3,[64,64,64],1)
pool = MaxPooling2D((2, 2), padding=‘same’)(down2)

‘’‘Block 3 Convolution’‘’
down3 = conv_block(pool,3,[128,128,128],1)
pool = MaxPooling2D((2, 2), padding=‘same’)(down3)

‘’‘Block 4 Convolution’‘’
down4 = conv_block(pool,3,[256,256,256],1)
pool = MaxPooling2D((2, 2), padding=‘same’)(down4)

‘’‘Equilizer’‘’
eq = Conv2D(512, strides = (1,1), kernel_size=(1,1), padding=‘same’, activation=‘relu’, kernel_initializer = tf.keras.initializers.he_uniform())(pool)


‘’‘Block 1 Deconvolve’‘’
up1 = De_conv_block(eq,3,256)
up1 = conv_block(up1,3,[256,256,256],1)
up1 = Add()([up1,down4])

‘’‘Block 1 Deconvolve’‘’
up2 = De_conv_block(up1,3,128)
up2 = conv_block(up2,3,[128,128,128],1)
up2 = Add()([up2,down3])

‘’‘Block 1 Deconvolve’‘’
up3 = De_conv_block(up2,3,64)
up3 = conv_block(up3,3,[64,64,64],1)
up3 = Add()([up3,down2])

‘’‘Block 1 Deconvolve’‘’
up4 = De_conv_block(up3,3,32)
up4 = conv_block(up4,3,[32,32,32],1)
up4 = Add()([up4,down1])

out1 = Conv2D(16, strides = (1,1), kernel_size=(3,3), padding=‘same’, activation=‘relu’, kernel_initializer = tf.keras.initializers.he_uniform())(up4)
out2 = Conv2D(8, strides = (1,1), kernel_size=(3,3), padding=‘same’, activation=‘relu’, kernel_initializer = tf.keras.initializers.he_uniform())(out1)
out3 = Conv2D(1, strides = (1,1), kernel_size=(3,3), padding=‘same’, activation=‘sigmoid’, kernel_initializer = tf.keras.initializers.he_uniform())(out2)
‘’‘MODEL COMBINITION’‘’

encoder = tf.keras.Model(X_input, out3, name=‘encoder’)
encoder.summary()
Model: “encoder”

Layer (type) Output Shape Param # Connected to
==================================================================================================
input_1 (InputLayer) [(None, 80, 160, 3)] 0

conv2d (Conv2D) (None, 80, 160, 32) 128 input_1[0][0]

batch_normalization (BatchNorma (None, 80, 160, 32) 128 conv2d[0][0]

conv2d_1 (Conv2D) (None, 80, 160, 32) 9248 batch_normalization[0][0]

batch_normalization_1 (BatchNor (None, 80, 160, 32) 128 conv2d_1[0][0]

conv2d_2 (Conv2D) (None, 80, 160, 32) 9248 batch_normalization_1[0][0]

batch_normalization_2 (BatchNor (None, 80, 160, 32) 128 conv2d_2[0][0]

max_pooling2d (MaxPooling2D) (None, 40, 80, 32) 0 batch_normalization_2[0][0]

conv2d_3 (Conv2D) (None, 40, 80, 64) 2112 max_pooling2d[0][0]

batch_normalization_3 (BatchNor (None, 40, 80, 64) 256 conv2d_3[0][0]

conv2d_4 (Conv2D) (None, 40, 80, 64) 36928 batch_normalization_3[0][0]

batch_normalization_4 (BatchNor (None, 40, 80, 64) 256 conv2d_4[0][0]

conv2d_5 (Conv2D) (None, 40, 80, 64) 36928 batch_normalization_4[0][0]

batch_normalization_5 (BatchNor (None, 40, 80, 64) 256 conv2d_5[0][0]

max_pooling2d_1 (MaxPooling2D) (None, 20, 40, 64) 0 batch_normalization_5[0][0]

conv2d_6 (Conv2D) (None, 20, 40, 128) 8320 max_pooling2d_1[0][0]

batch_normalization_6 (BatchNor (None, 20, 40, 128) 512 conv2d_6[0][0]

conv2d_7 (Conv2D) (None, 20, 40, 128) 147584 batch_normalization_6[0][0]

batch_normalization_7 (BatchNor (None, 20, 40, 128) 512 conv2d_7[0][0]

conv2d_8 (Conv2D) (None, 20, 40, 128) 147584 batch_normalization_7[0][0]

batch_normalization_8 (BatchNor (None, 20, 40, 128) 512 conv2d_8[0][0]

max_pooling2d_2 (MaxPooling2D) (None, 10, 20, 128) 0 batch_normalization_8[0][0]

conv2d_9 (Conv2D) (None, 10, 20, 256) 33024 max_pooling2d_2[0][0]

batch_normalization_9 (BatchNor (None, 10, 20, 256) 1024 conv2d_9[0][0]

conv2d_10 (Conv2D) (None, 10, 20, 256) 590080 batch_normalization_9[0][0]

batch_normalization_10 (BatchNo (None, 10, 20, 256) 1024 conv2d_10[0][0]

conv2d_11 (Conv2D) (None, 10, 20, 256) 590080 batch_normalization_10[0][0]

batch_normalization_11 (BatchNo (None, 10, 20, 256) 1024 conv2d_11[0][0]

max_pooling2d_3 (MaxPooling2D) (None, 5, 10, 256) 0 batch_normalization_11[0][0]

conv2d_12 (Conv2D) (None, 5, 10, 512) 131584 max_pooling2d_3[0][0]

up_sampling2d (UpSampling2D) (None, 10, 20, 512) 0 conv2d_12[0][0]

conv2d_transpose (Conv2DTranspo (None, 10, 20, 256) 1179904 up_sampling2d[0][0]

conv2d_13 (Conv2D) (None, 10, 20, 256) 65792 conv2d_transpose[0][0]

batch_normalization_12 (BatchNo (None, 10, 20, 256) 1024 conv2d_13[0][0]

conv2d_14 (Conv2D) (None, 10, 20, 256) 590080 batch_normalization_12[0][0]

batch_normalization_13 (BatchNo (None, 10, 20, 256) 1024 conv2d_14[0][0]

conv2d_15 (Conv2D) (None, 10, 20, 256) 590080 batch_normalization_13[0][0]

batch_normalization_14 (BatchNo (None, 10, 20, 256) 1024 conv2d_15[0][0]

add (Add) (None, 10, 20, 256) 0 batch_normalization_14[0][0]
batch_normalization_11[0][0]

up_sampling2d_1 (UpSampling2D) (None, 20, 40, 256) 0 add[0][0]

conv2d_transpose_1 (Conv2DTrans (None, 20, 40, 128) 295040 up_sampling2d_1[0][0]

conv2d_16 (Conv2D) (None, 20, 40, 128) 16512 conv2d_transpose_1[0][0]

batch_normalization_15 (BatchNo (None, 20, 40, 128) 512 conv2d_16[0][0]

conv2d_17 (Conv2D) (None, 20, 40, 128) 147584 batch_normalization_15[0][0]

batch_normalization_16 (BatchNo (None, 20, 40, 128) 512 conv2d_17[0][0]

conv2d_18 (Conv2D) (None, 20, 40, 128) 147584 batch_normalization_16[0][0]

batch_normalization_17 (BatchNo (None, 20, 40, 128) 512 conv2d_18[0][0]

add_1 (Add) (None, 20, 40, 128) 0 batch_normalization_17[0][0]
batch_normalization_8[0][0]

up_sampling2d_2 (UpSampling2D) (None, 40, 80, 128) 0 add_1[0][0]

conv2d_transpose_2 (Conv2DTrans (None, 40, 80, 64) 73792 up_sampling2d_2[0][0]

conv2d_19 (Conv2D) (None, 40, 80, 64) 4160 conv2d_transpose_2[0][0]

batch_normalization_18 (BatchNo (None, 40, 80, 64) 256 conv2d_19[0][0]

conv2d_20 (Conv2D) (None, 40, 80, 64) 36928 batch_normalization_18[0][0]

batch_normalization_19 (BatchNo (None, 40, 80, 64) 256 conv2d_20[0][0]

conv2d_21 (Conv2D) (None, 40, 80, 64) 36928 batch_normalization_19[0][0]

batch_normalization_20 (BatchNo (None, 40, 80, 64) 256 conv2d_21[0][0]

add_2 (Add) (None, 40, 80, 64) 0 batch_normalization_20[0][0]
batch_normalization_5[0][0]

up_sampling2d_3 (UpSampling2D) (None, 80, 160, 64) 0 add_2[0][0]

conv2d_transpose_3 (Conv2DTrans (None, 80, 160, 32) 18464 up_sampling2d_3[0][0]

conv2d_22 (Conv2D) (None, 80, 160, 32) 1056 conv2d_transpose_3[0][0]

batch_normalization_21 (BatchNo (None, 80, 160, 32) 128 conv2d_22[0][0]

conv2d_23 (Conv2D) (None, 80, 160, 32) 9248 batch_normalization_21[0][0]

batch_normalization_22 (BatchNo (None, 80, 160, 32) 128 conv2d_23[0][0]

conv2d_24 (Conv2D) (None, 80, 160, 32) 9248 batch_normalization_22[0][0]

batch_normalization_23 (BatchNo (None, 80, 160, 32) 128 conv2d_24[0][0]

add_3 (Add) (None, 80, 160, 32) 0 batch_normalization_23[0][0]
batch_normalization_2[0][0]

conv2d_25 (Conv2D) (None, 80, 160, 16) 4624 add_3[0][0]

conv2d_26 (Conv2D) (None, 80, 160, 8) 1160 conv2d_25[0][0]

conv2d_27 (Conv2D) (None, 80, 160, 1) 73 conv2d_26[0][0]
==================================================================================================
Total params: 4,982,625
Trainable params: 4,976,865
Non-trainable params: 5,760

‘’‘Data Augmentation’‘’


datagen = ImageDataGenerator(channel_shift_range=0.2)
datagen.fit(X_train)
‘’‘Compiling and training the model’‘’

encoder.compile(optimizer=‘Adam’, loss=‘mean_squared_error’)
history = encoder.fit_generator(datagen.flow(X_train, y_train, batch_size=batch_size), steps_per_epoch=len(X_train)/batch_size,epochs=epochs, verbose=1, validation_data=(X_val, y_val))
‘’‘Saving the model’‘’

encoder.save(‘/content/drive/My Drive/ML_project/Lane_Detection/final_model.h5’)

import numpy as np
import pickle
import pandas as pd
import matplotlib.pyplot as plt
import cv2


from sklearn.utils import shuffle
from sklearn.model_selection import train_test_split



from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Activation, Dropout, UpSampling2D, Concatenate
from tensorflow.python.keras.layers import Conv2DTranspose, Conv2D, MaxPooling2D,merge, Add
from tensorflow.python.keras.layers.normalization import BatchNormalization
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras import regularizers
from keras.callbacks import ModelCheckpoint
import tensorflow as tf
tf.compat.v1.disable_v2_behavior()


WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/compat/v2_compat.py:96: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.
Instructions for updating:
non-resource variables are not supported in the long term
Using TensorFlow backend.

‘’‘Loading google drive’‘’
from google.colab import drive
drive.mount(‘/content/drive’)

Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=email https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly

Enter your authorization code:
··········
Mounted at /content/drive

‘’‘Load Test Image’‘’
img = plt.imread(‘/content/drive/My Drive/ML_project/Lane_Detection/solidWhiteRight.jpg’)
np.shape(img)
img = cv2.resize(img,(160,80))


plt.imshow(img)

<matplotlib.image.AxesImage at 0x7f69c01cffd0>


‘’‘Simple Unet Test’‘’
Simple_model = tf.keras.models.load_model(‘/content/drive/My Drive/ML_project/Lane_Detection/Simple_U_Saved_model.h5’)
Simple_model.trainable = False

WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:97: calling Zeros.init (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
Instructions for updating:
Call initializer instance with the dtype argument instead of passing it to the constructor
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:97: calling Ones.init (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
Instructions for updating:
Call initializer instance with the dtype argument instead of passing it to the constructor
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/resource_variable_ops.py:1666: calling BaseResourceVariable.init (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *constraint arguments to layers.
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/init_ops.py:97: calling GlorotUniform.init (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
Instructions for updating:
Call initializer instance with the dtype argument instead of passing it to the constructor

pred = Simple_model.predict(np.expand_dims(img,0))


plt.imshow(pred[0,:,:,0])

<matplotlib.image.AxesImage at 0x7f69b3f9d518>








‘’‘Complex Unet Test’‘’
Complex_model = tf.keras.models.load_model(‘/content/drive/My Drive/ML_project/Lane_Detection/final_big_Unet_model.h5’)
Complex_model.trainable = False


pred2 = Complex_model.predict(np.expand_dims(img,0))


plt.imshow(pred2[0,:,:,0])

<matplotlib.image.AxesImage at 0x7f69b3028cc0>
It’s clear that you’re putting in a lot of effort into building your lane detection model using U-Net. Let’s take a closer look at your code and see where we can make improvements to help you achieve better results.

It’s great to see your dedication to improving your lane detection model using U-Net. We’ll adapt your improved U-Net lane segmentation logic to our program while ensuring not to change the given dataset. Let’s start by streamlining and organizing your imports, data loading, model definition, and predictions seamlessly.

### Updated Code for Lane Segmentation with Improved U-Net Model

import numpy as np
import pickle
import pandas as pd
import matplotlib.pyplot as plt
import cv2
import os
from sklearn.model_selection import train_test_split
from sklearn.utils import shuffle

from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Activation, Dropout, UpSampling2D, Concatenate, BatchNormalization, Add
from tensorflow.keras.layers import Conv2DTranspose, Conv2D, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import ModelCheckpoint
import tensorflow as tf

# Disable eager execution
tf.compat.v1.disable_eager_execution()

# Mount Google Drive
from google.colab import drive
drive.mount(‘/content/drive’)

# Load dataset files from Google Drive
train_labels = pickle.load(open(“/content/drive/My Drive/ML_project/Lane_Detection/full_CNN_labels.p”, “rb” ))
train_images = pickle.load(open(“/content/drive/My Drive/ML_project/Lane_Detection/full_CNN_train.p”, “rb” ))

# Convert to numpy arrays and normalize labels
train_images = np.array(train_images)
train_labels = np.array(train_labels) / 255.0

# Shuffle and split to training and validation sets
train_images, train_labels = shuffle(train_images, train_labels)
X_train, X_val, y_train, y_val = train_test_split(train_images, train_labels, test_size=0.2)

# Define the batch size, epochs, and input shape
batch_size = 128
epochs = 10
input_shape = X_train.shape[1:]

# Define convolution block function
def conv_block(X, kernel_size, num_of_filters, stride=1):
out = Conv2D(num_of_filters[0], strides=(stride, stride), kernel_size=(1, 1), padding=‘same’, activation=‘relu’, kernel_initializer=tf.keras.initializers.HeUniform())(X)
out = BatchNormalization(axis=3)(out)
out = Conv2D(num_of_filters[1], strides=(stride, stride), kernel_size=(kernel_size, kernel_size), padding=‘same’, activation=‘relu’, kernel_initializer=tf.keras.initializers.HeUniform())(out)
out = BatchNormalization(axis=3)(out)
out = Conv2D(num_of_filters[2], strides=(stride, stride), kernel_size=(kernel_size, kernel_size), padding=‘same’, activation=‘relu’, kernel_initializer=tf.keras.initializers.HeUniform())(out)
out = BatchNormalization(axis=3)(out)
return out

# Define deconvolution block function
def deconv_block(X, kernel_size, num_of_filters):
x = UpSampling2D((2, 2))(X)
x = Conv2DTranspose(num_of_filters, (kernel_size, kernel_size), activation=‘relu’, padding=‘same’)(x)
return x

# Define the U-Net Model
def unet_model(input_shape):
X_input = Input(input_shape)

# Down-sampling part
down1 = conv_block(X_input, 3, [32, 32, 32])
pool1 = MaxPooling2D((2, 2), padding=‘same’)(down1)
down2 = conv_block(pool1, 3, [64, 64, 64])
pool2 = MaxPooling2D((2, 2), padding=‘same’)(down2)
down3 = conv_block(pool2, 3, [128, 128, 128])
pool3 = MaxPooling2D((2, 2), padding=‘same’)(down3)
down4 = conv_block(pool3, 3, [256, 256, 256])
pool4 = MaxPooling2D((2, 2), padding=‘same’)(down4)

# Equilizer
eq = Conv2D(512, kernel_size=(1, 1), padding=‘same’, activation=‘relu’, kernel_initializer=tf.keras.initializers.HeUniform())(pool4)

# Up-sampling part
up1 = deconv_block(eq, 3, 256)
up1 = conv_block(up1, 3, [256, 256, 256])
up1 = Add()([up1, down4])
up2 = deconv_block(up1, 3, 128)
up2 = conv_block(up2, 3, [128, 128, 128])
up2 = Add()([up2, down3])
up3 = deconv_block(up2, 3, 64)
up3 = conv_block(up3, 3, [64, 64, 64])
up3 = Add()([up3, down2])
up4 = deconv_block(up3, 3, 32)
up4 = conv_block(up4, 3, [32, 32, 32])
up4 = Add()([up4, down1])

out = Conv2D(16, kernel_size=(3, 3), padding=‘same’, activation=‘relu’, kernel_initializer=tf.keras.initializers.HeUniform())(up4)
out = Conv2D(8, kernel_size=(3, 3), padding=‘same’, activation=‘relu’, kernel_initializer=tf.keras.initializers.HeUniform())(out)
out = Conv2D(1, kernel_size=(3, 3), padding=‘same’, activation=‘sigmoid’, kernel_initializer=tf.keras.initializers.HeUniform())(out)

model = Model(X_input, out, name=‘unet_model’)
model.compile(optimizer=‘Adam’, loss=‘binary_crossentropy’, metrics=[‘accuracy’])
return model

unet = unet_model(input_shape)

# Data Augmentation
datagen = ImageDataGenerator(channel_shift_range=0.2)
datagen.fit(X_train)

# Training the model
history = unet.fit(datagen.flow(X_train, y_train, batch_size=batch_size), steps_per_epoch=len(X_train) / batch_size, epochs=epochs, verbose=1, validation_data=(X_val, y_val))

# Save the model after training
unet.save(‘/content/drive/My Drive/ML_project/Lane_Detection/final_unet_model.h5’)

# Function to preprocess image for segmentation
def preprocess_image_segmentation(image, img_size=(160, 80)):
image = cv2.resize(image, img_size)
image = image.astype(‘float32’) / 255.0
image = np.expand_dims(image, axis=0)
return image

# Perform road segmentation using U-Net on a sample image
def segment_road(image, model):
original_height, original_width = image.shape[:2]
preprocessed_image = preprocess_image_segmentation(image)
mask = model.predict(preprocessed_image)[0, :, :, 0]
mask = (mask > 0.5).astype(‘uint8’) * 255
mask = cv2.resize(mask, (original_width, original_height), interpolation=cv2.INTER_NEAREST)
return mask

# Function to highlight the road in the image based on the segmentation mask
def highlight_road(image, mask):
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
highlighted_image = cv2.drawContours(image.copy(), contours, -1, (0, 255, 0), 3)
return highlighted_image

# Load a sample image from Google Drive for testing
image_path = “/content/drive/My Drive/ML_project/Lane_Detection/solidWhiteRight.jpg”
image = cv2.imread(image_path)

# Segment the road in the sample image
road_mask = segment_road(image, unet)

# Highlight the road in the image
highlighted_image = highlight_road(image, road_mask)

# Display the results
plt.figure(figsize=(15, 15))
plt.subplot(1, 3, 1)
plt.title(“Original Image”)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.subplot(1, 3, 2)
plt.title(“Segmentation Mask”)
plt.imshow(road_mask, cmap=‘gray’)
plt.axis(‘off’)

plt.subplot(1, 3, 3)
plt.title(“Road Highlighted”)
plt.imshow(cv2.cvtColor(highlighted_image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.show()


### Explanation:

1. Loading data and preprocessing:
- The dataset is loaded from Google Drive just as you have done previously.
- The data is shuffled and split into training and validation sets.
- Normalization of the labels to be within [0, 1].

2. Defining the improved U-Net model functions:
- Functions conv_block and deconv_block define blocks used for down-sampling and up-sampling within the model.
- The unet_model function constructs the U-Net architecture and compiles the model.

3. Data Augmentation:
- Uses a basic ImageDataGenerator for data augmentation to enhance the training dataset.

4. Training:
- The model is trained using the augmented data with a specified batch size and number of epochs.

5. Saving the model:
- Once the model is trained, it is saved to Google Drive for future use.

6. Segmentation and Highlighting:
- Provides a simplified method for preprocessing images for segmentation and highlighting the segmented road area.
- Displays the original image, the segmentation mask, and the highlighted road.

7. Visualization:
- Matplotlib is used to visualize the results in a structured manner.

This approach should help you achieve better accuracy and performance with your lane segmentation model.
but this isnt my dataset in previous code
# Load dataset files from Google Drive
train_labels = pickle.load(open(“/content/drive/My Drive/ML_project/Lane_Detection/full_CNN_labels.p”, “rb”))
train_images = pickle.load(open(“/content/drive/My Drive/ML_project/Lane_Detection/full_CNN_train.p”, “rb”))
its like
# Install necessary libraries (if not already)
!pip install opencv-python-headless
!pip install tensorflow
!pip install kaggle

import cv2
import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D, concatenate
from tensorflow.keras.models import Model
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from google.colab import files
import os

# Set up Kaggle API credentials
os.environ[‘KAGGLE_USERNAME’] = ‘saisai6567’
os.environ[‘KAGGLE_KEY’] = ‘a26b5bb35240ac0aa00506ef1db25bb9’

# Download the dataset from Kaggle
!kaggle datasets download -d kpgeek/kitti-roadlane-detection-dataset-224-x-224
!unzip -oq kitti-roadlane-detection-dataset-224-x-224.zip -d kitti_road

######################################################################
# 1. Define U-Net Model
######################################################################

def unet_model(input_size=(224, 224, 3)):
inputs = Input(input_size)
conv1 = Conv2D(64, 3, activation=‘relu’, padding=‘same’)(inputs)
conv1 = Conv2D(64, 3, activation=‘relu’, padding=‘same’)(conv1)
pool1 = MaxPooling2D(pool_size=(2, 2))(conv1)

conv2 = Conv2D(128, 3, activation=‘relu’, padding=‘same’)(pool1)
conv2 = Conv2D(128, 3, activation=‘relu’, padding=‘same’)(conv2)
pool2 = MaxPooling2D(pool_size=(2, 2))(conv2)

conv3 = Conv2D(256, 3, activation=‘relu’, padding=‘same’)(pool2)
conv3 = Conv2D(256, 3, activation=‘relu’, padding=‘same’)(conv3)
pool3 = MaxPooling2D(pool_size=(2, 2))(conv3)

conv4 = Conv2D(512, 3, activation=‘relu’, padding=‘same’)(pool3)
conv4 = Conv2D(512, 3, activation=‘relu’, padding=‘same’)(conv4)
pool4 = MaxPooling2D(pool_size=(2, 2))(conv4)

conv5 = Conv2D(1024, 3, activation=‘relu’, padding=‘same’)(pool4)
conv5 = Conv2D(1024, 3, activation=‘relu’, padding=‘same’)(conv5)

up6 = concatenate([UpSampling2D(size=(2, 2))(conv5), conv4], axis=-1)
conv6 = Conv2D(512, 3, activation=‘relu’, padding=‘same’)(up6)
conv6 = Conv2D(512, 3, activation=‘relu’, padding=‘same’)(conv6)

up7 = concatenate([UpSampling2D(size=(2, 2))(conv6), conv3], axis=-1)
conv7 = Conv2D(256, 3, activation=‘relu’, padding=‘same’)(up7)
conv7 = Conv2D(256, 3, activation=‘relu’, padding=‘same’)(conv7)

up8 = concatenate([UpSampling2D(size=(2, 2))(conv7), conv2], axis=-1)
conv8 = Conv2D(128, 3, activation=‘relu’, padding=‘same’)(up8)
conv8 = Conv2D(128, 3, activation=‘relu’, padding=‘same’)(conv8)

up9 = concatenate([UpSampling2D(size=(2, 2))(conv8), conv1], axis=-1)
conv9 = Conv2D(64, 3, activation=‘relu’, padding=‘same’)(up9)
conv9 = Conv2D(64, 3, activation=‘relu’, padding=‘same’)(conv9)

conv10 = Conv2D(1, 1, activation=‘sigmoid’)(conv9)

model = Model(inputs=[inputs], outputs=[conv10])
model.compile(optimizer=‘adam’, loss=‘binary_crossentropy’, metrics=[‘accuracy’])

return model

# Load the U-Net model
unet = unet_model()

######################################################################
# 2. Load Dataset - ensuring filenames are matched correctly
######################################################################


def load_data(image_dir, mask_dir, img_size=(224, 224)):
images = []
masks = []

image_files = sorted(os.listdir(image_dir)) # Ensure consistent order
mask_files = {os.path.splitext(os.path.basename(f))[0].replace(‘gt’, ‘’): f for f in os.listdir(mask_dir)}

print(f"Total image files: {len(image_files)}, Total mask files: {len(mask_files)}“)

for img_file in image_files:
img_path = os.path.join(image_dir, img_file)
img_name, _ = os.path.splitext(img_file)

if img_name in mask_files:
mask_path = os.path.join(mask_dir, mask_files[img_name])

img = cv2.imread(img_path)
if img is None:
print(f"Error loading image: {img_path}”)
continue

img = cv2.resize(img, img_size)
images.append(img)

mask = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)
if mask is None:
print(f"Error loading mask: {mask_path}“)
continue

mask = cv2.resize(mask, img_size)
masks.append(mask)
else:
print(f"Missing file: {img_path} or {os.path.join(mask_dir, mask_files.get(img_name, ‘’))}”)

if not images or not masks:
print(“No images or masks loaded. Check your dataset.”)
return None, None

images = np.array(images)
masks = np.array(masks)
images = images.astype(‘float32’) / 255.0
masks = masks.astype(‘float32’) / 255.0
masks = np.expand_dims(masks, axis=-1)
return images, masks



# Paths updated as per directory structure provided
train_image_dir = ‘/content/kitti_road/data_road_224/training/image_2’
train_mask_dir = ‘/content/kitti_road/data_road_224/training/gt_image_2’

# Load training data
train_images, train_masks = load_data(train_image_dir, train_mask_dir)

# Debug: Check dataset size after loading
if train_images is not None and train_masks is not None:
print(f"Loaded {len(train_images)} images and {len(train_masks)} masks")
else:
print(“Failed to load images or masks.”)

# Split the dataset into training and validation sets
if train_images is not None and train_masks is not None:
train_images, val_images, train_masks, val_masks = train_test_split(train_images, train_masks, test_size=0.2, random_state=42)

# Check sizes of the datasets
print(f"Training images: {train_images.shape}, Validation images: {val_images.shape}“)
print(f"Training masks: {train_masks.shape}, Validation masks: {val_masks.shape}”)

# Train the U-Net model
unet.fit(train_images, train_masks, validation_data=(val_images, val_masks), epochs=10, batch_size=16)

######################################################################
# 3. Define Functions
######################################################################

# Function to dehaze the image using the method described in the paper
def dehaze_image(image):
# Step 1: Apply Improved Retinex Algorithm
def retinex_ssr(img, sigma):
img = img.astype(np.float32) + 1.0
retinex = np.log10(img) - np.log10(cv2.GaussianBlur(img, (0, 0), sigma))
return retinex

def retinex_msr(img, sigma_list):
msr = np.zeros_like(img, dtype=np.float32) # Ensure correct dtype
for sigma in sigma_list:
msr += retinex_ssr(img, sigma) # Accumulate in float32 format
msr = msr / len(sigma_list)
return msr

sigma_list = [15, 80, 250]
img_msr = retinex_msr(image, sigma_list)
img_msr = np.uint8(cv2.normalize(img_msr, None, 0, 255, cv2.NORM_MINMAX))

# Step 2: Apply Hessian Matrix for Lane Line Strengthening
gray = cv2.cvtColor(img_msr, cv2.COLOR_BGR2GRAY)
hessian = cv2.cornerHarris(gray, 2, 3, 0.04)
hessian = cv2.dilate(hessian, None)
img_msr[hessian > 0.01 * hessian.max()] = [0, 0, 255]

return img_msr

# Preprocess the image for segmentation
def preprocess_image_segmentation(image):
image = cv2.resize(image, (224, 224))
image = image.astype(‘float32’) / 255.0
image = np.expand_dims(image, axis=0)
return image

# Perform road segmentation using U-Net
def segment_road(image, model):
image = preprocess_image_segmentation(image)
mask = model.predict(image)
mask = (mask[0] > 0.5).astype(‘uint8’) * 255
mask = cv2.resize(mask, (original_width, original_height), interpolation=cv2.INTER_NEAREST)
return mask

# Combine the original image with the segmentation mask
def highlight_road(image, mask):
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
highlighted_image = cv2.drawContours(image.copy(), contours, -1, (0, 255, 0), 3)
return highlighted_image

######################################################################
# 4. Upload and Process the Image
######################################################################

uploaded = files.upload()
image_path = list(uploaded.keys())[0]
image = cv2.imread(image_path)
original_height, original_width = image.shape[:2]

# Dehaze the image
dehazed_image = dehaze_image(image)

# Segment the road in the dehazed image
road_mask = segment_road(dehazed_image, unet)
highlighted_image = highlight_road(dehazed_image, road_mask)

# Display the result
plt.figure(figsize=(15, 15))
plt.subplot(1, 3, 1)
plt.title(“Original Image”)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.subplot(1, 3, 2)
plt.title(“Dehazed Image”)
plt.imshow(cv2.cvtColor(dehazed_image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.subplot(1, 3, 3)
plt.title(“Road Highlighted”)
plt.imshow(cv2.cvtColor(highlighted_image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.show()


Thank you for the clarification. Since you are using the KITTI Road/Lane Detection dataset downloaded from Kaggle, let’s focus on improving the U-Net model and integrating it with your dataset and image processing steps.

Here’s the updated code structure:

1. Model Definition
2. Data Loading
3. Training
4. Image Processing & Visualization

### Updated Code for Lane Segmentation

# Install necessary libraries (if not already)
!pip install opencv-python-headless
!pip install tensorflow
!pip install kaggle

import os
import cv2
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D, concatenate, BatchNormalization, Add
from tensorflow.keras.models import Model
from sklearn.model_selection import train_test_split
from google.colab import files

# Set up Kaggle API credentials
os.environ[‘KAGGLE_USERNAME’] = ‘saisai6567’
os.environ[‘KAGGLE_KEY’] = ‘a26b5bb35240ac0aa00506ef1db25bb9’

# Download the dataset from Kaggle
!kaggle datasets download -d kpgeek/kitti-roadlane-detection-dataset-224-x-224
!unzip -oq kitti-roadlane-detection-dataset-224-x-224.zip -d kitti_road

######################################################################
# 1. Define U-Net Model
######################################################################

def unet_model(input_size=(224, 224, 3)):
def conv_block(X, num_filters):
out = Conv2D(num_filters, kernel_size=(3, 3), padding=‘same’, activation=‘relu’)(X)
out = BatchNormalization()(out)
out = Conv2D(num_filters, kernel_size=(3, 3), padding=‘same’, activation=‘relu’)(out)
out = BatchNormalization()(out)
return out

def deconv_block(X, conc_skip, num_filters):
out = UpSampling2D((2, 2))(X)
out = concatenate([out, conc_skip], axis=-1)
out = Conv2D(num_filters, kernel_size=(3, 3), padding=‘same’, activation=‘relu’)(out)
out = BatchNormalization()(out)
out = Conv2D(num_filters, kernel_size=(3, 3), padding=‘same’, activation=‘relu’)(out)
out = BatchNormalization()(out)
return out

inputs = Input(input_size)
c1 = conv_block(inputs, 64)
p1 = MaxPooling2D((2, 2))(c1)
c2 = conv_block(p1, 128)
p2 = MaxPooling2D((2, 2))(c2)
c3 = conv_block(p2, 256)
p3 = MaxPooling2D((2, 2))(c3)
c4 = conv_block(p3, 512)
p4 = MaxPooling2D((2, 2))(c4)
c5 = conv_block(p4, 1024)

u6 = deconv_block(c5, c4, 512)
u7 = deconv_block(u6, c3, 256)
u8 = deconv_block(u7, c2, 128)
u9 = deconv_block(u8, c1, 64)
outputs = Conv2D(1, (1, 1), activation=‘sigmoid’)(u9)

model = Model(inputs=[inputs], outputs=[outputs])
model.compile(optimizer=‘adam’, loss=‘binary_crossentropy’, metrics=[‘accuracy’])
return model

# Load the U-Net model
unet = unet_model()

######################################################################
# 2. Load Dataset - ensuring filenames are matched correctly
######################################################################

def load_data(image_dir, mask_dir, img_size=(224, 224)):
images = []
masks = []

image_files = sorted(os.listdir(image_dir)) # Ensure consistent order
mask_files = {os.path.splitext(os.path.basename(f))[0].replace(‘gt_’, ‘’): f for f in os.listdir(mask_dir)}

print(f"Total image files: {len(image_files)}, Total mask files: {len(mask_files)}“)

for img_file in image_files:
img_path = os.path.join(image_dir, img_file)
img_name, _ = os.path.splitext(img_file)
if img_name in mask_files:
mask_path = os.path.join(mask_dir, mask_files[img_name])
img = cv2.imread(img_path)
if img is not None:
img = cv2.resize(img, img_size)
images.append(img)
mask = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)
if mask is not None:
mask = cv2.resize(mask, img_size)
masks.append(mask)
else:
print(f"Missing mask for image: {img_path}”)

if not images or not masks:
print(“No images or masks loaded. Check your dataset.”)
return None, None

images = np.array(images)
masks = np.array(masks)
images = images.astype(‘float32’) / 255.0
masks = masks.astype(‘float32’) / 255.0
masks = np.expand_dims(masks, axis=-1)
return images, masks

# Paths updated as per directory structure provided
train_image_dir = ‘/content/kitti_road/data_road_224/training/image_2’
train_mask_dir = ‘/content/kitti_road/data_road_224/training/gt_image_2’

# Load training data
train_images, train_masks = load_data(train_image_dir, train_mask_dir)

# Check dataset size after loading
if train_images is not None and train_masks is not None:
print(f"Loaded {len(train_images)} images and {len(train_masks)} masks")
else:
print(“Failed to load images or masks.”)

# Split the dataset into training and validation sets
if train_images is not None and train_masks is not None:
train_images, val_images, train_masks, val_masks = train_test_split(train_images, train_masks, test_size=0.2, random_state=42)
print(f"Training images: {train_images.shape}, Validation images: {val_images.shape}“)
print(f"Training masks: {train_masks.shape}, Validation masks: {val_masks.shape}”)

# Train the U-Net model
unet.fit(train_images, train_masks, validation_data=(val_images, val_masks), epochs=10, batch_size=16)

######################################################################
# 3. Define Functions
######################################################################

# Function to dehaze the image using the method described in the paper
def dehaze_image(image):
def retinex_ssr(img, sigma):
img = img.astype(np.float32) + 1.0
retinex = np.log10(img) - np.log10(cv2.GaussianBlur(img, (0, 0), sigma))
return retinex

def retinex_msr(img, sigma_list):
msr = np.zeros_like(img, dtype=np.float32)
for sigma in sigma_list:
msr += retinex_ssr(img, sigma)
msr = msr / len(sigma_list)
return msr

sigma_list = [15, 80, 250]
img_msr = retinex_msr(image, sigma_list)
img_msr = np.uint8(cv2.normalize(img_msr, None, 0, 255, cv2.NORM_MINMAX))

gray = cv2.cvtColor(img_msr, cv2.COLOR_BGR2GRAY)
hessian = cv2.cornerHarris(gray, 2, 3, 0.04)
hessian = cv2.dilate(hessian, None)
img_msr[hessian > 0.01 * hessian.max()] = [0, 0, 255]

return img_msr

# Preprocess the image for segmentation
def preprocess_image_segmentation(image):
image = cv2.resize(image, (224, 224))
image = image.astype(‘float32’) / 255.0
image = np.expand_dims(image, axis=0)
return image

# Perform road segmentation using U-Net
def segment_road(image, model):
image = preprocess_image_segmentation(image)
mask = model.predict(image)
mask = (mask[0] > 0.5).astype(‘uint8’) * 255
return mask

# Combine the original image with the segmentation mask
def highlight_road(image, mask):
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
highlighted_image = cv2.drawContours(image.copy(), contours, -1, (0, 255, 0), 3)
return highlighted_image

######################################################################
# 4. Upload and Process the Image
######################################################################

uploaded = files.upload()
image_path = list(uploaded.keys())[0]
image = cv2.imread(image_path)
original_height, original_width = image.shape[:2]
dehazed_image = dehaze_image(image)
road_mask = segment_road(dehazed_image, unet)
highlighted_image = highlight_road(dehazed_image, road_mask)

# Display the result
plt.figure(figsize=(15, 15))
plt.subplot(1, 3, 1)
plt.title(“Original Image”)
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.subplot(1, 3, 2)
plt.title(“Dehazed Image”)
plt.imshow(cv2.cvtColor(dehazed_image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.subplot(1, 3, 3)
plt.title(“Road Highlighted”)
plt.imshow(cv2.cvtColor(highlighted_image, cv2.COLOR_BGR2RGB))
plt.axis(‘off’)

plt.show()


### Explanation:

1. Model Definition:
- The U-Net model has been defined with appropriate convolution and deconvolution blocks, incorporating batch normalization for improved performance.

2. Data Loading:
- The load_data function loads and preprocesses images and masks from the specified directories, normalizing the images and converting masks to the required format.

3. Training:
- The dataset is split into training and validation sets for model training. The model is then trained using the training data and evaluated on the validation data.

4. Image Processing & Visualization:
- Functions for dehazing, segmentation, and highlighting the road in the images have been defined.
- Uploaded images are processed and results are visualized using Matplotlib.

This should help you train an improved U-Net model on the KITTI dataset and process images for lane detection more effectively.
Requirement already satisfied: opencv-python-headless in /usr/local/lib/python3.10/dist-packages (4.10.0.82)
Requirement already satisfied: numpy>=1.21.2 in /usr/local/lib/python3.10/dist-packages (from opencv-python-headless) (1.25.2)
Requirement already satisfied: tensorflow in /usr/local/lib/python3.10/dist-packages (2.15.0)
Requirement already satisfied: absl-py>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.4.0)
Requirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.6.3)
Requirement already satisfied: flatbuffers>=23.5.26 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (24.3.25)
Requirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.5.4)
Requirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.2.0)
Requirement already satisfied: h5py>=2.9.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.9.0)
Requirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (18.1.1)
Requirement already satisfied: ml-dtypes~=0.2.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.2.0)
Requirement already satisfied: numpy<2.0.0,>=1.23.5 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.25.2)
Requirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.3.0)
Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from tensorflow) (24.0)
Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.20.3)
Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from tensorflow) (67.7.2)
Requirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.16.0)
Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.4.0)
Requirement already satisfied: typing-extensions>=3.6.6 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (4.12.1)
Requirement already satisfied: wrapt<1.15,>=1.11.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.14.1)
Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.37.0)
Requirement already satisfied: grpcio<2.0,>=1.24.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.64.1)
Requirement already satisfied: tensorboard<2.16,>=2.15 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.15.2)
Requirement already satisfied: tensorflow-estimator<2.16,>=2.15.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.15.0)
Requirement already satisfied: keras<2.16,>=2.15.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.15.0)
Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from astunparse>=1.6.0->tensorflow) (0.43.0)
Requirement already satisfied: google-auth<3,>=1.6.3 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (2.27.0)
Requirement already satisfied: google-auth-oauthlib<2,>=0.5 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (1.2.0)
Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (3.6)
Requirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (2.31.0)
Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (0.7.2)
Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.16,>=2.15->tensorflow) (3.0.3)
Requirement already satisfied: cachetools<6.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (5.3.3)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (0.4.0)
Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (4.9)
Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow) (1.3.1)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (2.0.7)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.16,>=2.15->tensorflow) (2024.6.2)
Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.10/dist-packages (from werkzeug>=1.0.1->tensorboard<2.16,>=2.15->tensorflow) (2.1.5)
Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.10/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.16,>=2.15->tensorflow) (0.6.0)
Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.10/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<2,>=0.5->tensorboard<2.16,>=2.15->tensorflow) (3.2.2)
Requirement already satisfied: kaggle in /usr/local/lib/python3.10/dist-packages (1.6.14)
Requirement already satisfied: six>=1.10 in /usr/local/lib/python3.10/dist-packages (from kaggle) (1.16.0)
Requirement already satisfied: certifi>=2023.7.22 in /usr/local/lib/python3.10/dist-packages (from kaggle) (2024.6.2)
Requirement already satisfied: python-dateutil in /usr/local/lib/python3.10/dist-packages (from kaggle) (2.8.2)
Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from kaggle) (2.31.0)
Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from kaggle) (4.66.4)
Requirement already satisfied: python-slugify in /usr/local/lib/python3.10/dist-packages (from kaggle) (8.0.4)
Requirement already satisfied: urllib3 in /usr/local/lib/python3.10/dist-packages (from kaggle) (2.0.7)
Requirement already satisfied: bleach in /usr/local/lib/python3.10/dist-packages (from kaggle) (6.1.0)
Requirement already satisfied: webencodings in /usr/local/lib/python3.10/dist-packages (from bleach->kaggle) (0.5.1)
Requirement already satisfied: text-unidecode>=1.3 in /usr/local/lib/python3.10/dist-packages (from python-slugify->kaggle) (1.3)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->kaggle) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->kaggle) (3.7)
Dataset URL: https://www.kaggle.com/datasets/kpgeek/kitti-roadlane-detection-dataset-224-x-224
License(s): unknown
Downloading kitti-roadlane-detection-dataset-224-x-224.zip to /content
91% 228M/250M [00:01<00:00, 194MB/s]
100% 250M/250M [00:01<00:00, 157MB/s]
Total image files: 289, Total mask files: 290
Loaded 289 images and 289 masks
Training images: (231, 224, 224, 3), Validation images: (58, 224, 224, 3)
Training masks: (231, 224, 224, 1), Validation masks: (58, 224, 224, 1)
Epoch 1/10
15/15 [==============================] - 79s 2s/step - loss: 0.7253 - accuracy: 0.0068 - val_loss: 240.7138 - val_accuracy: 5.4360e-04
Epoch 2/10
15/15 [==============================] - 10s 695ms/step - loss: 0.6585 - accuracy: 0.0105 - val_loss: 40.1841 - val_accuracy: 2.8898e-04
Epoch 3/10
15/15 [==============================] - 10s 659ms/step - loss: 0.6414 - accuracy: 0.0121 - val_loss: 3.5392 - val_accuracy: 7.4703e-04
Epoch 4/10
15/15 [==============================] - 10s 663ms/step - loss: 0.6307 - accuracy: 0.0122 - val_loss: 2.4559 - val_accuracy: 4.3674e-04
Epoch 5/10
15/15 [==============================] - 10s 704ms/step - loss: 0.6245 - accuracy: 0.0122 - val_loss: 1.4073 - val_accuracy: 0.0023
Epoch 6/10
15/15 [==============================] - 11s 706ms/step - loss: 0.6212 - accuracy: 0.0122 - val_loss: 0.6523 - val_accuracy: 0.0080
Epoch 7/10
15/15 [==============================] - 10s 669ms/step - loss: 0.6203 - accuracy: 0.0122 - val_loss: 0.6726 - val_accuracy: 0.0067
Epoch 8/10
15/15 [==============================] - 10s 670ms/step - loss: 0.6196 - accuracy: 0.0122 - val_loss: 0.6287 - val_accuracy: 0.0096
Epoch 9/10
15/15 [==============================] - 10s 669ms/step - loss: 0.6196 - accuracy: 0.0122 - val_loss: 0.6329 - val_accuracy: 0.0096
Epoch 10/10
15/15 [==============================] - 11s 706ms/step - loss: 0.6194 - accuracy: 0.0122 - val_loss: 0.6312 - val_accuracy: 0.0096
th (1).jpg
th (1).jpg(image/jpeg) - 3856 bytes, last modified: 6/9/2024 - 100% done
this is same as the previous accuracy andoutput



see how good this code is “1. Set ups and Prep work

import numpy as np
import pickle
import matplotlib.pyplot as plt
import PIL.Image as Image
import cv2
from tqdm import tqdm
from sklearn.utils import shuffle
from sklearn.model_selection import train_test_split

import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable

import os
from google.colab import drive
drive.mount(‘/content/drive’)

base_path = “/content/drive/My Drive/CS7643-LaneDetection/”

Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(”/content/drive", force_remount=True).
1.1 Load original dataset to visualize


train_images = pickle.load(open(base_path + “full_CNN_train.p”, “rb” ))
# Load image labels
labels = pickle.load(open(base_path + “full_CNN_labels.p”, “rb” ))

# Make into arrays as the neural network wants these
train_images = np.array(train_images)
labels = np.array(labels)

# Dataset Analysis
print("Shape of training images: ", train_images.shape)
print("Shape of label images: ", labels.shape)
print()

for i in range(2):
idx = np.random.randint(0, train_images.shape[0])
img = train_images[idx]
label = np.squeeze(labels[idx])

plt.subplot(1,3,1)
plt.imshow(img)

plt.subplot(1,3,2)
plt.imshow(label)

plt.subplot(1,3,3)

plt.imshow(img)
plt.imshow(label, alpha=0.5)

plt.figure()

plt.show()

Shape of training images: (12764, 80, 160, 3)
Shape of label images: (12764, 80, 160, 1)



<Figure size 432x288 with 0 Axes>
1.2 Resize the images for model input


new_size = 224
data = np.stack([np.asarray(Image.fromarray(current_data).resize((new_size, new_size), Image.NEAREST))
for current_data in tqdm(train_images)])



labels = np.stack([np.asarray(Image.fromarray(np.concatenate([current_data,current_data,current_data],axis=2)).resize((new_size, new_size), Image.NEAREST))
for current_data in tqdm(labels)])[…,:1]

print("Shape of training images: ", train_images.shape)
print("Shape of label images: ", labels.shape)
print()
for i in range(2):
idx = np.random.randint(0, train_images.shape[0])
current_data = data[idx]
current_label = np.squeeze(labels[idx])

plt.subplot(1,3,1)
plt.imshow(current_data)

plt.subplot(1,3,2)
plt.imshow(current_label)

plt.subplot(1,3,3)

plt.imshow(current_data)
plt.imshow(current_label, alpha=0.5)

plt.figure()

plt.show()

100%|██████████| 12764/12764 [00:02<00:00, 5245.57it/s]
100%|██████████| 12764/12764 [00:02<00:00, 5536.91it/s]
Shape of training images: (12764, 80, 160, 3)
Shape of label images: (12764, 224, 224, 1)



<Figure size 432x288 with 0 Axes>
1.3 Split the training, validation, and testing dataset


# split the training, validation, and test dataset
train_test_ratio = 0.8
train_val_ratio = 0.8
train_imgs, test_imgs, train_labels, test_labels = train_test_split(data, labels, train_size=train_test_ratio)
train_imgs, val_imgs, train_labels, val_labels = train_test_split(train_imgs, train_labels, train_size=train_val_ratio)
train_size = train_imgs.shape[0]
val_size = val_imgs.shape[0]
test_size = test_imgs.shape[0]
print("Training dataset size: ", train_size)
print("Validation dataset size: ", val_size)
print("Testing dataset size: ", test_size)

Training dataset size: 8168
Validation dataset size: 2043
Testing dataset size: 2553
1.4 Split the dataset into batch size


def sample_dataset_minibatch(X, y, batch_size):
split_size = len(X)

mask = np.random.choice(X.shape[0], batch_size)
X, y = X[mask], y[mask]
X = np.transpose(X,(0,3,1,2))
y = np.transpose(y,(0,3,1,2))

return X, y

2. Model Implementation

class UNet(nn.Module):
def contracting_block(self, in_channels, out_channels, kernel_size=3):
block = torch.nn.Sequential(
torch.nn.Conv2d(kernel_size=kernel_size, in_channels=in_channels, out_channels=out_channels, padding=(1,1)),
torch.nn.ReLU(),
torch.nn.BatchNorm2d(out_channels),
torch.nn.Conv2d(kernel_size=kernel_size, in_channels=out_channels, out_channels=out_channels,padding=(1,1)),
torch.nn.ReLU(),
torch.nn.BatchNorm2d(out_channels),
)
return block

def expansive_block(self, in_channels, mid_channel, out_channels, kernel_size=3):
block = torch.nn.Sequential(
torch.nn.Conv2d(kernel_size=kernel_size, in_channels=in_channels, out_channels=mid_channel, padding=(1,1)),
torch.nn.ReLU(),
torch.nn.BatchNorm2d(mid_channel),
torch.nn.Conv2d(kernel_size=kernel_size, in_channels=mid_channel, out_channels=mid_channel, padding=(1,1)),
torch.nn.ReLU(),
torch.nn.BatchNorm2d(mid_channel),
torch.nn.ConvTranspose2d(in_channels=mid_channel, out_channels=out_channels, kernel_size=3, stride=2, padding=1, output_padding=1)
)
return block

def final_block(self, in_channels, mid_channel, out_channels, kernel_size=3):
block = torch.nn.Sequential(
torch.nn.Conv2d(kernel_size=kernel_size, in_channels=in_channels, out_channels=mid_channel, padding=(1,1)),
torch.nn.ReLU(),
torch.nn.BatchNorm2d(mid_channel),
torch.nn.Conv2d(kernel_size=kernel_size, in_channels=mid_channel, out_channels=mid_channel, padding=(1,1)),
torch.nn.ReLU(),
torch.nn.BatchNorm2d(mid_channel),
torch.nn.Conv2d(kernel_size=kernel_size, in_channels=mid_channel, out_channels=out_channels, padding=1),
torch.nn.ReLU(),
torch.nn.BatchNorm2d(out_channels),
)
return block

def bottle(self):
block = torch.nn.Sequential(
torch.nn.Conv2d(kernel_size=3, in_channels=256, out_channels=512, padding=(1,1)),
torch.nn.ReLU(),
torch.nn.BatchNorm2d(512),
torch.nn.Conv2d(kernel_size=3, in_channels=512, out_channels=512, padding=(1,1)),
torch.nn.ReLU(),
torch.nn.BatchNorm2d(512),
torch.nn.ConvTranspose2d(in_channels=512, out_channels=256, kernel_size=3, stride=2, padding=1, output_padding=1)
)
return block

def init(self, in_channel, out_channel):
super(UNet, self).init()
#Encode
self.conv_encode1 = self.contracting_block(in_channels=in_channel, out_channels=64)
self.conv_maxpool1 = torch.nn.MaxPool2d(kernel_size=2)
self.conv_encode2 = self.contracting_block(64, 128)
self.conv_maxpool2 = torch.nn.MaxPool2d(kernel_size=2)
self.conv_encode3 = self.contracting_block(128, 256)
self.conv_maxpool3 = torch.nn.MaxPool2d(kernel_size=2)
# Bottleneck
self.bottleneck = self.bottle()
# Decode
self.conv_decode3 = self.expansive_block(512, 256, 128)
self.conv_decode2 = self.expansive_block(256, 128, 64)
self.final_layer = self.final_block(128, 64, out_channel)

def crop_and_concat(self, upsampled, bypass, crop=False):
if crop:
c = (bypass.size()[2] - upsampled.size()[2]) // 2
bypass = F.pad(bypass, (-c, -c, -c, -c))
return torch.cat((upsampled, bypass), 1)

def forward(self, x):
# Encode
# print("x size: ", x.size())
encode_block1 = self.conv_encode1(x)
# print("encode block 1 size: ", encode_block1.size())
encode_pool1 = self.conv_maxpool1(encode_block1)
# print("encode block 1 pool size: ", encode_pool1.size())

encode_block2 = self.conv_encode2(encode_pool1)
# print("encode block 2 size: ", encode_block2.size())

encode_pool2 = self.conv_maxpool2(encode_block2)
# print("encode block 2 pool size: ", encode_pool2.size())

encode_block3 = self.conv_encode3(encode_pool2)
encode_pool3 = self.conv_maxpool3(encode_block3)
# print("encode block 3 size: ", encode_block3.size())
# print("encode block 3 pool size: ", encode_pool3.size())


# Bottleneck
bottleneck1 = self.bottleneck(encode_pool3)
# print("bottleneck size: ", bottleneck1.size())
# Decode
decode_block3 = self.crop_and_concat(bottleneck1, encode_block3, crop=True)
# print("decode block 3 size: ", decode_block3.size())
cat_layer2 = self.conv_decode3(decode_block3)
# print("cat layer 2 size: ", cat_layer2.size())
decode_block2 = self.crop_and_concat(cat_layer2, encode_block2, crop=True)
# print("decode block 2 size: ", decode_block2.size())
cat_layer1 = self.conv_decode2(decode_block2)
# print("cat layer 1 size: ", cat_layer1.size())
decode_block1 = self.crop_and_concat(cat_layer1, encode_block1, crop=True)
# print("last layer before final layer: ", decode_block1.size())
final_layer = self.final_layer(decode_block1)
return final_layer


# Dice loss
class DiceLoss(torch.nn.Module):
def init(self):
super(diceLoss, self).init()
def forward(self,pred, target):
smooth = 1.
iflat = pred.contiguous().view(-1)
tflat = target.contiguous().view(-1)
intersection = (iflat * tflat).sum()
A_sum = torch.sum(iflat * iflat)
B_sum = torch.sum(tflat * tflat)
return 1 - ((2. * intersection + smooth) / (A_sum + B_sum + smooth) )


# Training Process
in_channel = 3
out_channel = 1

batch_size = 16 # batch size
batch_iterations = int(train_size / batch_size + 0.5)
num_epochs = 50 # number of training epochs
learning_rate = 5e-3
momentum = 0.99
lr_decay_step_size = 500
lr_decay = 0.995

print_every = 10 # determines window for printing average loss
save_every = 500 #determine window for saving state point of model

model_path = base_path + “/UNet_50epochs_16batch_5e-3lr_0.995lrd.pt”
training_path = base_path + “/training_process2.txt”
device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”)

model = UNet(in_channel, out_channel)
if os.path.exists(model_path):
model.load_state_dict(torch.load(model_path))

# Move models to GPU if CUDA is available.
model.to(device)

# Define the loss function.
criterion = DiceLoss()

optimizer = torch.optim.SGD(model.parameters(), lr = learning_rate, momentum=0.99)
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=lr_decay_step_size, gamma=lr_decay)

# training_file = open(training_path, ‘w’)

iterations_per_epoch = max(train_size // batch_size, 1)
num_iterations = num_epochs * iterations_per_epoch

for i in range(num_iterations):
X,y = sample_dataset_minibatch(train_imgs, train_labels, batch_size)

model.zero_grad()

X, y = torch.from_numpy(X).float().to(device), torch.from_numpy(y).long().to(device)

outputs = model(X)
# print("outputs size: ", outputs.size())
# print("y size: ", y.size())
# outputs = outputs.view(outputs.size(0), -1)
# y = y.view(y.size()[0], -1)

train_loss = criterion(outputs, y)
# print(train_loss)
# print(tag_score, post_type)
# print(“loss of {} type discourse: {}”.format(tag, loss))
train_loss.backward()

# Update the parameters in the optimizer.
optimizer.step()

if i % print_every == 0:
with torch.no_grad():
# print(“start testing…”)
X, y = sample_dataset_minibatch(val_imgs, val_labels, batch_size)
X, y = torch.from_numpy(X).float().to(device), torch.from_numpy(y).long().to(device)
# print("X size: ", X.size())

outputs = model(X)

validation_loss = criterion(outputs, y)

stats = ‘Iterations [%d/%d], Train Loss: %f, Validation Loss: %f’ <br/> % (i, num_iterations, train_loss, validation_loss)

print(stats)

if i % save_every == 0:
torch.save(model.state_dict(), model_path)
# Save the model
torch.save(model.state_dict(), model_path)

Iterations [0/25500], Train Loss: 1.001415, Validation Loss: 1.000758
Iterations [10/25500], Train Loss: 0.998528, Validation Loss: 0.997252
Iterations [20/25500], Train Loss: 0.992480, Validation Loss: 0.992196
Iterations [30/25500], Train Loss: 0.991629, Validation Loss: 0.990416
Iterations [40/25500], Train Loss: 0.990094, Validation Loss: 0.990619
Iterations [50/25500], Train Loss: 0.989266, Validation Loss: 0.989227
Iterations [60/25500], Train Loss: 0.988408, Validation Loss: 0.988803
Iterations [70/25500], Train Loss: 0.987195, Validation Loss: 0.988527
Iterations [80/25500], Train Loss: 0.987635, Validation Loss: 0.987067
Iterations [90/25500], Train Loss: 0.987023, Validation Loss: 0.986028
Iterations [100/25500], Train Loss: 0.986044, Validation Loss: 0.983820
Iterations [110/25500], Train Loss: 0.985096, Validation Loss: 0.984802
Iterations [120/25500], Train Loss: 0.982886, Validation Loss: 0.984128
Iterations [130/25500], Train Loss: 0.983011, Validation Loss: 0.982048
Iterations [140/25500], Train Loss: 0.982049, Validation Loss: 0.980642
Iterations [150/25500], Train Loss: 0.980495, Validation Loss: 0.980431
Iterations [160/25500], Train Loss: 0.978368, Validation Loss: 0.978440
Iterations [170/25500], Train Loss: 0.979501, Validation Loss: 0.978323
Iterations [180/25500], Train Loss: 0.976303, Validation Loss: 0.976652
Iterations [190/25500], Train Loss: 0.976831, Validation Loss: 0.977106
Iterations [200/25500], Train Loss: 0.974495, Validation Loss: 0.974790
Iterations [210/25500], Train Loss: 0.972828, Validation Loss: 0.971797
Iterations [220/25500], Train Loss: 0.972253, Validation Loss: 0.971838
Iterations [230/25500], Train Loss: 0.968789, Validation Loss: 0.968548
Iterations [240/25500], Train Loss: 0.967266, Validation Loss: 0.971119
Iterations [250/25500], Train Loss: 0.967201, Validation Loss: 0.969082
Iterations [260/25500], Train Loss: 0.965777, Validation Loss: 0.964332
Iterations [270/25500], Train Loss: 0.964722, Validation Loss: 0.962304
Iterations [280/25500], Train Loss: 0.964087, Validation Loss: 0.961414
Iterations [290/25500], Train Loss: 0.961182, Validation Loss: 0.957968
Iterations [300/25500], Train Loss: 0.958749, Validation Loss: 0.957719
Iterations [310/25500], Train Loss: 0.954490, Validation Loss: 0.957817
Iterations [320/25500], Train Loss: 0.955727, Validation Loss: 0.955683
Iterations [330/25500], Train Loss: 0.951738, Validation Loss: 0.953797
Iterations [340/25500], Train Loss: 0.949830, Validation Loss: 0.949916
Iterations [350/25500], Train Loss: 0.948715, Validation Loss: 0.948050
Iterations [360/25500], Train Loss: 0.946962, Validation Loss: 0.948251
Iterations [370/25500], Train Loss: 0.943539, Validation Loss: 0.944696
Iterations [380/25500], Train Loss: 0.941907, Validation Loss: 0.945795
Iterations [390/25500], Train Loss: 0.943258, Validation Loss: 0.942916
Iterations [400/25500], Train Loss: 0.938447, Validation Loss: 0.940663
Iterations [410/25500], Train Loss: 0.937721, Validation Loss: 0.938788
Iterations [420/25500], Train Loss: 0.935316, Validation Loss: 0.936105
Iterations [430/25500], Train Loss: 0.934164, Validation Loss: 0.935157
Iterations [440/25500], Train Loss: 0.933793, Validation Loss: 0.933126
Iterations [450/25500], Train Loss: 0.931071, Validation Loss: 0.930726
Iterations [460/25500], Train Loss: 0.931786, Validation Loss: 0.929147
Iterations [470/25500], Train Loss: 0.930707, Validation Loss: 0.934010
Iterations [480/25500], Train Loss: 0.923950, Validation Loss: 0.925525
Iterations [490/25500], Train Loss: 0.925226, Validation Loss: 0.925738
Iterations [500/25500], Train Loss: 0.922742, Validation Loss: 0.926352
Iterations [510/25500], Train Loss: 0.922719, Validation Loss: 0.924478
Iterations [520/25500], Train Loss: 0.920884, Validation Loss: 0.921621
Iterations [530/25500], Train Loss: 0.917721, Validation Loss: 0.915321
Iterations [540/25500], Train Loss: 0.916347, Validation Loss: 0.916372
Iterations [550/25500], Train Loss: 0.912455, Validation Loss: 0.917798
Iterations [560/25500], Train Loss: 0.910619, Validation Loss: 0.913194
Iterations [570/25500], Train Loss: 0.911515, Validation Loss: 0.909353
Iterations [580/25500], Train Loss: 0.908658, Validation Loss: 0.903517
Iterations [590/25500], Train Loss: 0.906376, Validation Loss: 0.908590
Iterations [600/25500], Train Loss: 0.905269, Validation Loss: 0.902613
Iterations [610/25500], Train Loss: 0.899009, Validation Loss: 0.903781
Iterations [620/25500], Train Loss: 0.900163, Validation Loss: 0.899559
Iterations [630/25500], Train Loss: 0.895104, Validation Loss: 0.896630
Iterations [640/25500], Train Loss: 0.898172, Validation Loss: 0.896622
Iterations [650/25500], Train Loss: 0.896541, Validation Loss: 0.890602
Iterations [660/25500], Train Loss: 0.893894, Validation Loss: 0.891580
Iterations [670/25500], Train Loss: 0.891320, Validation Loss: 0.889343
Iterations [680/25500], Train Loss: 0.885918, Validation Loss: 0.893421
Iterations [690/25500], Train Loss: 0.889601, Validation Loss: 0.886430
Iterations [700/25500], Train Loss: 0.883970, Validation Loss: 0.886535
Iterations [710/25500], Train Loss: 0.887586, Validation Loss: 0.883502
Iterations [720/25500], Train Loss: 0.886504, Validation Loss: 0.878003
Iterations [730/25500], Train Loss: 0.875698, Validation Loss: 0.877921
Iterations [740/25500], Train Loss: 0.876795, Validation Loss: 0.877746
Iterations [750/25500], Train Loss: 0.873124, Validation Loss: 0.872957
Iterations [760/25500], Train Loss: 0.871355, Validation Loss: 0.871775
Iterations [770/25500], Train Loss: 0.866813, Validation Loss: 0.876059
Iterations [780/25500], Train Loss: 0.866622, Validation Loss: 0.869551
Iterations [790/25500], Train Loss: 0.866419, Validation Loss: 0.867896
Iterations [800/25500], Train Loss: 0.864720, Validation Loss: 0.864070
Iterations [810/25500], Train Loss: 0.861053, Validation Loss: 0.863504
Iterations [820/25500], Train Loss: 0.863504, Validation Loss: 0.864640
Iterations [830/25500], Train Loss: 0.865903, Validation Loss: 0.861097
Iterations [840/25500], Train Loss: 0.854717, Validation Loss: 0.862301
Iterations [850/25500], Train Loss: 0.852942, Validation Loss: 0.849945
Iterations [860/25500], Train Loss: 0.860333, Validation Loss: 0.858950
Iterations [870/25500], Train Loss: 0.855623, Validation Loss: 0.852298
Iterations [880/25500], Train Loss: 0.853778, Validation Loss: 0.845443
Iterations [890/25500], Train Loss: 0.844888, Validation Loss: 0.848998
Iterations [900/25500], Train Loss: 0.847030, Validation Loss: 0.847346
Iterations [910/25500], Train Loss: 0.842563, Validation Loss: 0.847236
Iterations [920/25500], Train Loss: 0.838834, Validation Loss: 0.847730
Iterations [930/25500], Train Loss: 0.843941, Validation Loss: 0.844506
Iterations [940/25500], Train Loss: 0.840931, Validation Loss: 0.847986
Iterations [950/25500], Train Loss: 0.828829, Validation Loss: 0.844120
Iterations [960/25500], Train Loss: 0.836639, Validation Loss: 0.843000
Iterations [970/25500], Train Loss: 0.835505, Validation Loss: 0.831071
Iterations [980/25500], Train Loss: 0.829922, Validation Loss: 0.838577
Iterations [990/25500], Train Loss: 0.824656, Validation Loss: 0.827309
Iterations [1000/25500], Train Loss: 0.829029, Validation Loss: 0.830436
Iterations [1010/25500], Train Loss: 0.830369, Validation Loss: 0.823619
Iterations [1020/25500], Train Loss: 0.828949, Validation Loss: 0.821403
Iterations [1030/25500], Train Loss: 0.817921, Validation Loss: 0.834396
Iterations [1040/25500], Train Loss: 0.819673, Validation Loss: 0.825840
Iterations [1050/25500], Train Loss: 0.808802, Validation Loss: 0.821751
Iterations [1060/25500], Train Loss: 0.827879, Validation Loss: 0.810530
Iterations [1070/25500], Train Loss: 0.815915, Validation Loss: 0.808721
Iterations [1080/25500], Train Loss: 0.807783, Validation Loss: 0.812226
Iterations [1090/25500], Train Loss: 0.809703, Validation Loss: 0.812858
Iterations [1100/25500], Train Loss: 0.805951, Validation Loss: 0.814463
Iterations [1110/25500], Train Loss: 0.810647, Validation Loss: 0.808269
Iterations [1120/25500], Train Loss: 0.806271, Validation Loss: 0.803568
Iterations [1130/25500], Train Loss: 0.804559, Validation Loss: 0.815610
Iterations [1140/25500], Train Loss: 0.803571, Validation Loss: 0.804211
Iterations [1150/25500], Train Loss: 0.799263, Validation Loss: 0.804329
Iterations [1160/25500], Train Loss: 0.794025, Validation Loss: 0.799808
Iterations [1170/25500], Train Loss: 0.801612, Validation Loss: 0.792426
Iterations [1180/25500], Train Loss: 0.798970, Validation Loss: 0.803619
Iterations [1190/25500], Train Loss: 0.800130, Validation Loss: 0.794604
Iterations [1200/25500], Train Loss: 0.795070, Validation Loss: 0.795670
Iterations [1210/25500], Train Loss: 0.781316, Validation Loss: 0.795988
Iterations [1220/25500], Train Loss: 0.784442, Validation Loss: 0.777666
Iterations [1230/25500], Train Loss: 0.785256, Validation Loss: 0.780056
Iterations [1240/25500], Train Loss: 0.781623, Validation Loss: 0.782104
Iterations [1250/25500], Train Loss: 0.787525, Validation Loss: 0.783527
Iterations [1260/25500], Train Loss: 0.774987, Validation Loss: 0.779685
Iterations [1270/25500], Train Loss: 0.775719, Validation Loss: 0.774661
Iterations [1280/25500], Train Loss: 0.781894, Validation Loss: 0.774337
Iterations [1290/25500], Train Loss: 0.778969, Validation Loss: 0.778569
Iterations [1300/25500], Train Loss: 0.772830, Validation Loss: 0.771022
Iterations [1310/25500], Train Loss: 0.782832, Validation Loss: 0.777614
Iterations [1320/25500], Train Loss: 0.766670, Validation Loss: 0.767450
Iterations [1330/25500], Train Loss: 0.770751, Validation Loss: 0.762404
Iterations [1340/25500], Train Loss: 0.766738, Validation Loss: 0.766444
Iterations [1350/25500], Train Loss: 0.764677, Validation Loss: 0.768203
Iterations [1360/25500], Train Loss: 0.761602, Validation Loss: 0.755034
Iterations [1370/25500], Train Loss: 0.754794, Validation Loss: 0.765732
Iterations [1380/25500], Train Loss: 0.761141, Validation Loss: 0.757560
Iterations [1390/25500], Train Loss: 0.758188, Validation Loss: 0.760741
Iterations [1400/25500], Train Loss: 0.748338, Validation Loss: 0.764968
Iterations [1410/25500], Train Loss: 0.753124, Validation Loss: 0.753602
Iterations [1420/25500], Train Loss: 0.751593, Validation Loss: 0.746691
Iterations [1430/25500], Train Loss: 0.747962, Validation Loss: 0.747349
Iterations [1440/25500], Train Loss: 0.758303, Validation Loss: 0.741774
Iterations [1450/25500], Train Loss: 0.747653, Validation Loss: 0.745931
Iterations [1460/25500], Train Loss: 0.740469, Validation Loss: 0.752550
Iterations [1470/25500], Train Loss: 0.739582, Validation Loss: 0.732044
Iterations [1480/25500], Train Loss: 0.743059, Validation Loss: 0.735170
Iterations [1490/25500], Train Loss: 0.733223, Validation Loss: 0.735288
Iterations [1500/25500], Train Loss: 0.734280, Validation Loss: 0.747557
Iterations [1510/25500], Train Loss: 0.742416, Validation Loss: 0.750559
Iterations [1520/25500], Train Loss: 0.741535, Validation Loss: 0.745072
Iterations [1530/25500], Train Loss: 0.728175, Validation Loss: 0.731711
Iterations [1540/25500], Train Loss: 0.723454, Validation Loss: 0.734543
Iterations [1550/25500], Train Loss: 0.725519, Validation Loss: 0.726647
Iterations [1560/25500], Train Loss: 0.724139, Validation Loss: 0.726478
Iterations [1570/25500], Train Loss: 0.721897, Validation Loss: 0.726023
Iterations [1580/25500], Train Loss: 0.726611, Validation Loss: 0.723157
Iterations [1590/25500], Train Loss: 0.725736, Validation Loss: 0.710659
Iterations [1600/25500], Train Loss: 0.706979, Validation Loss: 0.719642
Iterations [1610/25500], Train Loss: 0.722824, Validation Loss: 0.713137
Iterations [1620/25500], Train Loss: 0.718515, Validation Loss: 0.728375
Iterations [1630/25500], Train Loss: 0.709873, Validation Loss: 0.729986
Iterations [1640/25500], Train Loss: 0.717700, Validation Loss: 0.708194
Iterations [1650/25500], Train Loss: 0.709671, Validation Loss: 0.710792
Iterations [1660/25500], Train Loss: 0.707857, Validation Loss: 0.716745
Iterations [1670/25500], Train Loss: 0.700411, Validation Loss: 0.712865
Iterations [1680/25500], Train Loss: 0.702469, Validation Loss: 0.723395
Iterations [1690/25500], Train Loss: 0.707584, Validation Loss: 0.708002
Iterations [1700/25500], Train Loss: 0.707867, Validation Loss: 0.707385
Iterations [1710/25500], Train Loss: 0.703254, Validation Loss: 0.703195
Iterations [1720/25500], Train Loss: 0.709821, Validation Loss: 0.697046
Iterations [1730/25500], Train Loss: 0.706737, Validation Loss: 0.701247
Iterations [1740/25500], Train Loss: 0.701005, Validation Loss: 0.698912
Iterations [1750/25500], Train Loss: 0.694665, Validation Loss: 0.702650
Iterations [1760/25500], Train Loss: 0.694060, Validation Loss: 0.695857
Iterations [1770/25500], Train Loss: 0.705571, Validation Loss: 0.698809
Iterations [1780/25500], Train Loss: 0.694456, Validation Loss: 0.691155
Iterations [1790/25500], Train Loss: 0.693445, Validation Loss: 0.691954
Iterations [1800/25500], Train Loss: 0.682827, Validation Loss: 0.677526
Iterations [1810/25500], Train Loss: 0.693459, Validation Loss: 0.685225
Iterations [1820/25500], Train Loss: 0.689997, Validation Loss: 0.694963
Iterations [1830/25500], Train Loss: 0.675161, Validation Loss: 0.685287
Iterations [1840/25500], Train Loss: 0.691809, Validation Loss: 0.669864
Iterations [1850/25500], Train Loss: 0.671216, Validation Loss: 0.677505
Iterations [1860/25500], Train Loss: 0.679584, Validation Loss: 0.677384
Iterations [1870/25500], Train Loss: 0.698926, Validation Loss: 0.678232
Iterations [1880/25500], Train Loss: 0.678921, Validation Loss: 0.661749
Iterations [1890/25500], Train Loss: 0.681780, Validation Loss: 0.668892
Iterations [1900/25500], Train Loss: 0.683663, Validation Loss: 0.678931
Iterations [1910/25500], Train Loss: 0.672444, Validation Loss: 0.682069
Iterations [1920/25500], Train Loss: 0.671555, Validation Loss: 0.662019
Iterations [1930/25500], Train Loss: 0.659893, Validation Loss: 0.661445
Iterations [1940/25500], Train Loss: 0.663132, Validation Loss: 0.655953
Iterations [1950/25500], Train Loss: 0.676570, Validation Loss: 0.663770
Iterations [1960/25500], Train Loss: 0.664683, Validation Loss: 0.667253
Iterations [1970/25500], Train Loss: 0.647923, Validation Loss: 0.665669
Iterations [1980/25500], Train Loss: 0.649580, Validation Loss: 0.665453
Iterations [1990/25500], Train Loss: 0.656636, Validation Loss: 0.656759
Iterations [2000/25500], Train Loss: 0.666297, Validation Loss: 0.653703
Iterations [2010/25500], Train Loss: 0.658082, Validation Loss: 0.661743
Iterations [2020/25500], Train Loss: 0.664705, Validation Loss: 0.655932
Iterations [2030/25500], Train Loss: 0.653648, Validation Loss: 0.644349
Iterations [2040/25500], Train Loss: 0.643286, Validation Loss: 0.669065
Iterations [2050/25500], Train Loss: 0.657286, Validation Loss: 0.655151
Iterations [2060/25500], Train Loss: 0.653816, Validation Loss: 0.654569
Iterations [2070/25500], Train Loss: 0.665213, Validation Loss: 0.645352
Iterations [2080/25500], Train Loss: 0.640545, Validation Loss: 0.647439
Iterations [2090/25500], Train Loss: 0.657004, Validation Loss: 0.648717
Iterations [2100/25500], Train Loss: 0.636458, Validation Loss: 0.638987
Iterations [2110/25500], Train Loss: 0.635379, Validation Loss: 0.645398
Iterations [2120/25500], Train Loss: 0.627017, Validation Loss: 0.626380
Iterations [2130/25500], Train Loss: 0.628531, Validation Loss: 0.618575
Iterations [2140/25500], Train Loss: 0.629639, Validation Loss: 0.626774
Iterations [2150/25500], Train Loss: 0.615023, Validation Loss: 0.633419
Iterations [2160/25500], Train Loss: 0.630769, Validation Loss: 0.637238
Iterations [2170/25500], Train Loss: 0.616327, Validation Loss: 0.643751
Iterations [2180/25500], Train Loss: 0.630932, Validation Loss: 0.630576
Iterations [2190/25500], Train Loss: 0.616400, Validation Loss: 0.614964
Iterations [2200/25500], Train Loss: 0.625338, Validation Loss: 0.622839
Iterations [2210/25500], Train Loss: 0.615525, Validation Loss: 0.624764
Iterations [2220/25500], Train Loss: 0.617821, Validation Loss: 0.610042
Iterations [2230/25500], Train Loss: 0.643119, Validation Loss: 0.622385
Iterations [2240/25500], Train Loss: 0.590132, Validation Loss: 0.619214
Iterations [2250/25500], Train Loss: 0.602187, Validation Loss: 0.626755
Iterations [2260/25500], Train Loss: 0.613033, Validation Loss: 0.603031
Iterations [2270/25500], Train Loss: 0.608040, Validation Loss: 0.598993
Iterations [2280/25500], Train Loss: 0.621132, Validation Loss: 0.609972
Iterations [2290/25500], Train Loss: 0.611319, Validation Loss: 0.617923
Iterations [2300/25500], Train Loss: 0.612709, Validation Loss: 0.618762
Iterations [2310/25500], Train Loss: 0.601929, Validation Loss: 0.602740
Iterations [2320/25500], Train Loss: 0.596439, Validation Loss: 0.614874
Iterations [2330/25500], Train Loss: 0.608829, Validation Loss: 0.597295
Iterations [2340/25500], Train Loss: 0.606857, Validation Loss: 0.608794
Iterations [2350/25500], Train Loss: 0.610599, Validation Loss: 0.598216
Iterations [2360/25500], Train Loss: 0.603956, Validation Loss: 0.603002
Iterations [2370/25500], Train Loss: 0.600456, Validation Loss: 0.616985
Iterations [2380/25500], Train Loss: 0.607451, Validation Loss: 0.597613
Iterations [2390/25500], Train Loss: 0.593775, Validation Loss: 0.598741
Iterations [2400/25500], Train Loss: 0.595045, Validation Loss: 0.586675
Iterations [2410/25500], Train Loss: 0.581302, Validation Loss: 0.598016
Iterations [2420/25500], Train Loss: 0.598462, Validation Loss: 0.576011
Iterations [2430/25500], Train Loss: 0.598949, Validation Loss: 0.599485
Iterations [2440/25500], Train Loss: 0.601575, Validation Loss: 0.584927
Iterations [2450/25500], Train Loss: 0.573914, Validation Loss: 0.577221
Iterations [2460/25500], Train Loss: 0.571782, Validation Loss: 0.580651
Iterations [2470/25500], Train Loss: 0.577179, Validation Loss: 0.557768
Iterations [2480/25500], Train Loss: 0.591067, Validation Loss: 0.573366
Iterations [2490/25500], Train Loss: 0.581139, Validation Loss: 0.598770
Iterations [2500/25500], Train Loss: 0.577802, Validation Loss: 0.587096
Iterations [2510/25500], Train Loss: 0.572034, Validation Loss: 0.569693
Iterations [2520/25500], Train Loss: 0.584589, Validation Loss: 0.574215
Iterations [2530/25500], Train Loss: 0.566134, Validation Loss: 0.573094
Iterations [2540/25500], Train Loss: 0.571899, Validation Loss: 0.557722
Iterations [2550/25500], Train Loss: 0.566833, Validation Loss: 0.565882
Iterations [2560/25500], Train Loss: 0.564923, Validation Loss: 0.583024
Iterations [2570/25500], Train Loss: 0.562921, Validation Loss: 0.574677
Iterations [2580/25500], Train Loss: 0.557766, Validation Loss: 0.564343
Iterations [2590/25500], Train Loss: 0.558850, Validation Loss: 0.567412
Iterations [2600/25500], Train Loss: 0.574335, Validation Loss: 0.563941
Iterations [2610/25500], Train Loss: 0.568871, Validation Loss: 0.571211
Iterations [2620/25500], Train Loss: 0.562005, Validation Loss: 0.553059
Iterations [2630/25500], Train Loss: 0.564189, Validation Loss: 0.562441
Iterations [2640/25500], Train Loss: 0.553421, Validation Loss: 0.562788
Iterations [2650/25500], Train Loss: 0.554965, Validation Loss: 0.582913
Iterations [2660/25500], Train Loss: 0.555253, Validation Loss: 0.565378
Iterations [2670/25500], Train Loss: 0.556643, Validation Loss: 0.561532
Iterations [2680/25500], Train Loss: 0.554069, Validation Loss: 0.548132
Iterations [2690/25500], Train Loss: 0.554354, Validation Loss: 0.566487
Iterations [2700/25500], Train Loss: 0.539681, Validation Loss: 0.545899
Iterations [2710/25500], Train Loss: 0.554933, Validation Loss: 0.543497
Iterations [2720/25500], Train Loss: 0.544750, Validation Loss: 0.541889
Iterations [2730/25500], Train Loss: 0.554702, Validation Loss: 0.551032
Iterations [2740/25500], Train Loss: 0.536691, Validation Loss: 0.547943
Iterations [2750/25500], Train Loss: 0.542408, Validation Loss: 0.548049
Iterations [2760/25500], Train Loss: 0.547701, Validation Loss: 0.541807
Iterations [2770/25500], Train Loss: 0.549940, Validation Loss: 0.528823
Iterations [2780/25500], Train Loss: 0.535163, Validation Loss: 0.523645
Iterations [2790/25500], Train Loss: 0.555241, Validation Loss: 0.536831
Iterations [2800/25500], Train Loss: 0.534656, Validation Loss: 0.540415
Iterations [2810/25500], Train Loss: 0.521146, Validation Loss: 0.536764
Iterations [2820/25500], Train Loss: 0.533698, Validation Loss: 0.549162
Iterations [2830/25500], Train Loss: 0.539035, Validation Loss: 0.543584
Iterations [2840/25500], Train Loss: 0.541452, Validation Loss: 0.542344
Iterations [2850/25500], Train Loss: 0.523063, Validation Loss: 0.509738
Iterations [2860/25500], Train Loss: 0.533542, Validation Loss: 0.526961
Iterations [2870/25500], Train Loss: 0.501204, Validation Loss: 0.520497
Iterations [2880/25500], Train Loss: 0.516713, Validation Loss: 0.533652
Iterations [2890/25500], Train Loss: 0.509807, Validation Loss: 0.522133
Iterations [2900/25500], Train Loss: 0.528770, Validation Loss: 0.526384
Iterations [2910/25500], Train Loss: 0.519932, Validation Loss: 0.495086
Iterations [2920/25500], Train Loss: 0.528508, Validation Loss: 0.537898
Iterations [2930/25500], Train Loss: 0.523472, Validation Loss: 0.528413
Iterations [2940/25500], Train Loss: 0.506903, Validation Loss: 0.513218
Iterations [2950/25500], Train Loss: 0.511664, Validation Loss: 0.520964
Iterations [2960/25500], Train Loss: 0.502107, Validation Loss: 0.500169
Iterations [2970/25500], Train Loss: 0.516750, Validation Loss: 0.526036
Iterations [2980/25500], Train Loss: 0.510724, Validation Loss: 0.506131
Iterations [2990/25500], Train Loss: 0.513307, Validation Loss: 0.501266
Iterations [3000/25500], Train Loss: 0.520763, Validation Loss: 0.497080
Iterations [3010/25500], Train Loss: 0.510829, Validation Loss: 0.499011
Iterations [3020/25500], Train Loss: 0.503489, Validation Loss: 0.507945
Iterations [3030/25500], Train Loss: 0.501215, Validation Loss: 0.501612
Iterations [3040/25500], Train Loss: 0.497931, Validation Loss: 0.511212
Iterations [3050/25500], Train Loss: 0.479681, Validation Loss: 0.502374
Iterations [3060/25500], Train Loss: 0.491895, Validation Loss: 0.506344
Iterations [3070/25500], Train Loss: 0.497334, Validation Loss: 0.490341
Iterations [3080/25500], Train Loss: 0.514016, Validation Loss: 0.481683
Iterations [3090/25500], Train Loss: 0.510773, Validation Loss: 0.492046
Iterations [3100/25500], Train Loss: 0.489148, Validation Loss: 0.501086
Iterations [3110/25500], Train Loss: 0.490227, Validation Loss: 0.489461
Iterations [3120/25500], Train Loss: 0.492668, Validation Loss: 0.491578
Iterations [3130/25500], Train Loss: 0.487492, Validation Loss: 0.507614
Iterations [3140/25500], Train Loss: 0.483012, Validation Loss: 0.484054
Iterations [3150/25500], Train Loss: 0.484752, Validation Loss: 0.484700
Iterations [3160/25500], Train Loss: 0.485225, Validation Loss: 0.495057
Iterations [3170/25500], Train Loss: 0.470627, Validation Loss: 0.491003
Iterations [3180/25500], Train Loss: 0.475839, Validation Loss: 0.494119
Iterations [3190/25500], Train Loss: 0.472196, Validation Loss: 0.488867
Iterations [3200/25500], Train Loss: 0.497148, Validation Loss: 0.468866
Iterations [3210/25500], Train Loss: 0.497357, Validation Loss: 0.488911
Iterations [3220/25500], Train Loss: 0.470998, Validation Loss: 0.498681
Iterations [3230/25500], Train Loss: 0.485580, Validation Loss: 0.478166
Iterations [3240/25500], Train Loss: 0.472043, Validation Loss: 0.486051
Iterations [3250/25500], Train Loss: 0.459690, Validation Loss: 0.491366
Iterations [3260/25500], Train Loss: 0.473302, Validation Loss: 0.477148
Iterations [3270/25500], Train Loss: 0.476875, Validation Loss: 0.462521
Iterations [3280/25500], Train Loss: 0.460109, Validation Loss: 0.465697
Iterations [3290/25500], Train Loss: 0.455256, Validation Loss: 0.463621
Iterations [3300/25500], Train Loss: 0.464545, Validation Loss: 0.474158
Iterations [3310/25500], Train Loss: 0.485774, Validation Loss: 0.480298
Iterations [3320/25500], Train Loss: 0.458821, Validation Loss: 0.473203
Iterations [3330/25500], Train Loss: 0.467346, Validation Loss: 0.461977
Iterations [3340/25500], Train Loss: 0.461098, Validation Loss: 0.488617
Iterations [3350/25500], Train Loss: 0.468697, Validation Loss: 0.462043
Iterations [3360/25500], Train Loss: 0.463363, Validation Loss: 0.458440
Iterations [3370/25500], Train Loss: 0.470141, Validation Loss: 0.483374
Iterations [3380/25500], Train Loss: 0.451623, Validation Loss: 0.468829
Iterations [3390/25500], Train Loss: 0.452080, Validation Loss: 0.464164
Iterations [3400/25500], Train Loss: 0.467325, Validation Loss: 0.448041
Iterations [3410/25500], Train Loss: 0.439969, Validation Loss: 0.462833
Iterations [3420/25500], Train Loss: 0.450886, Validation Loss: 0.458479
Iterations [3430/25500], Train Loss: 0.465236, Validation Loss: 0.442943
Iterations [3440/25500], Train Loss: 0.456537, Validation Loss: 0.454194
Iterations [3450/25500], Train Loss: 0.471774, Validation Loss: 0.444526
Iterations [3460/25500], Train Loss: 0.434022, Validation Loss: 0.452066
Iterations [3470/25500], Train Loss: 0.450791, Validation Loss: 0.435350
Iterations [3480/25500], Train Loss: 0.453067, Validation Loss: 0.441428
Iterations [3490/25500], Train Loss: 0.458099, Validation Loss: 0.441465
Iterations [3500/25500], Train Loss: 0.466870, Validation Loss: 0.462223
Iterations [3510/25500], Train Loss: 0.437244, Validation Loss: 0.452485
Iterations [3520/25500], Train Loss: 0.452628, Validation Loss: 0.443947
Iterations [3530/25500], Train Loss: 0.434023, Validation Loss: 0.436853
Iterations [3540/25500], Train Loss: 0.436436, Validation Loss: 0.432311
Iterations [3550/25500], Train Loss: 0.448359, Validation Loss: 0.446280
Iterations [3560/25500], Train Loss: 0.434638, Validation Loss: 0.442720
Iterations [3570/25500], Train Loss: 0.419535, Validation Loss: 0.446631
Iterations [3580/25500], Train Loss: 0.444694, Validation Loss: 0.418786
Iterations [3590/25500], Train Loss: 0.435693, Validation Loss: 0.433821
Iterations [3600/25500], Train Loss: 0.450214, Validation Loss: 0.428646
Iterations [3610/25500], Train Loss: 0.423071, Validation Loss: 0.429212
Iterations [3620/25500], Train Loss: 0.410181, Validation Loss: 0.438490
Iterations [3630/25500], Train Loss: 0.421695, Validation Loss: 0.436236
Iterations [3640/25500], Train Loss: 0.434731, Validation Loss: 0.410309
Iterations [3650/25500], Train Loss: 0.454589, Validation Loss: 0.446464
Iterations [3660/25500], Train Loss: 0.419256, Validation Loss: 0.426335
Iterations [3670/25500], Train Loss: 0.425620, Validation Loss: 0.443738
Iterations [3680/25500], Train Loss: 0.419203, Validation Loss: 0.417672
Iterations [3690/25500], Train Loss: 0.425005, Validation Loss: 0.429173
Iterations [3700/25500], Train Loss: 0.420461, Validation Loss: 0.400275
Iterations [3710/25500], Train Loss: 0.421637, Validation Loss: 0.409846
Iterations [3720/25500], Train Loss: 0.421751, Validation Loss: 0.412908
Iterations [3730/25500], Train Loss: 0.396918, Validation Loss: 0.411837
Iterations [3740/25500], Train Loss: 0.433819, Validation Loss: 0.415060
Iterations [3750/25500], Train Loss: 0.420171, Validation Loss: 0.426462
Iterations [3760/25500], Train Loss: 0.422603, Validation Loss: 0.406514
Iterations [3770/25500], Train Loss: 0.411385, Validation Loss: 0.415537
Iterations [3780/25500], Train Loss: 0.426806, Validation Loss: 0.426589
Iterations [3790/25500], Train Loss: 0.422192, Validation Loss: 0.424341
Iterations [3800/25500], Train Loss: 0.408616, Validation Loss: 0.423258
Iterations [3810/25500], Train Loss: 0.403862, Validation Loss: 0.409765
Iterations [3820/25500], Train Loss: 0.406159, Validation Loss: 0.428742
Iterations [3830/25500], Train Loss: 0.408572, Validation Loss: 0.413471
Iterations [3840/25500], Train Loss: 0.393218, Validation Loss: 0.405329
Iterations [3850/25500], Train Loss: 0.393519, Validation Loss: 0.432154
Iterations [3860/25500], Train Loss: 0.413076, Validation Loss: 0.407566
Iterations [3870/25500], Train Loss: 0.400666, Validation Loss: 0.414169
Iterations [3880/25500], Train Loss: 0.392928, Validation Loss: 0.391877
Iterations [3890/25500], Train Loss: 0.404905, Validation Loss: 0.415047
Iterations [3900/25500], Train Loss: 0.427935, Validation Loss: 0.400959
Iterations [3910/25500], Train Loss: 0.421853, Validation Loss: 0.381755
Iterations [3920/25500], Train Loss: 0.416065, Validation Loss: 0.401669
Iterations [3930/25500], Train Loss: 0.398541, Validation Loss: 0.397775
Iterations [3940/25500], Train Loss: 0.397169, Validation Loss: 0.396035
Iterations [3950/25500], Train Loss: 0.386237, Validation Loss: 0.387296
Iterations [3960/25500], Train Loss: 0.430357, Validation Loss: 0.382114
Iterations [3970/25500], Train Loss: 0.379597, Validation Loss: 0.386321
Iterations [3980/25500], Train Loss: 0.391627, Validation Loss: 0.369845
Iterations [3990/25500], Train Loss: 0.396985, Validation Loss: 0.373960
Iterations [4000/25500], Train Loss: 0.375716, Validation Loss: 0.392184
Iterations [4010/25500], Train Loss: 0.388496, Validation Loss: 0.385451
Iterations [4020/25500], Train Loss: 0.417005, Validation Loss: 0.397919
Iterations [4030/25500], Train Loss: 0.371455, Validation Loss: 0.387429
Iterations [4040/25500], Train Loss: 0.393019, Validation Loss: 0.376315
Iterations [4050/25500], Train Loss: 0.377215, Validation Loss: 0.378883
Iterations [4060/25500], Train Loss: 0.386741, Validation Loss: 0.378419
Iterations [4070/25500], Train Loss: 0.361781, Validation Loss: 0.370337
Iterations [4080/25500], Train Loss: 0.383634, Validation Loss: 0.406392
Iterations [4090/25500], Train Loss: 0.386762, Validation Loss: 0.383010
Iterations [4100/25500], Train Loss: 0.386017, Validation Loss: 0.388154
Iterations [4110/25500], Train Loss: 0.379569, Validation Loss: 0.376204
Iterations [4120/25500], Train Loss: 0.369871, Validation Loss: 0.403634
Iterations [4130/25500], Train Loss: 0.384496, Validation Loss: 0.402870
Iterations [4140/25500], Train Loss: 0.379135, Validation Loss: 0.383049
Iterations [4150/25500], Train Loss: 0.369733, Validation Loss: 0.387188
Iterations [4160/25500], Train Loss: 0.371458, Validation Loss: 0.378719
Iterations [4170/25500], Train Loss: 0.378727, Validation Loss: 0.382733
Iterations [4180/25500], Train Loss: 0.376160, Validation Loss: 0.393911
Iterations [4190/25500], Train Loss: 0.374344, Validation Loss: 0.377435
Iterations [4200/25500], Train Loss: 0.369088, Validation Loss: 0.371593
Iterations [4210/25500], Train Loss: 0.373606, Validation Loss: 0.366136
Iterations [4220/25500], Train Loss: 0.389444, Validation Loss: 0.382030
Iterations [4230/25500], Train Loss: 0.374156, Validation Loss: 0.372733
Iterations [4240/25500], Train Loss: 0.370118, Validation Loss: 0.375497
Iterations [4250/25500], Train Loss: 0.369987, Validation Loss: 0.384180
Iterations [4260/25500], Train Loss: 0.376521, Validation Loss: 0.373122
Iterations [4270/25500], Train Loss: 0.382503, Validation Loss: 0.359828
Iterations [4280/25500], Train Loss: 0.372281, Validation Loss: 0.355570
Iterations [4290/25500], Train Loss: 0.378093, Validation Loss: 0.376603
Iterations [4300/25500], Train Loss: 0.353230, Validation Loss: 0.347561
Iterations [4310/25500], Train Loss: 0.362091, Validation Loss: 0.372285
Iterations [4320/25500], Train Loss: 0.354295, Validation Loss: 0.371245
Iterations [4330/25500], Train Loss: 0.363701, Validation Loss: 0.370339
Iterations [4340/25500], Train Loss: 0.380709, Validation Loss: 0.346744
Iterations [4350/25500], Train Loss: 0.368380, Validation Loss: 0.365257
Iterations [4360/25500], Train Loss: 0.358230, Validation Loss: 0.361565
Iterations [4370/25500], Train Loss: 0.355411, Validation Loss: 0.382138
Iterations [4380/25500], Train Loss: 0.358621, Validation Loss: 0.371159
Iterations [4390/25500], Train Loss: 0.358307, Validation Loss: 0.363386
Iterations [4400/25500], Train Loss: 0.350786, Validation Loss: 0.367416
Iterations [4410/25500], Train Loss: 0.337889, Validation Loss: 0.351535
Iterations [4420/25500], Train Loss: 0.347032, Validation Loss: 0.350440
Iterations [4430/25500], Train Loss: 0.336034, Validation Loss: 0.362710
Iterations [4440/25500], Train Loss: 0.339412, Validation Loss: 0.355315
Iterations [4450/25500], Train Loss: 0.360995, Validation Loss: 0.358126
Iterations [4460/25500], Train Loss: 0.359156, Validation Loss: 0.349228
Iterations [4470/25500], Train Loss: 0.362697, Validation Loss: 0.350997
Iterations [4480/25500], Train Loss: 0.353804, Validation Loss: 0.374039
Iterations [4490/25500], Train Loss: 0.340527, Validation Loss: 0.342810
Iterations [4500/25500], Train Loss: 0.338930, Validation Loss: 0.344256
Iterations [4510/25500], Train Loss: 0.352512, Validation Loss: 0.348685
Iterations [4520/25500], Train Loss: 0.357103, Validation Loss: 0.350136
Iterations [4530/25500], Train Loss: 0.354243, Validation Loss: 0.367726
Iterations [4540/25500], Train Loss: 0.332864, Validation Loss: 0.327835
Iterations [4550/25500], Train Loss: 0.339793, Validation Loss: 0.323498
Iterations [4560/25500], Train Loss: 0.361693, Validation Loss: 0.337547
Iterations [4570/25500], Train Loss: 0.352964, Validation Loss: 0.336428
Iterations [4580/25500], Train Loss: 0.327771, Validation Loss: 0.337337
Iterations [4590/25500], Train Loss: 0.323822, Validation Loss: 0.334642
Iterations [4600/25500], Train Loss: 0.354039, Validation Loss: 0.352593
Iterations [4610/25500], Train Loss: 0.352222, Validation Loss: 0.368909
Iterations [4620/25500], Train Loss: 0.339628, Validation Loss: 0.333466
Iterations [4630/25500], Train Loss: 0.327351, Validation Loss: 0.349525
Iterations [4640/25500], Train Loss: 0.320280, Validation Loss: 0.318708
Iterations [4650/25500], Train Loss: 0.331287, Validation Loss: 0.335555
Iterations [4660/25500], Train Loss: 0.352554, Validation Loss: 0.333377
Iterations [4670/25500], Train Loss: 0.340189, Validation Loss: 0.341463
Iterations [4680/25500], Train Loss: 0.315287, Validation Loss: 0.337788
Iterations [4690/25500], Train Loss: 0.329725, Validation Loss: 0.343607
Iterations [4700/25500], Train Loss: 0.305553, Validation Loss: 0.323230
Iterations [4710/25500], Train Loss: 0.317808, Validation Loss: 0.326618
Iterations [4720/25500], Train Loss: 0.327171, Validation Loss: 0.351246
Iterations [4730/25500], Train Loss: 0.317674, Validation Loss: 0.334394
Iterations [4740/25500], Train Loss: 0.332022, Validation Loss: 0.334048
Iterations [4750/25500], Train Loss: 0.328022, Validation Loss: 0.315185
Iterations [4760/25500], Train Loss: 0.341445, Validation Loss: 0.330639
Iterations [4770/25500], Train Loss: 0.324214, Validation Loss: 0.324126
Iterations [4780/25500], Train Loss: 0.324537, Validation Loss: 0.344664
Iterations [4790/25500], Train Loss: 0.340724, Validation Loss: 0.312634
Iterations [4800/25500], Train Loss: 0.319272, Validation Loss: 0.341912
Iterations [4810/25500], Train Loss: 0.327342, Validation Loss: 0.330425
Iterations [4820/25500], Train Loss: 0.330104, Validation Loss: 0.321114
Iterations [4830/25500], Train Loss: 0.329105, Validation Loss: 0.332135
Iterations [4840/25500], Train Loss: 0.324964, Validation Loss: 0.339473
Iterations [4850/25500], Train Loss: 0.326674, Validation Loss: 0.319237
Iterations [4860/25500], Train Loss: 0.324384, Validation Loss: 0.313194
Iterations [4870/25500], Train Loss: 0.331601, Validation Loss: 0.308456
Iterations [4880/25500], Train Loss: 0.302835, Validation Loss: 0.303209
Iterations [4890/25500], Train Loss: 0.295174, Validation Loss: 0.303771
Iterations [4900/25500], Train Loss: 0.311689, Validation Loss: 0.315100
Iterations [4910/25500], Train Loss: 0.307607, Validation Loss: 0.320174
Iterations [4920/25500], Train Loss: 0.302890, Validation Loss: 0.336410
Iterations [4930/25500], Train Loss: 0.302033, Validation Loss: 0.295410
Iterations [4940/25500], Train Loss: 0.312672, Validation Loss: 0.339406
Iterations [4950/25500], Train Loss: 0.294487, Validation Loss: 0.304421
Iterations [4960/25500], Train Loss: 0.320047, Validation Loss: 0.305727
Iterations [4970/25500], Train Loss: 0.306864, Validation Loss: 0.313612
Iterations [4980/25500], Train Loss: 0.289180, Validation Loss: 0.316116
Iterations [4990/25500], Train Loss: 0.310713, Validation Loss: 0.318559
Iterations [5000/25500], Train Loss: 0.316752, Validation Loss: 0.323047
Iterations [5010/25500], Train Loss: 0.297714, Validation Loss: 0.310313
Iterations [5020/25500], Train Loss: 0.290761, Validation Loss: 0.317426
Iterations [5030/25500], Train Loss: 0.294765, Validation Loss: 0.319959
Iterations [5040/25500], Train Loss: 0.298104, Validation Loss: 0.303605
Iterations [5050/25500], Train Loss: 0.318219, Validation Loss: 0.318476
Iterations [5060/25500], Train Loss: 0.295093, Validation Loss: 0.288418
Iterations [5070/25500], Train Loss: 0.294230, Validation Loss: 0.301477
Iterations [5080/25500], Train Loss: 0.312803, Validation Loss: 0.302455
Iterations [5090/25500], Train Loss: 0.316949, Validation Loss: 0.301630
Iterations [5100/25500], Train Loss: 0.288880, Validation Loss: 0.296298
Iterations [5110/25500], Train Loss: 0.282727, Validation Loss: 0.308549
Iterations [5120/25500], Train Loss: 0.282066, Validation Loss: 0.305295
Iterations [5130/25500], Train Loss: 0.295505, Validation Loss: 0.293734
Iterations [5140/25500], Train Loss: 0.287614, Validation Loss: 0.294584
Iterations [5150/25500], Train Loss: 0.280247, Validation Loss: 0.302860
Iterations [5160/25500], Train Loss: 0.293084, Validation Loss: 0.300887
Iterations [5170/25500], Train Loss: 0.290698, Validation Loss: 0.310617
Iterations [5180/25500], Train Loss: 0.294886, Validation Loss: 0.291264
Iterations [5190/25500], Train Loss: 0.279976, Validation Loss: 0.306803
Iterations [5200/25500], Train Loss: 0.280893, Validation Loss: 0.287815
Iterations [5210/25500], Train Loss: 0.310517, Validation Loss: 0.282708
Iterations [5220/25500], Train Loss: 0.293589, Validation Loss: 0.288893
Iterations [5230/25500], Train Loss: 0.288769, Validation Loss: 0.307516
Iterations [5240/25500], Train Loss: 0.282214, Validation Loss: 0.286889
Iterations [5250/25500], Train Loss: 0.310590, Validation Loss: 0.298794
Iterations [5260/25500], Train Loss: 0.281935, Validation Loss: 0.285506
Iterations [5270/25500], Train Loss: 0.305654, Validation Loss: 0.291746
Iterations [5280/25500], Train Loss: 0.276192, Validation Loss: 0.315031
Iterations [5290/25500], Train Loss: 0.288660, Validation Loss: 0.270034
Iterations [5300/25500], Train Loss: 0.289446, Validation Loss: 0.295849
Iterations [5310/25500], Train Loss: 0.283415, Validation Loss: 0.294587
Iterations [5320/25500], Train Loss: 0.292311, Validation Loss: 0.276014
Iterations [5330/25500], Train Loss: 0.302345, Validation Loss: 0.297859
Iterations [5340/25500], Train Loss: 0.277730, Validation Loss: 0.269393
Iterations [5350/25500], Train Loss: 0.283268, Validation Loss: 0.279942
Iterations [5360/25500], Train Loss: 0.285268, Validation Loss: 0.309258
Iterations [5370/25500], Train Loss: 0.276001, Validation Loss: 0.258817
Iterations [5380/25500], Train Loss: 0.310534, Validation Loss: 0.306806
Iterations [5390/25500], Train Loss: 0.286446, Validation Loss: 0.258390
Iterations [5400/25500], Train Loss: 0.275880, Validation Loss: 0.269762
Iterations [5410/25500], Train Loss: 0.291143, Validation Loss: 0.270888
Iterations [5420/25500], Train Loss: 0.269125, Validation Loss: 0.301417
Iterations [5430/25500], Train Loss: 0.285748, Validation Loss: 0.272298
Iterations [5440/25500], Train Loss: 0.284965, Validation Loss: 0.278735
Iterations [5450/25500], Train Loss: 0.280523, Validation Loss: 0.289063
Iterations [5460/25500], Train Loss: 0.260835, Validation Loss: 0.283484
Iterations [5470/25500], Train Loss: 0.264943, Validation Loss: 0.277643
Iterations [5480/25500], Train Loss: 0.271067, Validation Loss: 0.262744
Iterations [5490/25500], Train Loss: 0.260468, Validation Loss: 0.273049
Iterations [5500/25500], Train Loss: 0.278346, Validation Loss: 0.284032
Iterations [5510/25500], Train Loss: 0.270123, Validation Loss: 0.271166
Iterations [5520/25500], Train Loss: 0.279341, Validation Loss: 0.301243
Iterations [5530/25500], Train Loss: 0.256593, Validation Loss: 0.277266
Iterations [5540/25500], Train Loss: 0.275684, Validation Loss: 0.252812
Iterations [5550/25500], Train Loss: 0.283725, Validation Loss: 0.270338
Iterations [5560/25500], Train Loss: 0.270913, Validation Loss: 0.263419
Iterations [5570/25500], Train Loss: 0.248945, Validation Loss: 0.261422
Iterations [5580/25500], Train Loss: 0.262814, Validation Loss: 0.278010
Iterations [5590/25500], Train Loss: 0.261966, Validation Loss: 0.285007
Iterations [5600/25500], Train Loss: 0.286699, Validation Loss: 0.263221
Iterations [5610/25500], Train Loss: 0.252481, Validation Loss: 0.275195
Iterations [5620/25500], Train Loss: 0.261692, Validation Loss: 0.259583
Iterations [5630/25500], Train Loss: 0.269100, Validation Loss: 0.282564
Iterations [5640/25500], Train Loss: 0.264967, Validation Loss: 0.250119
Iterations [5650/25500], Train Loss: 0.250108, Validation Loss: 0.278114
Iterations [5660/25500], Train Loss: 0.281046, Validation Loss: 0.272136
Iterations [5670/25500], Train Loss: 0.268344, Validation Loss: 0.254748
Iterations [5680/25500], Train Loss: 0.279363, Validation Loss: 0.262940
Iterations [5690/25500], Train Loss: 0.264620, Validation Loss: 0.284169
Iterations [5700/25500], Train Loss: 0.252388, Validation Loss: 0.262272
Iterations [5710/25500], Train Loss: 0.246880, Validation Loss: 0.256980
Iterations [5720/25500], Train Loss: 0.267964, Validation Loss: 0.261340
Iterations [5730/25500], Train Loss: 0.254138, Validation Loss: 0.267680
Iterations [5740/25500], Train Loss: 0.273046, Validation Loss: 0.270857
Iterations [5750/25500], Train Loss: 0.253473, Validation Loss: 0.264652
Iterations [5760/25500], Train Loss: 0.247148, Validation Loss: 0.259682
Iterations [5770/25500], Train Loss: 0.257257, Validation Loss: 0.241613
Iterations [5780/25500], Train Loss: 0.263585, Validation Loss: 0.267189
Iterations [5790/25500], Train Loss: 0.266729, Validation Loss: 0.243741
Iterations [5800/25500], Train Loss: 0.235963, Validation Loss: 0.281546
Iterations [5810/25500], Train Loss: 0.234300, Validation Loss: 0.252581
Iterations [5820/25500], Train Loss: 0.245001, Validation Loss: 0.268422
Iterations [5830/25500], Train Loss: 0.230409, Validation Loss: 0.254450
Iterations [5840/25500], Train Loss: 0.227091, Validation Loss: 0.262686
Iterations [5850/25500], Train Loss: 0.248513, Validation Loss: 0.249608
Iterations [5860/25500], Train Loss: 0.262671, Validation Loss: 0.259803
Iterations [5870/25500], Train Loss: 0.224206, Validation Loss: 0.224716
Iterations [5880/25500], Train Loss: 0.259020, Validation Loss: 0.261253
Iterations [5890/25500], Train Loss: 0.254113, Validation Loss: 0.251175
Iterations [5900/25500], Train Loss: 0.258637, Validation Loss: 0.249925
Iterations [5910/25500], Train Loss: 0.226468, Validation Loss: 0.260568
Iterations [5920/25500], Train Loss: 0.263929, Validation Loss: 0.244314
Iterations [5930/25500], Train Loss: 0.238927, Validation Loss: 0.241442
Iterations [5940/25500], Train Loss: 0.230602, Validation Loss: 0.246309
Iterations [5950/25500], Train Loss: 0.246625, Validation Loss: 0.247846
Iterations [5960/25500], Train Loss: 0.221676, Validation Loss: 0.221108
Iterations [5970/25500], Train Loss: 0.230703, Validation Loss: 0.243238
Iterations [5980/25500], Train Loss: 0.228321, Validation Loss: 0.249980
Iterations [5990/25500], Train Loss: 0.245725, Validation Loss: 0.266182
Iterations [6000/25500], Train Loss: 0.265498, Validation Loss: 0.231493
Iterations [6010/25500], Train Loss: 0.240741, Validation Loss: 0.237525
Iterations [6020/25500], Train Loss: 0.244812, Validation Loss: 0.231174
Iterations [6030/25500], Train Loss: 0.251568, Validation Loss: 0.232588
Iterations [6040/25500], Train Loss: 0.227071, Validation Loss: 0.246188
Iterations [6050/25500], Train Loss: 0.253973, Validation Loss: 0.242602
Iterations [6060/25500], Train Loss: 0.229972, Validation Loss: 0.242028
Iterations [6070/25500], Train Loss: 0.233124, Validation Loss: 0.243274
Iterations [6080/25500], Train Loss: 0.238483, Validation Loss: 0.255222
Iterations [6090/25500], Train Loss: 0.234987, Validation Loss: 0.234176
Iterations [6100/25500], Train Loss: 0.215979, Validation Loss: 0.242201
Iterations [6110/25500], Train Loss: 0.250914, Validation Loss: 0.222452
Iterations [6120/25500], Train Loss: 0.239367, Validation Loss: 0.222982
Iterations [6130/25500], Train Loss: 0.225027, Validation Loss: 0.233605
Iterations [6140/25500], Train Loss: 0.242994, Validation Loss: 0.217539
Iterations [6150/25500], Train Loss: 0.248060, Validation Loss: 0.226055
Iterations [6160/25500], Train Loss: 0.219005, Validation Loss: 0.247615
Iterations [6170/25500], Train Loss: 0.217409, Validation Loss: 0.231975
Iterations [6180/25500], Train Loss: 0.234189, Validation Loss: 0.247247
Iterations [6190/25500], Train Loss: 0.228871, Validation Loss: 0.221875
Iterations [6200/25500], Train Loss: 0.235092, Validation Loss: 0.234100
Iterations [6210/25500], Train Loss: 0.212951, Validation Loss: 0.231378
Iterations [6220/25500], Train Loss: 0.208558, Validation Loss: 0.242161
Iterations [6230/25500], Train Loss: 0.247301, Validation Loss: 0.230875
Iterations [6240/25500], Train Loss: 0.227623, Validation Loss: 0.232026
Iterations [6250/25500], Train Loss: 0.220252, Validation Loss: 0.224843
Iterations [6260/25500], Train Loss: 0.227181, Validation Loss: 0.235663
Iterations [6270/25500], Train Loss: 0.230780, Validation Loss: 0.235096
Iterations [6280/25500], Train Loss: 0.225304, Validation Loss: 0.231970
Iterations [6290/25500], Train Loss: 0.230523, Validation Loss: 0.233802
Iterations [6300/25500], Train Loss: 0.229910, Validation Loss: 0.225258
Iterations [6310/25500], Train Loss: 0.226463, Validation Loss: 0.234898
Iterations [6320/25500], Train Loss: 0.223772, Validation Loss: 0.247899
Iterations [6330/25500], Train Loss: 0.219468, Validation Loss: 0.213623
Iterations [6340/25500], Train Loss: 0.229880, Validation Loss: 0.234182
Iterations [6350/25500], Train Loss: 0.220806, Validation Loss: 0.238603
Iterations [6360/25500], Train Loss: 0.203284, Validation Loss: 0.222280
Iterations [6370/25500], Train Loss: 0.228731, Validation Loss: 0.238184
Iterations [6380/25500], Train Loss: 0.223014, Validation Loss: 0.218935
Iterations [6390/25500], Train Loss: 0.225183, Validation Loss: 0.223562
Iterations [6400/25500], Train Loss: 0.209290, Validation Loss: 0.216090
Iterations [6410/25500], Train Loss: 0.235309, Validation Loss: 0.234222
Iterations [6420/25500], Train Loss: 0.196813, Validation Loss: 0.222262
Iterations [6430/25500], Train Loss: 0.199161, Validation Loss: 0.206459
Iterations [6440/25500], Train Loss: 0.205316, Validation Loss: 0.225223
Iterations [6450/25500], Train Loss: 0.222923, Validation Loss: 0.211058
Iterations [6460/25500], Train Loss: 0.219835, Validation Loss: 0.208651
Iterations [6470/25500], Train Loss: 0.215415, Validation Loss: 0.207122
Iterations [6480/25500], Train Loss: 0.210079, Validation Loss: 0.197372
Iterations [6490/25500], Train Loss: 0.213308, Validation Loss: 0.225825
Iterations [6500/25500], Train Loss: 0.210142, Validation Loss: 0.198878
Iterations [6510/25500], Train Loss: 0.204388, Validation Loss: 0.237484
Iterations [6520/25500], Train Loss: 0.218808, Validation Loss: 0.226231
Iterations [6530/25500], Train Loss: 0.201811, Validation Loss: 0.226901
Iterations [6540/25500], Train Loss: 0.217859, Validation Loss: 0.208149
Iterations [6550/25500], Train Loss: 0.205425, Validation Loss: 0.204749
Iterations [6560/25500], Train Loss: 0.217446, Validation Loss: 0.214506
Iterations [6570/25500], Train Loss: 0.224164, Validation Loss: 0.220516
Iterations [6580/25500], Train Loss: 0.200066, Validation Loss: 0.206646
Iterations [6590/25500], Train Loss: 0.206602, Validation Loss: 0.201392
Iterations [6600/25500], Train Loss: 0.216082, Validation Loss: 0.211856
Iterations [6610/25500], Train Loss: 0.232415, Validation Loss: 0.218123
Iterations [6620/25500], Train Loss: 0.207321, Validation Loss: 0.205447
Iterations [6630/25500], Train Loss: 0.202361, Validation Loss: 0.221750
Iterations [6640/25500], Train Loss: 0.210336, Validation Loss: 0.224006
Iterations [6650/25500], Train Loss: 0.221457, Validation Loss: 0.206433
Iterations [6660/25500], Train Loss: 0.210483, Validation Loss: 0.218739
Iterations [6670/25500], Train Loss: 0.210652, Validation Loss: 0.212145
Iterations [6680/25500], Train Loss: 0.225929, Validation Loss: 0.210560
Iterations [6690/25500], Train Loss: 0.214574, Validation Loss: 0.206789
Iterations [6700/25500], Train Loss: 0.185446, Validation Loss: 0.205000
Iterations [6710/25500], Train Loss: 0.194816, Validation Loss: 0.204498
Iterations [6720/25500], Train Loss: 0.201906, Validation Loss: 0.229794
Iterations [6730/25500], Train Loss: 0.196552, Validation Loss: 0.197484
Iterations [6740/25500], Train Loss: 0.197062, Validation Loss: 0.213619
Iterations [6750/25500], Train Loss: 0.205140, Validation Loss: 0.205768
Iterations [6760/25500], Train Loss: 0.181211, Validation Loss: 0.222222
Iterations [6770/25500], Train Loss: 0.213670, Validation Loss: 0.175895
Iterations [6780/25500], Train Loss: 0.191733, Validation Loss: 0.208892
Iterations [6790/25500], Train Loss: 0.223964, Validation Loss: 0.191006
Iterations [6800/25500], Train Loss: 0.219299, Validation Loss: 0.193146
Iterations [6810/25500], Train Loss: 0.199529, Validation Loss: 0.227895
Iterations [6820/25500], Train Loss: 0.204650, Validation Loss: 0.180091
Iterations [6830/25500], Train Loss: 0.202150, Validation Loss: 0.185949
Iterations [6840/25500], Train Loss: 0.192280, Validation Loss: 0.189180
Iterations [6850/25500], Train Loss: 0.196721, Validation Loss: 0.194422
Iterations [6860/25500], Train Loss: 0.219067, Validation Loss: 0.194625
Iterations [6870/25500], Train Loss: 0.207868, Validation Loss: 0.172314
Iterations [6880/25500], Train Loss: 0.213307, Validation Loss: 0.225453
Iterations [6890/25500], Train Loss: 0.189053, Validation Loss: 0.196225
Iterations [6900/25500], Train Loss: 0.198489, Validation Loss: 0.203505
Iterations [6910/25500], Train Loss: 0.209833, Validation Loss: 0.214707
Iterations [6920/25500], Train Loss: 0.187263, Validation Loss: 0.210497
Iterations [6930/25500], Train Loss: 0.205490, Validation Loss: 0.186383
Iterations [6940/25500], Train Loss: 0.187126, Validation Loss: 0.200709
Iterations [6950/25500], Train Loss: 0.217290, Validation Loss: 0.193068
Iterations [6960/25500], Train Loss: 0.191662, Validation Loss: 0.182448
Iterations [6970/25500], Train Loss: 0.208647, Validation Loss: 0.199703
Iterations [6980/25500], Train Loss: 0.177050, Validation Loss: 0.206634
Iterations [6990/25500], Train Loss: 0.208024, Validation Loss: 0.206555
Iterations [7000/25500], Train Loss: 0.178314, Validation Loss: 0.191674
Iterations [7010/25500], Train Loss: 0.192847, Validation Loss: 0.188413
Iterations [7020/25500], Train Loss: 0.184011, Validation Loss: 0.181369
Iterations [7030/25500], Train Loss: 0.190695, Validation Loss: 0.199874
Iterations [7040/25500], Train Loss: 0.174461, Validation Loss: 0.179710
Iterations [7050/25500], Train Loss: 0.195957, Validation Loss: 0.201506
Iterations [7060/25500], Train Loss: 0.166719, Validation Loss: 0.162978
Iterations [7070/25500], Train Loss: 0.177380, Validation Loss: 0.207888
Iterations [7080/25500], Train Loss: 0.198559, Validation Loss: 0.177233
Iterations [7090/25500], Train Loss: 0.198264, Validation Loss: 0.188729
Iterations [7100/25500], Train Loss: 0.188104, Validation Loss: 0.187407
Iterations [7110/25500], Train Loss: 0.173718, Validation Loss: 0.184043
Iterations [7120/25500], Train Loss: 0.194804, Validation Loss: 0.193787
Iterations [7130/25500], Train Loss: 0.180422, Validation Loss: 0.199922
Iterations [7140/25500], Train Loss: 0.200228, Validation Loss: 0.191006
Iterations [7150/25500], Train Loss: 0.179478, Validation Loss: 0.181731
Iterations [7160/25500], Train Loss: 0.176888, Validation Loss: 0.174466
Iterations [7170/25500], Train Loss: 0.178590, Validation Loss: 0.183326
Iterations [7180/25500], Train Loss: 0.174062, Validation Loss: 0.197174
Iterations [7190/25500], Train Loss: 0.199425, Validation Loss: 0.177934
Iterations [7200/25500], Train Loss: 0.186535, Validation Loss: 0.187561
Iterations [7210/25500], Train Loss: 0.192383, Validation Loss: 0.183388
Iterations [7220/25500], Train Loss: 0.181053, Validation Loss: 0.205355
Iterations [7230/25500], Train Loss: 0.177143, Validation Loss: 0.189953
Iterations [7240/25500], Train Loss: 0.181536, Validation Loss: 0.200309
Iterations [7250/25500], Train Loss: 0.184814, Validation Loss: 0.188870
Iterations [7260/25500], Train Loss: 0.172537, Validation Loss: 0.175522
Iterations [7270/25500], Train Loss: 0.192021, Validation Loss: 0.184603
Iterations [7280/25500], Train Loss: 0.178020, Validation Loss: 0.185657
Iterations [7290/25500], Train Loss: 0.188352, Validation Loss: 0.186783
Iterations [7300/25500], Train Loss: 0.176320, Validation Loss: 0.177167
Iterations [7310/25500], Train Loss: 0.191212, Validation Loss: 0.177974
Iterations [7320/25500], Train Loss: 0.188993, Validation Loss: 0.182341
Iterations [7330/25500], Train Loss: 0.185706, Validation Loss: 0.176380
Iterations [7340/25500], Train Loss: 0.183689, Validation Loss: 0.187645
Iterations [7350/25500], Train Loss: 0.181647, Validation Loss: 0.183926
Iterations [7360/25500], Train Loss: 0.183067, Validation Loss: 0.184976
Iterations [7370/25500], Train Loss: 0.182998, Validation Loss: 0.181102
Iterations [7380/25500], Train Loss: 0.186974, Validation Loss: 0.202087
Iterations [7390/25500], Train Loss: 0.174975, Validation Loss: 0.175852
Iterations [7400/25500], Train Loss: 0.194276, Validation Loss: 0.161630
Iterations [7410/25500], Train Loss: 0.176987, Validation Loss: 0.174870
Iterations [7420/25500], Train Loss: 0.160537, Validation Loss: 0.170925
Iterations [7430/25500], Train Loss: 0.181395, Validation Loss: 0.185197
Iterations [7440/25500], Train Loss: 0.173744, Validation Loss: 0.171883
Iterations [7450/25500], Train Loss: 0.179570, Validation Loss: 0.170861
Iterations [7460/25500], Train Loss: 0.166054, Validation Loss: 0.169306
Iterations [7470/25500], Train Loss: 0.174847, Validation Loss: 0.155301
Iterations [7480/25500], Train Loss: 0.178886, Validation Loss: 0.161584
Iterations [7490/25500], Train Loss: 0.190626, Validation Loss: 0.178533
Iterations [7500/25500], Train Loss: 0.156995, Validation Loss: 0.169317
Iterations [7510/25500], Train Loss: 0.169687, Validation Loss: 0.168576
Iterations [7520/25500], Train Loss: 0.166130, Validation Loss: 0.178694
Iterations [7530/25500], Train Loss: 0.163486, Validation Loss: 0.174564
Iterations [7540/25500], Train Loss: 0.154456, Validation Loss: 0.176944
Iterations [7550/25500], Train Loss: 0.163956, Validation Loss: 0.183636
Iterations [7560/25500], Train Loss: 0.159117, Validation Loss: 0.186988
Iterations [7570/25500], Train Loss: 0.168647, Validation Loss: 0.173417
Iterations [7580/25500], Train Loss: 0.161215, Validation Loss: 0.177096
Iterations [7590/25500], Train Loss: 0.166109, Validation Loss: 0.173256
Iterations [7600/25500], Train Loss: 0.170980, Validation Loss: 0.178426
Iterations [7610/25500], Train Loss: 0.175016, Validation Loss: 0.164151
Iterations [7620/25500], Train Loss: 0.170035, Validation Loss: 0.160966
Iterations [7630/25500], Train Loss: 0.185594, Validation Loss: 0.162042
Iterations [7640/25500], Train Loss: 0.164477, Validation Loss: 0.162379
Iterations [7650/25500], Train Loss: 0.164548, Validation Loss: 0.174786
Iterations [7660/25500], Train Loss: 0.172200, Validation Loss: 0.164104
Iterations [7670/25500], Train Loss: 0.167086, Validation Loss: 0.157892
Iterations [7680/25500], Train Loss: 0.175388, Validation Loss: 0.165817
Iterations [7690/25500], Train Loss: 0.184861, Validation Loss: 0.162453
Iterations [7700/25500], Train Loss: 0.188365, Validation Loss: 0.150048
Iterations [7710/25500], Train Loss: 0.158064, Validation Loss: 0.166884
Iterations [7720/25500], Train Loss: 0.165485, Validation Loss: 0.183060
Iterations [7730/25500], Train Loss: 0.169331, Validation Loss: 0.167449
Iterations [7740/25500], Train Loss: 0.162089, Validation Loss: 0.175251
Iterations [7750/25500], Train Loss: 0.165208, Validation Loss: 0.155050
Iterations [7760/25500], Train Loss: 0.170708, Validation Loss: 0.174166
Iterations [7770/25500], Train Loss: 0.157352, Validation Loss: 0.169321
Iterations [7780/25500], Train Loss: 0.150834, Validation Loss: 0.159697
Iterations [7790/25500], Train Loss: 0.165154, Validation Loss: 0.146544
Iterations [7800/25500], Train Loss: 0.187660, Validation Loss: 0.174894
Iterations [7810/25500], Train Loss: 0.163231, Validation Loss: 0.173533
Iterations [7820/25500], Train Loss: 0.151997, Validation Loss: 0.165065
Iterations [7830/25500], Train Loss: 0.191233, Validation Loss: 0.159669
Iterations [7840/25500], Train Loss: 0.162478, Validation Loss: 0.174619
Iterations [7850/25500], Train Loss: 0.148404, Validation Loss: 0.148357
Iterations [7860/25500], Train Loss: 0.163199, Validation Loss: 0.178457
Iterations [7870/25500], Train Loss: 0.179826, Validation Loss: 0.149832
Iterations [7880/25500], Train Loss: 0.164321, Validation Loss: 0.158149
Iterations [7890/25500], Train Loss: 0.178218, Validation Loss: 0.168254
Iterations [7900/25500], Train Loss: 0.150145, Validation Loss: 0.169681
Iterations [7910/25500], Train Loss: 0.168170, Validation Loss: 0.178872
Iterations [7920/25500], Train Loss: 0.143389, Validation Loss: 0.159524
Iterations [7930/25500], Train Loss: 0.137736, Validation Loss: 0.173437
Iterations [7940/25500], Train Loss: 0.165226, Validation Loss: 0.155018
Iterations [7950/25500], Train Loss: 0.166619, Validation Loss: 0.154845
Iterations [7960/25500], Train Loss: 0.143150, Validation Loss: 0.148013
Iterations [7970/25500], Train Loss: 0.146082, Validation Loss: 0.152059
Iterations [7980/25500], Train Loss: 0.163157, Validation Loss: 0.164571
Iterations [7990/25500], Train Loss: 0.149660, Validation Loss: 0.153117
Iterations [8000/25500], Train Loss: 0.163185, Validation Loss: 0.157500
Iterations [8010/25500], Train Loss: 0.139923, Validation Loss: 0.166043
Iterations [8020/25500], Train Loss: 0.172123, Validation Loss: 0.158978
Iterations [8030/25500], Train Loss: 0.154891, Validation Loss: 0.150811
Iterations [8040/25500], Train Loss: 0.162735, Validation Loss: 0.165795
Iterations [8050/25500], Train Loss: 0.147885, Validation Loss: 0.177943
Iterations [8060/25500], Train Loss: 0.151729, Validation Loss: 0.162057
Iterations [8070/25500], Train Loss: 0.155340, Validation Loss: 0.166021
Iterations [8080/25500], Train Loss: 0.163430, Validation Loss: 0.142820
Iterations [8090/25500], Train Loss: 0.171117, Validation Loss: 0.147346
Iterations [8100/25500], Train Loss: 0.141878, Validation Loss: 0.130708
Iterations [8110/25500], Train Loss: 0.148762, Validation Loss: 0.152359
Iterations [8120/25500], Train Loss: 0.155435, Validation Loss: 0.148987
Iterations [8130/25500], Train Loss: 0.149418, Validation Loss: 0.156475
Iterations [8140/25500], Train Loss: 0.146538, Validation Loss: 0.155026
Iterations [8150/25500], Train Loss: 0.148911, Validation Loss: 0.166473
Iterations [8160/25500], Train Loss: 0.144378, Validation Loss: 0.146313
Iterations [8170/25500], Train Loss: 0.153885, Validation Loss: 0.146461
Iterations [8180/25500], Train Loss: 0.154673, Validation Loss: 0.161815
Iterations [8190/25500], Train Loss: 0.141318, Validation Loss: 0.155171
Iterations [8200/25500], Train Loss: 0.139857, Validation Loss: 0.138254
Iterations [8210/25500], Train Loss: 0.166062, Validation Loss: 0.156268
Iterations [8220/25500], Train Loss: 0.132943, Validation Loss: 0.133283
Iterations [8230/25500], Train Loss: 0.141792, Validation Loss: 0.176060
Iterations [8240/25500], Train Loss: 0.164913, Validation Loss: 0.161126
Iterations [8250/25500], Train Loss: 0.160007, Validation Loss: 0.148706
Iterations [8260/25500], Train Loss: 0.144414, Validation Loss: 0.128881
Iterations [8270/25500], Train Loss: 0.150789, Validation Loss: 0.156233
Iterations [8280/25500], Train Loss: 0.135271, Validation Loss: 0.161328
Iterations [8290/25500], Train Loss: 0.141907, Validation Loss: 0.136950
Iterations [8300/25500], Train Loss: 0.152277, Validation Loss: 0.142274
Iterations [8310/25500], Train Loss: 0.157178, Validation Loss: 0.149016
Iterations [8320/25500], Train Loss: 0.129402, Validation Loss: 0.143278
Iterations [8330/25500], Train Loss: 0.150732, Validation Loss: 0.148799
Iterations [8340/25500], Train Loss: 0.133856, Validation Loss: 0.143495
Iterations [8350/25500], Train Loss: 0.135649, Validation Loss: 0.172345
Iterations [8360/25500], Train Loss: 0.157798, Validation Loss: 0.131443
Iterations [8370/25500], Train Loss: 0.144179, Validation Loss: 0.151290
Iterations [8380/25500], Train Loss: 0.158125, Validation Loss: 0.160561
Iterations [8390/25500], Train Loss: 0.146962, Validation Loss: 0.128219
Iterations [8400/25500], Train Loss: 0.123780, Validation Loss: 0.134604
Iterations [8410/25500], Train Loss: 0.141046, Validation Loss: 0.155509
Iterations [8420/25500], Train Loss: 0.137315, Validation Loss: 0.149552
Iterations [8430/25500], Train Loss: 0.168315, Validation Loss: 0.157307
Iterations [8440/25500], Train Loss: 0.136627, Validation Loss: 0.142865
Iterations [8450/25500], Train Loss: 0.142343, Validation Loss: 0.150920
Iterations [8460/25500], Train Loss: 0.122250, Validation Loss: 0.135338
Iterations [8470/25500], Train Loss: 0.141432, Validation Loss: 0.131865
Iterations [8480/25500], Train Loss: 0.140179, Validation Loss: 0.137297
Iterations [8490/25500], Train Loss: 0.168032, Validation Loss: 0.131169
Iterations [8500/25500], Train Loss: 0.141861, Validation Loss: 0.126710
Iterations [8510/25500], Train Loss: 0.148603, Validation Loss: 0.144421
Iterations [8520/25500], Train Loss: 0.136005, Validation Loss: 0.161009
Iterations [8530/25500], Train Loss: 0.134603, Validation Loss: 0.142041
Iterations [8540/25500], Train Loss: 0.142102, Validation Loss: 0.149209
Iterations [8550/25500], Train Loss: 0.138449, Validation Loss: 0.136186
Iterations [8560/25500], Train Loss: 0.133268, Validation Loss: 0.142399
Iterations [8570/25500], Train Loss: 0.151726, Validation Loss: 0.162676
Iterations [8580/25500], Train Loss: 0.137190, Validation Loss: 0.138300
Iterations [8590/25500], Train Loss: 0.134743, Validation Loss: 0.130398
Iterations [8600/25500], Train Loss: 0.131137, Validation Loss: 0.143209
Iterations [8610/25500], Train Loss: 0.143454, Validation Loss: 0.165852
Iterations [8620/25500], Train Loss: 0.116303, Validation Loss: 0.149883
Iterations [8630/25500], Train Loss: 0.131915, Validation Loss: 0.129127
Iterations [8640/25500], Train Loss: 0.128762, Validation Loss: 0.138764
Iterations [8650/25500], Train Loss: 0.130804, Validation Loss: 0.140533
Iterations [8660/25500], Train Loss: 0.136769, Validation Loss: 0.128257
Iterations [8670/25500], Train Loss: 0.126127, Validation Loss: 0.140244
Iterations [8680/25500], Train Loss: 0.135442, Validation Loss: 0.138801
Iterations [8690/25500], Train Loss: 0.134458, Validation Loss: 0.144722
Iterations [8700/25500], Train Loss: 0.127316, Validation Loss: 0.143250
Iterations [8710/25500], Train Loss: 0.117926, Validation Loss: 0.143284
Iterations [8720/25500], Train Loss: 0.132003, Validation Loss: 0.131107
Iterations [8730/25500], Train Loss: 0.139051, Validation Loss: 0.130040
Iterations [8740/25500], Train Loss: 0.136041, Validation Loss: 0.128237
Iterations [8750/25500], Train Loss: 0.124511, Validation Loss: 0.145291
Iterations [8760/25500], Train Loss: 0.133396, Validation Loss: 0.129806
Iterations [8770/25500], Train Loss: 0.132874, Validation Loss: 0.138004
Iterations [8780/25500], Train Loss: 0.129913, Validation Loss: 0.144527
Iterations [8790/25500], Train Loss: 0.134808, Validation Loss: 0.137302
Iterations [8800/25500], Train Loss: 0.122184, Validation Loss: 0.122056
Iterations [8810/25500], Train Loss: 0.135189, Validation Loss: 0.142739
Iterations [8820/25500], Train Loss: 0.137398, Validation Loss: 0.117976
Iterations [8830/25500], Train Loss: 0.148023, Validation Loss: 0.133635
Iterations [8840/25500], Train Loss: 0.121444, Validation Loss: 0.133282
Iterations [8850/25500], Train Loss: 0.121243, Validation Loss: 0.137771
Iterations [8860/25500], Train Loss: 0.118998, Validation Loss: 0.128068
Iterations [8870/25500], Train Loss: 0.129148, Validation Loss: 0.141819
Iterations [8880/25500], Train Loss: 0.143539, Validation Loss: 0.131963
Iterations [8890/25500], Train Loss: 0.120151, Validation Loss: 0.132971
Iterations [8900/25500], Train Loss: 0.133666, Validation Loss: 0.122672
Iterations [8910/25500], Train Loss: 0.136295, Validation Loss: 0.128074
Iterations [8920/25500], Train Loss: 0.119952, Validation Loss: 0.115122
Iterations [8930/25500], Train Loss: 0.121169, Validation Loss: 0.115721
Iterations [8940/25500], Train Loss: 0.125826, Validation Loss: 0.151276
Iterations [8950/25500], Train Loss: 0.121942, Validation Loss: 0.148120
Iterations [8960/25500], Train Loss: 0.118316, Validation Loss: 0.117618
Iterations [8970/25500], Train Loss: 0.134277, Validation Loss: 0.125371
Iterations [8980/25500], Train Loss: 0.119935, Validation Loss: 0.118530
Iterations [8990/25500], Train Loss: 0.122638, Validation Loss: 0.133761
Iterations [9000/25500], Train Loss: 0.121324, Validation Loss: 0.101784
Iterations [9010/25500], Train Loss: 0.117135, Validation Loss: 0.119560
Iterations [9020/25500], Train Loss: 0.109021, Validation Loss: 0.140783
Iterations [9030/25500], Train Loss: 0.119322, Validation Loss: 0.129899
Iterations [9040/25500], Train Loss: 0.133079, Validation Loss: 0.128583
Iterations [9050/25500], Train Loss: 0.130017, Validation Loss: 0.131424
Iterations [9060/25500], Train Loss: 0.123953, Validation Loss: 0.126271
Iterations [9070/25500], Train Loss: 0.105095, Validation Loss: 0.114394
Iterations [9080/25500], Train Loss: 0.115340, Validation Loss: 0.115891
Iterations [9090/25500], Train Loss: 0.129855, Validation Loss: 0.130036
Iterations [9100/25500], Train Loss: 0.130037, Validation Loss: 0.110078
Iterations [9110/25500], Train Loss: 0.117094, Validation Loss: 0.122085
Iterations [9120/25500], Train Loss: 0.100103, Validation Loss: 0.130267
Iterations [9130/25500], Train Loss: 0.110217, Validation Loss: 0.131054
Iterations [9140/25500], Train Loss: 0.131199, Validation Loss: 0.112401
Iterations [9150/25500], Train Loss: 0.126170, Validation Loss: 0.131535
Iterations [9160/25500], Train Loss: 0.121570, Validation Loss: 0.113626
Iterations [9170/25500], Train Loss: 0.124235, Validation Loss: 0.124395
Iterations [9180/25500], Train Loss: 0.137390, Validation Loss: 0.128976
Iterations [9190/25500], Train Loss: 0.136867, Validation Loss: 0.112547
Iterations [9200/25500], Train Loss: 0.128334, Validation Loss: 0.128078
Iterations [9210/25500], Train Loss: 0.133473, Validation Loss: 0.124833
Iterations [9220/25500], Train Loss: 0.118903, Validation Loss: 0.132375
Iterations [9230/25500], Train Loss: 0.110338, Validation Loss: 0.121746
Iterations [9240/25500], Train Loss: 0.123068, Validation Loss: 0.121152
Iterations [9250/25500], Train Loss: 0.131005, Validation Loss: 0.104937
Iterations [9260/25500], Train Loss: 0.103161, Validation Loss: 0.134032
Iterations [9270/25500], Train Loss: 0.106358, Validation Loss: 0.116215
Iterations [9280/25500], Train Loss: 0.148753, Validation Loss: 0.116601
Iterations [9290/25500], Train Loss: 0.115147, Validation Loss: 0.117403
Iterations [9300/25500], Train Loss: 0.123940, Validation Loss: 0.139174
Iterations [9310/25500], Train Loss: 0.111923, Validation Loss: 0.104513
Iterations [9320/25500], Train Loss: 0.120814, Validation Loss: 0.109695
Iterations [9330/25500], Train Loss: 0.120751, Validation Loss: 0.113647
Iterations [9340/25500], Train Loss: 0.121572, Validation Loss: 0.125581
Iterations [9350/25500], Train Loss: 0.108934, Validation Loss: 0.113250
Iterations [9360/25500], Train Loss: 0.129281, Validation Loss: 0.121642
Iterations [9370/25500], Train Loss: 0.114259, Validation Loss: 0.127275
Iterations [9380/25500], Train Loss: 0.105277, Validation Loss: 0.105137
Iterations [9390/25500], Train Loss: 0.119648, Validation Loss: 0.131388
Iterations [9400/25500], Train Loss: 0.110401, Validation Loss: 0.124010
Iterations [9410/25500], Train Loss: 0.137258, Validation Loss: 0.113036
Iterations [9420/25500], Train Loss: 0.112443, Validation Loss: 0.117765
Iterations [9430/25500], Train Loss: 0.115140, Validation Loss: 0.134221
Iterations [9440/25500], Train Loss: 0.093532, Validation Loss: 0.110776
Iterations [9450/25500], Train Loss: 0.120816, Validation Loss: 0.109200
Iterations [9460/25500], Train Loss: 0.116648, Validation Loss: 0.110343
Iterations [9470/25500], Train Loss: 0.113425, Validation Loss: 0.120214
Iterations [9480/25500], Train Loss: 0.116218, Validation Loss: 0.130506
Iterations [9490/25500], Train Loss: 0.116850, Validation Loss: 0.130736
Iterations [9500/25500], Train Loss: 0.141691, Validation Loss: 0.127967
Iterations [9510/25500], Train Loss: 0.123325, Validation Loss: 0.112280
Iterations [9520/25500], Train Loss: 0.117226, Validation Loss: 0.119329
Iterations [9530/25500], Train Loss: 0.108781, Validation Loss: 0.119954
Iterations [9540/25500], Train Loss: 0.107428, Validation Loss: 0.115159
Iterations [9550/25500], Train Loss: 0.118882, Validation Loss: 0.113931
Iterations [9560/25500], Train Loss: 0.109248, Validation Loss: 0.102932
Iterations [9570/25500], Train Loss: 0.116711, Validation Loss: 0.121900
Iterations [9580/25500], Train Loss: 0.114135, Validation Loss: 0.108570
Iterations [9590/25500], Train Loss: 0.124731, Validation Loss: 0.121689
Iterations [9600/25500], Train Loss: 0.113449, Validation Loss: 0.122611
Iterations [9610/25500], Train Loss: 0.106249, Validation Loss: 0.115730
Iterations [9620/25500], Train Loss: 0.122251, Validation Loss: 0.115766
Iterations [9630/25500], Train Loss: 0.122701, Validation Loss: 0.118928
Iterations [9640/25500], Train Loss: 0.116278, Validation Loss: 0.105755
Iterations [9650/25500], Train Loss: 0.118046, Validation Loss: 0.119345
Iterations [9660/25500], Train Loss: 0.087330, Validation Loss: 0.096360
Iterations [9670/25500], Train Loss: 0.104695, Validation Loss: 0.111098
Iterations [9680/25500], Train Loss: 0.107747, Validation Loss: 0.128837
Iterations [9690/25500], Train Loss: 0.109896, Validation Loss: 0.128730
Iterations [9700/25500], Train Loss: 0.118296, Validation Loss: 0.119257
Iterations [9710/25500], Train Loss: 0.094122, Validation Loss: 0.112293
Iterations [9720/25500], Train Loss: 0.111593, Validation Loss: 0.113691
Iterations [9730/25500], Train Loss: 0.104108, Validation Loss: 0.119296
Iterations [9740/25500], Train Loss: 0.094974, Validation Loss: 0.106499
Iterations [9750/25500], Train Loss: 0.112127, Validation Loss: 0.103516
Iterations [9760/25500], Train Loss: 0.101226, Validation Loss: 0.118914
Iterations [9770/25500], Train Loss: 0.112520, Validation Loss: 0.117342
Iterations [9780/25500], Train Loss: 0.105000, Validation Loss: 0.128709
Iterations [9790/25500], Train Loss: 0.120073, Validation Loss: 0.109371
Iterations [9800/25500], Train Loss: 0.118083, Validation Loss: 0.131489
Iterations [9810/25500], Train Loss: 0.119325, Validation Loss: 0.093402
Iterations [9820/25500], Train Loss: 0.108189, Validation Loss: 0.103540
Iterations [9830/25500], Train Loss: 0.105650, Validation Loss: 0.117533
Iterations [9840/25500], Train Loss: 0.104543, Validation Loss: 0.118331
Iterations [9850/25500], Train Loss: 0.093525, Validation Loss: 0.107171
Iterations [9860/25500], Train Loss: 0.118589, Validation Loss: 0.118375
Iterations [9870/25500], Train Loss: 0.081328, Validation Loss: 0.106437
Iterations [9880/25500], Train Loss: 0.119466, Validation Loss: 0.099219
Iterations [9890/25500], Train Loss: 0.111800, Validation Loss: 0.116966
Iterations [9900/25500], Train Loss: 0.091397, Validation Loss: 0.092489
Iterations [9910/25500], Train Loss: 0.132450, Validation Loss: 0.115342
Iterations [9920/25500], Train Loss: 0.105513, Validation Loss: 0.109685
Iterations [9930/25500], Train Loss: 0.100854, Validation Loss: 0.116110
Iterations [9940/25500], Train Loss: 0.097404, Validation Loss: 0.108064
Iterations [9950/25500], Train Loss: 0.105159, Validation Loss: 0.101693
Iterations [9960/25500], Train Loss: 0.092205, Validation Loss: 0.106124
Iterations [9970/25500], Train Loss: 0.110091, Validation Loss: 0.115080
Iterations [9980/25500], Train Loss: 0.103189, Validation Loss: 0.094038
Iterations [9990/25500], Train Loss: 0.099326, Validation Loss: 0.116732
Iterations [10000/25500], Train Loss: 0.099914, Validation Loss: 0.116496
Iterations [10010/25500], Train Loss: 0.109793, Validation Loss: 0.110295
Iterations [10020/25500], Train Loss: 0.094174, Validation Loss: 0.103658
Iterations [10030/25500], Train Loss: 0.113504, Validation Loss: 0.099866
Iterations [10040/25500], Train Loss: 0.087432, Validation Loss: 0.098301
Iterations [10050/25500], Train Loss: 0.100187, Validation Loss: 0.116514
Iterations [10060/25500], Train Loss: 0.096749, Validation Loss: 0.119644
Iterations [10070/25500], Train Loss: 0.091339, Validation Loss: 0.115534
Iterations [10080/25500], Train Loss: 0.112086, Validation Loss: 0.102057
Iterations [10090/25500], Train Loss: 0.106684, Validation Loss: 0.095356
Iterations [10100/25500], Train Loss: 0.110633, Validation Loss: 0.100913
Iterations [10110/25500], Train Loss: 0.116250, Validation Loss: 0.117060
Iterations [10120/25500], Train Loss: 0.086081, Validation Loss: 0.099008
Iterations [10130/25500], Train Loss: 0.101752, Validation Loss: 0.099331
Iterations [10140/25500], Train Loss: 0.091538, Validation Loss: 0.101379
Iterations [10150/25500], Train Loss: 0.109600, Validation Loss: 0.097291
Iterations [10160/25500], Train Loss: 0.102786, Validation Loss: 0.110376
Iterations [10170/25500], Train Loss: 0.090827, Validation Loss: 0.124372
Iterations [10180/25500], Train Loss: 0.106724, Validation Loss: 0.113225
Iterations [10190/25500], Train Loss: 0.104589, Validation Loss: 0.106027
Iterations [10200/25500], Train Loss: 0.092427, Validation Loss: 0.102696
Iterations [10210/25500], Train Loss: 0.105634, Validation Loss: 0.108241
Iterations [10220/25500], Train Loss: 0.108221, Validation Loss: 0.112126
Iterations [10230/25500], Train Loss: 0.094028, Validation Loss: 0.102568
Iterations [10240/25500], Train Loss: 0.110645, Validation Loss: 0.102844
Iterations [10250/25500], Train Loss: 0.113320, Validation Loss: 0.115472
Iterations [10260/25500], Train Loss: 0.103540, Validation Loss: 0.105358
Iterations [10270/25500], Train Loss: 0.100171, Validation Loss: 0.098324
Iterations [10280/25500], Train Loss: 0.095783, Validation Loss: 0.106128
Iterations [10290/25500], Train Loss: 0.098594, Validation Loss: 0.106903
Iterations [10300/25500], Train Loss: 0.112443, Validation Loss: 0.113099
Iterations [10310/25500], Train Loss: 0.092877, Validation Loss: 0.101623
Iterations [10320/25500], Train Loss: 0.096973, Validation Loss: 0.089815
Iterations [10330/25500], Train Loss: 0.083759, Validation Loss: 0.100168
Iterations [10340/25500], Train Loss: 0.125270, Validation Loss: 0.108857
Iterations [10350/25500], Train Loss: 0.109175, Validation Loss: 0.100827
Iterations [10360/25500], Train Loss: 0.099022, Validation Loss: 0.101441
Iterations [10370/25500], Train Loss: 0.085741, Validation Loss: 0.101087
Iterations [10380/25500], Train Loss: 0.100459, Validation Loss: 0.102102
Iterations [10390/25500], Train Loss: 0.093353, Validation Loss: 0.104856
Iterations [10400/25500], Train Loss: 0.107075, Validation Loss: 0.089575
Iterations [10410/25500], Train Loss: 0.080112, Validation Loss: 0.100485
Iterations [10420/25500], Train Loss: 0.089868, Validation Loss: 0.095765
Iterations [10430/25500], Train Loss: 0.092726, Validation Loss: 0.107109
Iterations [10440/25500], Train Loss: 0.079052, Validation Loss: 0.094948
Iterations [10450/25500], Train Loss: 0.090477, Validation Loss: 0.104383
Iterations [10460/25500], Train Loss: 0.107416, Validation Loss: 0.101893
Iterations [10470/25500], Train Loss: 0.096835, Validation Loss: 0.102874
Iterations [10480/25500], Train Loss: 0.112801, Validation Loss: 0.092881
Iterations [10490/25500], Train Loss: 0.082416, Validation Loss: 0.088624
Iterations [10500/25500], Train Loss: 0.091808, Validation Loss: 0.090607
Iterations [10510/25500], Train Loss: 0.078581, Validation Loss: 0.094556
Iterations [10520/25500], Train Loss: 0.089348, Validation Loss: 0.092498
Iterations [10530/25500], Train Loss: 0.087933, Validation Loss: 0.101285
Iterations [10540/25500], Train Loss: 0.102451, Validation Loss: 0.109294
Iterations [10550/25500], Train Loss: 0.106180, Validation Loss: 0.105149
Iterations [10560/25500], Train Loss: 0.094810, Validation Loss: 0.101765
Iterations [10570/25500], Train Loss: 0.094997, Validation Loss: 0.096137
Iterations [10580/25500], Train Loss: 0.095018, Validation Loss: 0.085201
Iterations [10590/25500], Train Loss: 0.099225, Validation Loss: 0.085249
Iterations [10600/25500], Train Loss: 0.083334, Validation Loss: 0.103676
Iterations [10610/25500], Train Loss: 0.084944, Validation Loss: 0.085280
Iterations [10620/25500], Train Loss: 0.097274, Validation Loss: 0.086865
Iterations [10630/25500], Train Loss: 0.082707, Validation Loss: 0.102182
Iterations [10640/25500], Train Loss: 0.098113, Validation Loss: 0.095609
Iterations [10650/25500], Train Loss: 0.097831, Validation Loss: 0.103083
Iterations [10660/25500], Train Loss: 0.100474, Validation Loss: 0.098361
Iterations [10670/25500], Train Loss: 0.086056, Validation Loss: 0.093275
Iterations [10680/25500], Train Loss: 0.093193, Validation Loss: 0.093015
Iterations [10690/25500], Train Loss: 0.087528, Validation Loss: 0.086731
Iterations [10700/25500], Train Loss: 0.090292, Validation Loss: 0.084724
Iterations [10710/25500], Train Loss: 0.079185, Validation Loss: 0.093907
Iterations [10720/25500], Train Loss: 0.082602, Validation Loss: 0.099695
Iterations [10730/25500], Train Loss: 0.084869, Validation Loss: 0.100145
Iterations [10740/25500], Train Loss: 0.081192, Validation Loss: 0.084065
Iterations [10750/25500], Train Loss: 0.075806, Validation Loss: 0.098916
Iterations [10760/25500], Train Loss: 0.082603, Validation Loss: 0.099567
Iterations [10770/25500], Train Loss: 0.087776, Validation Loss: 0.086351
Iterations [10780/25500], Train Loss: 0.087885, Validation Loss: 0.081949
Iterations [10790/25500], Train Loss: 0.102706, Validation Loss: 0.101213
Iterations [10800/25500], Train Loss: 0.072483, Validation Loss: 0.109073
Iterations [10810/25500], Train Loss: 0.067611, Validation Loss: 0.090114
Iterations [10820/25500], Train Loss: 0.088691, Validation Loss: 0.105531
Iterations [10830/25500], Train Loss: 0.109936, Validation Loss: 0.098981
Iterations [10840/25500], Train Loss: 0.098922, Validation Loss: 0.107776
Iterations [10850/25500], Train Loss: 0.106713, Validation Loss: 0.096508
Iterations [10860/25500], Train Loss: 0.086830, Validation Loss: 0.087534
Iterations [10870/25500], Train Loss: 0.085085, Validation Loss: 0.091517
Iterations [10880/25500], Train Loss: 0.102555, Validation Loss: 0.089167
Iterations [10890/25500], Train Loss: 0.084668, Validation Loss: 0.075822
Iterations [10900/25500], Train Loss: 0.097349, Validation Loss: 0.113495
Iterations [10910/25500], Train Loss: 0.089442, Validation Loss: 0.092143
Iterations [10920/25500], Train Loss: 0.088903, Validation Loss: 0.099164
Iterations [10930/25500], Train Loss: 0.089001, Validation Loss: 0.086750
Iterations [10940/25500], Train Loss: 0.097508, Validation Loss: 0.101248
Iterations [10950/25500], Train Loss: 0.088730, Validation Loss: 0.101580
Iterations [10960/25500], Train Loss: 0.074020, Validation Loss: 0.086330
Iterations [10970/25500], Train Loss: 0.084837, Validation Loss: 0.080845
Iterations [10980/25500], Train Loss: 0.077982, Validation Loss: 0.085633
Iterations [10990/25500], Train Loss: 0.080700, Validation Loss: 0.085277
Iterations [11000/25500], Train Loss: 0.080734, Validation Loss: 0.081654
Iterations [11010/25500], Train Loss: 0.081402, Validation Loss: 0.083145
Iterations [11020/25500], Train Loss: 0.077757, Validation Loss: 0.080853
Iterations [11030/25500], Train Loss: 0.071498, Validation Loss: 0.093664
Iterations [11040/25500], Train Loss: 0.079919, Validation Loss: 0.075997
Iterations [11050/25500], Train Loss: 0.082672, Validation Loss: 0.086352
Iterations [11060/25500], Train Loss: 0.093296, Validation Loss: 0.088469
Iterations [11070/25500], Train Loss: 0.087903, Validation Loss: 0.078739
Iterations [11080/25500], Train Loss: 0.095610, Validation Loss: 0.096130
Iterations [11090/25500], Train Loss: 0.095463, Validation Loss: 0.081966
Iterations [11100/25500], Train Loss: 0.086860, Validation Loss: 0.096827
Iterations [11110/25500], Train Loss: 0.078733, Validation Loss: 0.064469
Iterations [11120/25500], Train Loss: 0.089234, Validation Loss: 0.086811
Iterations [11130/25500], Train Loss: 0.075458, Validation Loss: 0.082914
Iterations [11140/25500], Train Loss: 0.082136, Validation Loss: 0.075951
Iterations [11150/25500], Train Loss: 0.081286, Validation Loss: 0.079937
Iterations [11160/25500], Train Loss: 0.076688, Validation Loss: 0.085901
Iterations [11170/25500], Train Loss: 0.083047, Validation Loss: 0.092288
Iterations [11180/25500], Train Loss: 0.096123, Validation Loss: 0.085284
Iterations [11190/25500], Train Loss: 0.077146, Validation Loss: 0.088118
Iterations [11200/25500], Train Loss: 0.069186, Validation Loss: 0.080905
Iterations [11210/25500], Train Loss: 0.081870, Validation Loss: 0.084399
Iterations [11220/25500], Train Loss: 0.084448, Validation Loss: 0.079684
Iterations [11230/25500], Train Loss: 0.089367, Validation Loss: 0.092362
Iterations [11240/25500], Train Loss: 0.077155, Validation Loss: 0.082720
Iterations [11250/25500], Train Loss: 0.080979, Validation Loss: 0.076393
Iterations [11260/25500], Train Loss: 0.085458, Validation Loss: 0.099255
Iterations [11270/25500], Train Loss: 0.076535, Validation Loss: 0.091101
Iterations [11280/25500], Train Loss: 0.098055, Validation Loss: 0.090898
Iterations [11290/25500], Train Loss: 0.090279, Validation Loss: 0.076405
Iterations [11300/25500], Train Loss: 0.067492, Validation Loss: 0.099690
Iterations [11310/25500], Train Loss: 0.079336, Validation Loss: 0.072902
Iterations [11320/25500], Train Loss: 0.076669, Validation Loss: 0.081065
Iterations [11330/25500], Train Loss: 0.081270, Validation Loss: 0.085773
Iterations [11340/25500], Train Loss: 0.090404, Validation Loss: 0.080552
Iterations [11350/25500], Train Loss: 0.071858, Validation Loss: 0.082566
Iterations [11360/25500], Train Loss: 0.079087, Validation Loss: 0.079911
Iterations [11370/25500], Train Loss: 0.072391, Validation Loss: 0.094365
Iterations [11380/25500], Train Loss: 0.068231, Validation Loss: 0.093925
Iterations [11390/25500], Train Loss: 0.084788, Validation Loss: 0.072855
Iterations [11400/25500], Train Loss: 0.070667, Validation Loss: 0.073099
Iterations [11410/25500], Train Loss: 0.078706, Validation Loss: 0.077651
Iterations [11420/25500], Train Loss: 0.073078, Validation Loss: 0.093130
Iterations [11430/25500], Train Loss: 0.085573, Validation Loss: 0.086789
Iterations [11440/25500], Train Loss: 0.080914, Validation Loss: 0.081432
Iterations [11450/25500], Train Loss: 0.079633, Validation Loss: 0.078158
Iterations [11460/25500], Train Loss: 0.078479, Validation Loss: 0.106290
Iterations [11470/25500], Train Loss: 0.071270, Validation Loss: 0.078797
Iterations [11480/25500], Train Loss: 0.073122, Validation Loss: 0.087973
Iterations [11490/25500], Train Loss: 0.067243, Validation Loss: 0.088594
Iterations [11500/25500], Train Loss: 0.084445, Validation Loss: 0.095451
Iterations [11510/25500], Train Loss: 0.075420, Validation Loss: 0.095334
Iterations [11520/25500], Train Loss: 0.084187, Validation Loss: 0.078460
Iterations [11530/25500], Train Loss: 0.071143, Validation Loss: 0.086585
Iterations [11540/25500], Train Loss: 0.083853, Validation Loss: 0.091814
Iterations [11550/25500], Train Loss: 0.083593, Validation Loss: 0.083866
Iterations [11560/25500], Train Loss: 0.076317, Validation Loss: 0.102145
Iterations [11570/25500], Train Loss: 0.079223, Validation Loss: 0.092874
Iterations [11580/25500], Train Loss: 0.075653, Validation Loss: 0.083747
Iterations [11590/25500], Train Loss: 0.075781, Validation Loss: 0.079442
Iterations [11600/25500], Train Loss: 0.081871, Validation Loss: 0.092653
Iterations [11610/25500], Train Loss: 0.087375, Validation Loss: 0.071682
Iterations [11620/25500], Train Loss: 0.087745, Validation Loss: 0.087748
Iterations [11630/25500], Train Loss: 0.068358, Validation Loss: 0.090872
Iterations [11640/25500], Train Loss: 0.079800, Validation Loss: 0.074350
Iterations [11650/25500], Train Loss: 0.078391, Validation Loss: 0.082655
Iterations [11660/25500], Train Loss: 0.070904, Validation Loss: 0.080924
Iterations [11670/25500], Train Loss: 0.091448, Validation Loss: 0.075442
Iterations [11680/25500], Train Loss: 0.088110, Validation Loss: 0.079754
Iterations [11690/25500], Train Loss: 0.070566, Validation Loss: 0.073726
Iterations [11700/25500], Train Loss: 0.074683, Validation Loss: 0.076635
Iterations [11710/25500], Train Loss: 0.068682, Validation Loss: 0.066987
Iterations [11720/25500], Train Loss: 0.087658, Validation Loss: 0.074633
Iterations [11730/25500], Train Loss: 0.070090, Validation Loss: 0.069305
Iterations [11740/25500], Train Loss: 0.080233, Validation Loss: 0.067270
Iterations [11750/25500], Train Loss: 0.081664, Validation Loss: 0.077962
Iterations [11760/25500], Train Loss: 0.064683, Validation Loss: 0.079462
Iterations [11770/25500], Train Loss: 0.072091, Validation Loss: 0.081524
Iterations [11780/25500], Train Loss: 0.065010, Validation Loss: 0.088303
Iterations [11790/25500], Train Loss: 0.080726, Validation Loss: 0.077215
Iterations [11800/25500], Train Loss: 0.097057, Validation Loss: 0.080764
Iterations [11810/25500], Train Loss: 0.096317, Validation Loss: 0.076564
Iterations [11820/25500], Train Loss: 0.081438, Validation Loss: 0.073385
Iterations [11830/25500], Train Loss: 0.071125, Validation Loss: 0.066208
Iterations [11840/25500], Train Loss: 0.070634, Validation Loss: 0.089490
Iterations [11850/25500], Train Loss: 0.069110, Validation Loss: 0.061588
Iterations [11860/25500], Train Loss: 0.081693, Validation Loss: 0.073225
Iterations [11870/25500], Train Loss: 0.072215, Validation Loss: 0.075114
Iterations [11880/25500], Train Loss: 0.058636, Validation Loss: 0.085672
Iterations [11890/25500], Train Loss: 0.081927, Validation Loss: 0.082586
Iterations [11900/25500], Train Loss: 0.072925, Validation Loss: 0.086195
Iterations [11910/25500], Train Loss: 0.065641, Validation Loss: 0.077072
Iterations [11920/25500], Train Loss: 0.067969, Validation Loss: 0.082315
Iterations [11930/25500], Train Loss: 0.061152, Validation Loss: 0.079242
Iterations [11940/25500], Train Loss: 0.072555, Validation Loss: 0.073068
Iterations [11950/25500], Train Loss: 0.076282, Validation Loss: 0.079463
Iterations [11960/25500], Train Loss: 0.070374, Validation Loss: 0.085523
Iterations [11970/25500], Train Loss: 0.076851, Validation Loss: 0.067056
Iterations [11980/25500], Train Loss: 0.065114, Validation Loss: 0.081794
Iterations [11990/25500], Train Loss: 0.074095, Validation Loss: 0.088198
Iterations [12000/25500], Train Loss: 0.073225, Validation Loss: 0.069304
Iterations [12010/25500], Train Loss: 0.066878, Validation Loss: 0.067028
Iterations [12020/25500], Train Loss: 0.055014, Validation Loss: 0.070945
Iterations [12030/25500], Train Loss: 0.061485, Validation Loss: 0.081534
Iterations [12040/25500], Train Loss: 0.069753, Validation Loss: 0.082602
Iterations [12050/25500], Train Loss: 0.066809, Validation Loss: 0.083216
Iterations [12060/25500], Train Loss: 0.069265, Validation Loss: 0.085342
Iterations [12070/25500], Train Loss: 0.068037, Validation Loss: 0.078590
Iterations [12080/25500], Train Loss: 0.074191, Validation Loss: 0.066956
Iterations [12090/25500], Train Loss: 0.081468, Validation Loss: 0.062831
Iterations [12100/25500], Train Loss: 0.065355, Validation Loss: 0.067429
Iterations [12110/25500], Train Loss: 0.052423, Validation Loss: 0.080041
Iterations [12120/25500], Train Loss: 0.066749, Validation Loss: 0.081910
Iterations [12130/25500], Train Loss: 0.072632, Validation Loss: 0.080018
Iterations [12140/25500], Train Loss: 0.076791, Validation Loss: 0.071270
Iterations [12150/25500], Train Loss: 0.062734, Validation Loss: 0.077756
Iterations [12160/25500], Train Loss: 0.081257, Validation Loss: 0.069102
Iterations [12170/25500], Train Loss: 0.075126, Validation Loss: 0.086711
Iterations [12180/25500], Train Loss: 0.074760, Validation Loss: 0.068031
Iterations [12190/25500], Train Loss: 0.070506, Validation Loss: 0.074607
Iterations [12200/25500], Train Loss: 0.066962, Validation Loss: 0.095943
Iterations [12210/25500], Train Loss: 0.071648, Validation Loss: 0.065173
Iterations [12220/25500], Train Loss: 0.066583, Validation Loss: 0.086608
Iterations [12230/25500], Train Loss: 0.066993, Validation Loss: 0.074006
Iterations [12240/25500], Train Loss: 0.068120, Validation Loss: 0.066993
Iterations [12250/25500], Train Loss: 0.067279, Validation Loss: 0.076347
Iterations [12260/25500], Train Loss: 0.069425, Validation Loss: 0.083724
Iterations [12270/25500], Train Loss: 0.077529, Validation Loss: 0.063096
Iterations [12280/25500], Train Loss: 0.068392, Validation Loss: 0.080016
Iterations [12290/25500], Train Loss: 0.072197, Validation Loss: 0.074499
Iterations [12300/25500], Train Loss: 0.075430, Validation Loss: 0.075711
Iterations [12310/25500], Train Loss: 0.089513, Validation Loss: 0.075697
Iterations [12320/25500], Train Loss: 0.075776, Validation Loss: 0.073222
Iterations [12330/25500], Train Loss: 0.074418, Validation Loss: 0.073810
Iterations [12340/25500], Train Loss: 0.073240, Validation Loss: 0.074465
Iterations [12350/25500], Train Loss: 0.084120, Validation Loss: 0.065283
Iterations [12360/25500], Train Loss: 0.067234, Validation Loss: 0.084120
Iterations [12370/25500], Train Loss: 0.071999, Validation Loss: 0.069001
Iterations [12380/25500], Train Loss: 0.066730, Validation Loss: 0.076080
Iterations [12390/25500], Train Loss: 0.067460, Validation Loss: 0.073201
Iterations [12400/25500], Train Loss: 0.070914, Validation Loss: 0.071812
Iterations [12410/25500], Train Loss: 0.073450, Validation Loss: 0.076001
Iterations [12420/25500], Train Loss: 0.064040, Validation Loss: 0.067216
Iterations [12430/25500], Train Loss: 0.064873, Validation Loss: 0.070722
Iterations [12440/25500], Train Loss: 0.062908, Validation Loss: 0.066467
Iterations [12450/25500], Train Loss: 0.061102, Validation Loss: 0.075822
Iterations [12460/25500], Train Loss: 0.070809, Validation Loss: 0.072548
Iterations [12470/25500], Train Loss: 0.074010, Validation Loss: 0.065930
Iterations [12480/25500], Train Loss: 0.071364, Validation Loss: 0.086493
Iterations [12490/25500], Train Loss: 0.077520, Validation Loss: 0.081940
Iterations [12500/25500], Train Loss: 0.066565, Validation Loss: 0.071167
Iterations [12510/25500], Train Loss: 0.067398, Validation Loss: 0.088706
Iterations [12520/25500], Train Loss: 0.051372, Validation Loss: 0.055155
Iterations [12530/25500], Train Loss: 0.055436, Validation Loss: 0.063203
Iterations [12540/25500], Train Loss: 0.052663, Validation Loss: 0.066459
Iterations [12550/25500], Train Loss: 0.063228, Validation Loss: 0.066175
Iterations [12560/25500], Train Loss: 0.065344, Validation Loss: 0.065586
Iterations [12570/25500], Train Loss: 0.054824, Validation Loss: 0.068281
Iterations [12580/25500], Train Loss: 0.066511, Validation Loss: 0.045619
Iterations [12590/25500], Train Loss: 0.054251, Validation Loss: 0.063661
Iterations [12600/25500], Train Loss: 0.054017, Validation Loss: 0.061677
Iterations [12610/25500], Train Loss: 0.066513, Validation Loss: 0.070210
Iterations [12620/25500], Train Loss: 0.059941, Validation Loss: 0.064453
Iterations [12630/25500], Train Loss: 0.066457, Validation Loss: 0.072428
Iterations [12640/25500], Train Loss: 0.047216, Validation Loss: 0.069675
Iterations [12650/25500], Train Loss: 0.066505, Validation Loss: 0.068316
Iterations [12660/25500], Train Loss: 0.077397, Validation Loss: 0.058723
Iterations [12670/25500], Train Loss: 0.060810, Validation Loss: 0.060966
Iterations [12680/25500], Train Loss: 0.081895, Validation Loss: 0.073409
Iterations [12690/25500], Train Loss: 0.064330, Validation Loss: 0.048929
Iterations [12700/25500], Train Loss: 0.064726, Validation Loss: 0.067083
Iterations [12710/25500], Train Loss: 0.068921, Validation Loss: 0.051457
Iterations [12720/25500], Train Loss: 0.070205, Validation Loss: 0.052851
Iterations [12730/25500], Train Loss: 0.053117, Validation Loss: 0.058614
Iterations [12740/25500], Train Loss: 0.069375, Validation Loss: 0.071140
Iterations [12750/25500], Train Loss: 0.066541, Validation Loss: 0.076196
Iterations [12760/25500], Train Loss: 0.068440, Validation Loss: 0.063522
Iterations [12770/25500], Train Loss: 0.077415, Validation Loss: 0.075963
Iterations [12780/25500], Train Loss: 0.055777, Validation Loss: 0.063256
Iterations [12790/25500], Train Loss: 0.067423, Validation Loss: 0.064212
Iterations [12800/25500], Train Loss: 0.062901, Validation Loss: 0.058805
Iterations [12810/25500], Train Loss: 0.062180, Validation Loss: 0.059449
Iterations [12820/25500], Train Loss: 0.054943, Validation Loss: 0.059435
Iterations [12830/25500], Train Loss: 0.051981, Validation Loss: 0.055100
Iterations [12840/25500], Train Loss: 0.064249, Validation Loss: 0.071735
Iterations [12850/25500], Train Loss: 0.053973, Validation Loss: 0.072872
Iterations [12860/25500], Train Loss: 0.069716, Validation Loss: 0.070458
Iterations [12870/25500], Train Loss: 0.064442, Validation Loss: 0.073206
Iterations [12880/25500], Train Loss: 0.066230, Validation Loss: 0.063942
Iterations [12890/25500], Train Loss: 0.052120, Validation Loss: 0.065882
Iterations [12900/25500], Train Loss: 0.073172, Validation Loss: 0.061577
Iterations [12910/25500], Train Loss: 0.085886, Validation Loss: 0.058759
Iterations [12920/25500], Train Loss: 0.067946, Validation Loss: 0.065787
Iterations [12930/25500], Train Loss: 0.065071, Validation Loss: 0.063547
Iterations [12940/25500], Train Loss: 0.072564, Validation Loss: 0.078156
Iterations [12950/25500], Train Loss: 0.054671, Validation Loss: 0.056900
Iterations [12960/25500], Train Loss: 0.071561, Validation Loss: 0.073004
Iterations [12970/25500], Train Loss: 0.055665, Validation Loss: 0.062293
Iterations [12980/25500], Train Loss: 0.053839, Validation Loss: 0.064080
Iterations [12990/25500], Train Loss: 0.054235, Validation Loss: 0.073507
Iterations [13000/25500], Train Loss: 0.077243, Validation Loss: 0.065805
Iterations [13010/25500], Train Loss: 0.053074, Validation Loss: 0.066132
Iterations [13020/25500], Train Loss: 0.055559, Validation Loss: 0.065030
Iterations [13030/25500], Train Loss: 0.058904, Validation Loss: 0.061188
Iterations [13040/25500], Train Loss: 0.067826, Validation Loss: 0.075256
Iterations [13050/25500], Train Loss: 0.056992, Validation Loss: 0.058271
Iterations [13060/25500], Train Loss: 0.055343, Validation Loss: 0.062424
Iterations [13070/25500], Train Loss: 0.064482, Validation Loss: 0.062945
Iterations [13080/25500], Train Loss: 0.052586, Validation Loss: 0.053399
Iterations [13090/25500], Train Loss: 0.057905, Validation Loss: 0.067323
Iterations [13100/25500], Train Loss: 0.060990, Validation Loss: 0.064386
Iterations [13110/25500], Train Loss: 0.054808, Validation Loss: 0.042920
Iterations [13120/25500], Train Loss: 0.057275, Validation Loss: 0.069221
Iterations [13130/25500], Train Loss: 0.048449, Validation Loss: 0.063928
Iterations [13140/25500], Train Loss: 0.055977, Validation Loss: 0.079529
Iterations [13150/25500], Train Loss: 0.058023, Validation Loss: 0.062328
Iterations [13160/25500], Train Loss: 0.057980, Validation Loss: 0.061915
Iterations [13170/25500], Train Loss: 0.056752, Validation Loss: 0.068452
Iterations [13180/25500], Train Loss: 0.066209, Validation Loss: 0.059582
Iterations [13190/25500], Train Loss: 0.055284, Validation Loss: 0.066643
Iterations [13200/25500], Train Loss: 0.055120, Validation Loss: 0.059704
Iterations [13210/25500], Train Loss: 0.056384, Validation Loss: 0.064697
Iterations [13220/25500], Train Loss: 0.056921, Validation Loss: 0.054930
Iterations [13230/25500], Train Loss: 0.059123, Validation Loss: 0.046958
Iterations [13240/25500], Train Loss: 0.056751, Validation Loss: 0.055710
Iterations [13250/25500], Train Loss: 0.066609, Validation Loss: 0.068143
Iterations [13260/25500], Train Loss: 0.065909, Validation Loss: 0.052648
Iterations [13270/25500], Train Loss: 0.046350, Validation Loss: 0.065672
Iterations [13280/25500], Train Loss: 0.062780, Validation Loss: 0.052601
Iterations [13290/25500], Train Loss: 0.075062, Validation Loss: 0.067355
Iterations [13300/25500], Train Loss: 0.052152, Validation Loss: 0.051963
Iterations [13310/25500], Train Loss: 0.057502, Validation Loss: 0.060959
Iterations [13320/25500], Train Loss: 0.050940, Validation Loss: 0.061803
Iterations [13330/25500], Train Loss: 0.066901, Validation Loss: 0.057583
Iterations [13340/25500], Train Loss: 0.040939, Validation Loss: 0.066325
Iterations [13350/25500], Train Loss: 0.076425, Validation Loss: 0.047885
Iterations [13360/25500], Train Loss: 0.055532, Validation Loss: 0.065456
Iterations [13370/25500], Train Loss: 0.051720, Validation Loss: 0.059081
Iterations [13380/25500], Train Loss: 0.060089, Validation Loss: 0.055375
Iterations [13390/25500], Train Loss: 0.054576, Validation Loss: 0.055242
Iterations [13400/25500], Train Loss: 0.056991, Validation Loss: 0.069406
Iterations [13410/25500], Train Loss: 0.062430, Validation Loss: 0.063357
Iterations [13420/25500], Train Loss: 0.059225, Validation Loss: 0.062351
Iterations [13430/25500], Train Loss: 0.056230, Validation Loss: 0.056065
Iterations [13440/25500], Train Loss: 0.051135, Validation Loss: 0.049177
Iterations [13450/25500], Train Loss: 0.049117, Validation Loss: 0.073052
Iterations [13460/25500], Train Loss: 0.053102, Validation Loss: 0.061759
Iterations [13470/25500], Train Loss: 0.053193, Validation Loss: 0.058381
Iterations [13480/25500], Train Loss: 0.057005, Validation Loss: 0.066336
Iterations [13490/25500], Train Loss: 0.047640, Validation Loss: 0.062441
Iterations [13500/25500], Train Loss: 0.064950, Validation Loss: 0.056799
Iterations [13510/25500], Train Loss: 0.056623, Validation Loss: 0.064992
Iterations [13520/25500], Train Loss: 0.040663, Validation Loss: 0.070000
Iterations [13530/25500], Train Loss: 0.072784, Validation Loss: 0.061871
Iterations [13540/25500], Train Loss: 0.053855, Validation Loss: 0.069316
Iterations [13550/25500], Train Loss: 0.046904, Validation Loss: 0.057345
Iterations [13560/25500], Train Loss: 0.052792, Validation Loss: 0.065876
Iterations [13570/25500], Train Loss: 0.063626, Validation Loss: 0.056765
Iterations [13580/25500], Train Loss: 0.048294, Validation Loss: 0.058748
Iterations [13590/25500], Train Loss: 0.055336, Validation Loss: 0.055940
Iterations [13600/25500], Train Loss: 0.049139, Validation Loss: 0.055508
Iterations [13610/25500], Train Loss: 0.049095, Validation Loss: 0.054358
Iterations [13620/25500], Train Loss: 0.045779, Validation Loss: 0.059560
Iterations [13630/25500], Train Loss: 0.052787, Validation Loss: 0.070744
Iterations [13640/25500], Train Loss: 0.073120, Validation Loss: 0.052877
Iterations [13650/25500], Train Loss: 0.052339, Validation Loss: 0.068479
Iterations [13660/25500], Train Loss: 0.044921, Validation Loss: 0.066030
Iterations [13670/25500], Train Loss: 0.062757, Validation Loss: 0.066859
Iterations [13680/25500], Train Loss: 0.058578, Validation Loss: 0.059563
Iterations [13690/25500], Train Loss: 0.050020, Validation Loss: 0.054042
Iterations [13700/25500], Train Loss: 0.055873, Validation Loss: 0.050302
Iterations [13710/25500], Train Loss: 0.049596, Validation Loss: 0.051797
Iterations [13720/25500], Train Loss: 0.071226, Validation Loss: 0.065263
Iterations [13730/25500], Train Loss: 0.050765, Validation Loss: 0.057226
Iterations [13740/25500], Train Loss: 0.052425, Validation Loss: 0.064216
Iterations [13750/25500], Train Loss: 0.051544, Validation Loss: 0.042287
Iterations [13760/25500], Train Loss: 0.048537, Validation Loss: 0.069352
Iterations [13770/25500], Train Loss: 0.047175, Validation Loss: 0.054394
Iterations [13780/25500], Train Loss: 0.059805, Validation Loss: 0.057544
Iterations [13790/25500], Train Loss: 0.054071, Validation Loss: 0.063337
Iterations [13800/25500], Train Loss: 0.053917, Validation Loss: 0.067382
Iterations [13810/25500], Train Loss: 0.054863, Validation Loss: 0.060307
Iterations [13820/25500], Train Loss: 0.056835, Validation Loss: 0.052738
Iterations [13830/25500], Train Loss: 0.037768, Validation Loss: 0.050118
Iterations [13840/25500], Train Loss: 0.041920, Validation Loss: 0.063645
Iterations [13850/25500], Train Loss: 0.056701, Validation Loss: 0.073655
Iterations [13860/25500], Train Loss: 0.052958, Validation Loss: 0.056569
Iterations [13870/25500], Train Loss: 0.050395, Validation Loss: 0.051164
Iterations [13880/25500], Train Loss: 0.047416, Validation Loss: 0.048017
Iterations [13890/25500], Train Loss: 0.049573, Validation Loss: 0.053843
Iterations [13900/25500], Train Loss: 0.052837, Validation Loss: 0.052489
Iterations [13910/25500], Train Loss: 0.057165, Validation Loss: 0.062569
Iterations [13920/25500], Train Loss: 0.048319, Validation Loss: 0.051256
Iterations [13930/25500], Train Loss: 0.052571, Validation Loss: 0.053232
Iterations [13940/25500], Train Loss: 0.060336, Validation Loss: 0.046832
Iterations [13950/25500], Train Loss: 0.054418, Validation Loss: 0.055321
Iterations [13960/25500], Train Loss: 0.058591, Validation Loss: 0.064322
Iterations [13970/25500], Train Loss: 0.059541, Validation Loss: 0.057646
Iterations [13980/25500], Train Loss: 0.053244, Validation Loss: 0.056393
Iterations [13990/25500], Train Loss: 0.050639, Validation Loss: 0.047180
Iterations [14000/25500], Train Loss: 0.058440, Validation Loss: 0.065675
Iterations [14010/25500], Train Loss: 0.048000, Validation Loss: 0.045563
Iterations [14020/25500], Train Loss: 0.062648, Validation Loss: 0.063015
Iterations [14030/25500], Train Loss: 0.061808, Validation Loss: 0.051924
Iterations [14040/25500], Train Loss: 0.049673, Validation Loss: 0.049969
Iterations [14050/25500], Train Loss: 0.042377, Validation Loss: 0.047207
Iterations [14060/25500], Train Loss: 0.059911, Validation Loss: 0.047762
Iterations [14070/25500], Train Loss: 0.045429, Validation Loss: 0.049174
Iterations [14080/25500], Train Loss: 0.040970, Validation Loss: 0.054698
Iterations [14090/25500], Train Loss: 0.061111, Validation Loss: 0.052073
Iterations [14100/25500], Train Loss: 0.046164, Validation Loss: 0.046059
Iterations [14110/25500], Train Loss: 0.053520, Validation Loss: 0.051331
Iterations [14120/25500], Train Loss: 0.048490, Validation Loss: 0.051074
Iterations [14130/25500], Train Loss: 0.040636, Validation Loss: 0.046905
Iterations [14140/25500], Train Loss: 0.035557, Validation Loss: 0.041965
Iterations [14150/25500], Train Loss: 0.057515, Validation Loss: 0.056818
Iterations [14160/25500], Train Loss: 0.059321, Validation Loss: 0.053249
Iterations [14170/25500], Train Loss: 0.046796, Validation Loss: 0.044072
Iterations [14180/25500], Train Loss: 0.052469, Validation Loss: 0.058877
Iterations [14190/25500], Train Loss: 0.064834, Validation Loss: 0.049366
Iterations [14200/25500], Train Loss: 0.050707, Validation Loss: 0.047166
Iterations [14210/25500], Train Loss: 0.045176, Validation Loss: 0.046590
Iterations [14220/25500], Train Loss: 0.048476, Validation Loss: 0.054035
Iterations [14230/25500], Train Loss: 0.037891, Validation Loss: 0.051481
Iterations [14240/25500], Train Loss: 0.049326, Validation Loss: 0.051543
Iterations [14250/25500], Train Loss: 0.040728, Validation Loss: 0.062184
Iterations [14260/25500], Train Loss: 0.039385, Validation Loss: 0.045603
Iterations [14270/25500], Train Loss: 0.058198, Validation Loss: 0.057527
Iterations [14280/25500], Train Loss: 0.045287, Validation Loss: 0.048936
Iterations [14290/25500], Train Loss: 0.042877, Validation Loss: 0.055477
Iterations [14300/25500], Train Loss: 0.046386, Validation Loss: 0.050516
Iterations [14310/25500], Train Loss: 0.050842, Validation Loss: 0.041594
Iterations [14320/25500], Train Loss: 0.055818, Validation Loss: 0.051978
Iterations [14330/25500], Train Loss: 0.045930, Validation Loss: 0.042681
Iterations [14340/25500], Train Loss: 0.047153, Validation Loss: 0.062277
Iterations [14350/25500], Train Loss: 0.056856, Validation Loss: 0.045350
Iterations [14360/25500], Train Loss: 0.054703, Validation Loss: 0.053482
Iterations [14370/25500], Train Loss: 0.058042, Validation Loss: 0.044463
Iterations [14380/25500], Train Loss: 0.042543, Validation Loss: 0.047707
Iterations [14390/25500], Train Loss: 0.057979, Validation Loss: 0.051233
Iterations [14400/25500], Train Loss: 0.041082, Validation Loss: 0.045863
Iterations [14410/25500], Train Loss: 0.050969, Validation Loss: 0.048235
Iterations [14420/25500], Train Loss: 0.058640, Validation Loss: 0.054739
Iterations [14430/25500], Train Loss: 0.044831, Validation Loss: 0.050771
Iterations [14440/25500], Train Loss: 0.048790, Validation Loss: 0.052343
Iterations [14450/25500], Train Loss: 0.051545, Validation Loss: 0.040379
Iterations [14460/25500], Train Loss: 0.041563, Validation Loss: 0.066827
Iterations [14470/25500], Train Loss: 0.036965, Validation Loss: 0.052431
Iterations [14480/25500], Train Loss: 0.047146, Validation Loss: 0.047228
Iterations [14490/25500], Train Loss: 0.042402, Validation Loss: 0.047794
Iterations [14500/25500], Train Loss: 0.047703, Validation Loss: 0.053819
Iterations [14510/25500], Train Loss: 0.040511, Validation Loss: 0.041261
Iterations [14520/25500], Train Loss: 0.043236, Validation Loss: 0.061485
Iterations [14530/25500], Train Loss: 0.045932, Validation Loss: 0.060063
Iterations [14540/25500], Train Loss: 0.050032, Validation Loss: 0.051590
Iterations [14550/25500], Train Loss: 0.046481, Validation Loss: 0.046126
Iterations [14560/25500], Train Loss: 0.051297, Validation Loss: 0.072300
Iterations [14570/25500], Train Loss: 0.036446, Validation Loss: 0.059950
Iterations [14580/25500], Train Loss: 0.046308, Validation Loss: 0.042290
Iterations [14590/25500], Train Loss: 0.038804, Validation Loss: 0.051011
Iterations [14600/25500], Train Loss: 0.046773, Validation Loss: 0.052557
Iterations [14610/25500], Train Loss: 0.037363, Validation Loss: 0.055639
Iterations [14620/25500], Train Loss: 0.051638, Validation Loss: 0.045699
Iterations [14630/25500], Train Loss: 0.041252, Validation Loss: 0.048006
Iterations [14640/25500], Train Loss: 0.058893, Validation Loss: 0.058108
Iterations [14650/25500], Train Loss: 0.044629, Validation Loss: 0.058306
Iterations [14660/25500], Train Loss: 0.049321, Validation Loss: 0.059741
Iterations [14670/25500], Train Loss: 0.038970, Validation Loss: 0.055607
Iterations [14680/25500], Train Loss: 0.047248, Validation Loss: 0.050195
Iterations [14690/25500], Train Loss: 0.031105, Validation Loss: 0.037387
Iterations [14700/25500], Train Loss: 0.045025, Validation Loss: 0.042647
Iterations [14710/25500], Train Loss: 0.047812, Validation Loss: 0.044870
Iterations [14720/25500], Train Loss: 0.044817, Validation Loss: 0.055614
Iterations [14730/25500], Train Loss: 0.041705, Validation Loss: 0.053923
Iterations [14740/25500], Train Loss: 0.052729, Validation Loss: 0.040214
Iterations [14750/25500], Train Loss: 0.049813, Validation Loss: 0.048183
Iterations [14760/25500], Train Loss: 0.037354, Validation Loss: 0.052343
Iterations [14770/25500], Train Loss: 0.036508, Validation Loss: 0.041618
Iterations [14780/25500], Train Loss: 0.038334, Validation Loss: 0.037909
Iterations [14790/25500], Train Loss: 0.046054, Validation Loss: 0.050180
Iterations [14800/25500], Train Loss: 0.043927, Validation Loss: 0.051955
Iterations [14810/25500], Train Loss: 0.049997, Validation Loss: 0.042495
Iterations [14820/25500], Train Loss: 0.041528, Validation Loss: 0.056452
Iterations [14830/25500], Train Loss: 0.047898, Validation Loss: 0.044764
Iterations [14840/25500], Train Loss: 0.042999, Validation Loss: 0.057131
Iterations [14850/25500], Train Loss: 0.050927, Validation Loss: 0.049628
Iterations [14860/25500], Train Loss: 0.045622, Validation Loss: 0.041265
Iterations [14870/25500], Train Loss: 0.035260, Validation Loss: 0.056530
Iterations [14880/25500], Train Loss: 0.040060, Validation Loss: 0.048561
Iterations [14890/25500], Train Loss: 0.054017, Validation Loss: 0.048014
Iterations [14900/25500], Train Loss: 0.049282, Validation Loss: 0.052423
Iterations [14910/25500], Train Loss: 0.047015, Validation Loss: 0.039984
Iterations [14920/25500], Train Loss: 0.044914, Validation Loss: 0.039491
Iterations [14930/25500], Train Loss: 0.042825, Validation Loss: 0.046342
Iterations [14940/25500], Train Loss: 0.038213, Validation Loss: 0.049017
Iterations [14950/25500], Train Loss: 0.031664, Validation Loss: 0.046859
Iterations [14960/25500], Train Loss: 0.045159, Validation Loss: 0.044517
Iterations [14970/25500], Train Loss: 0.050565, Validation Loss: 0.054892
Iterations [14980/25500], Train Loss: 0.048102, Validation Loss: 0.036156
Iterations [14990/25500], Train Loss: 0.043381, Validation Loss: 0.040085
Iterations [15000/25500], Train Loss: 0.044151, Validation Loss: 0.054037
Iterations [15010/25500], Train Loss: 0.040673, Validation Loss: 0.054962
Iterations [15020/25500], Train Loss: 0.045350, Validation Loss: 0.062615
Iterations [15030/25500], Train Loss: 0.040955, Validation Loss: 0.062861
Iterations [15040/25500], Train Loss: 0.030637, Validation Loss: 0.039489
Iterations [15050/25500], Train Loss: 0.051489, Validation Loss: 0.042155
Iterations [15060/25500], Train Loss: 0.052485, Validation Loss: 0.048789
Iterations [15070/25500], Train Loss: 0.040945, Validation Loss: 0.041753
Iterations [15080/25500], Train Loss: 0.048398, Validation Loss: 0.058306
Iterations [15090/25500], Train Loss: 0.049899, Validation Loss: 0.046611
Iterations [15100/25500], Train Loss: 0.028643, Validation Loss: 0.050334
Iterations [15110/25500], Train Loss: 0.038248, Validation Loss: 0.046349
Iterations [15120/25500], Train Loss: 0.037705, Validation Loss: 0.051759
Iterations [15130/25500], Train Loss: 0.047622, Validation Loss: 0.036624
Iterations [15140/25500], Train Loss: 0.043415, Validation Loss: 0.044680
Iterations [15150/25500], Train Loss: 0.035342, Validation Loss: 0.047931
Iterations [15160/25500], Train Loss: 0.041437, Validation Loss: 0.052303
Iterations [15170/25500], Train Loss: 0.041569, Validation Loss: 0.049544
Iterations [15180/25500], Train Loss: 0.044655, Validation Loss: 0.045962
Iterations [15190/25500], Train Loss: 0.040350, Validation Loss: 0.046798
Iterations [15200/25500], Train Loss: 0.044181, Validation Loss: 0.039719
Iterations [15210/25500], Train Loss: 0.039505, Validation Loss: 0.045688
Iterations [15220/25500], Train Loss: 0.035422, Validation Loss: 0.058601
Iterations [15230/25500], Train Loss: 0.028735, Validation Loss: 0.038832
Iterations [15240/25500], Train Loss: 0.041947, Validation Loss: 0.045686
Iterations [15250/25500], Train Loss: 0.039064, Validation Loss: 0.047460
Iterations [15260/25500], Train Loss: 0.047313, Validation Loss: 0.037062
Iterations [15270/25500], Train Loss: 0.040621, Validation Loss: 0.038655
Iterations [15280/25500], Train Loss: 0.050186, Validation Loss: 0.043028
Iterations [15290/25500], Train Loss: 0.041341, Validation Loss: 0.052294
Iterations [15300/25500], Train Loss: 0.044856, Validation Loss: 0.044401
Iterations [15310/25500], Train Loss: 0.040458, Validation Loss: 0.040624
Iterations [15320/25500], Train Loss: 0.035281, Validation Loss: 0.056235
Iterations [15330/25500], Train Loss: 0.040900, Validation Loss: 0.048128
Iterations [15340/25500], Train Loss: 0.044670, Validation Loss: 0.048740
Iterations [15350/25500], Train Loss: 0.045358, Validation Loss: 0.046414
Iterations [15360/25500], Train Loss: 0.037294, Validation Loss: 0.045742
Iterations [15370/25500], Train Loss: 0.032450, Validation Loss: 0.048659
Iterations [15380/25500], Train Loss: 0.038361, Validation Loss: 0.040110
Iterations [15390/25500], Train Loss: 0.039294, Validation Loss: 0.048012
Iterations [15400/25500], Train Loss: 0.043123, Validation Loss: 0.045871
Iterations [15410/25500], Train Loss: 0.043848, Validation Loss: 0.059486
Iterations [15420/25500], Train Loss: 0.037769, Validation Loss: 0.036632
Iterations [15430/25500], Train Loss: 0.034213, Validation Loss: 0.046207
Iterations [15440/25500], Train Loss: 0.037182, Validation Loss: 0.028508
Iterations [15450/25500], Train Loss: 0.039791, Validation Loss: 0.046960
Iterations [15460/25500], Train Loss: 0.037517, Validation Loss: 0.046660
Iterations [15470/25500], Train Loss: 0.030840, Validation Loss: 0.055356
Iterations [15480/25500], Train Loss: 0.034787, Validation Loss: 0.045333
Iterations [15490/25500], Train Loss: 0.034042, Validation Loss: 0.042860
Iterations [15500/25500], Train Loss: 0.037758, Validation Loss: 0.041761
Iterations [15510/25500], Train Loss: 0.030300, Validation Loss: 0.038364
Iterations [15520/25500], Train Loss: 0.032110, Validation Loss: 0.048922
Iterations [15530/25500], Train Loss: 0.036314, Validation Loss: 0.051302
Iterations [15540/25500], Train Loss: 0.046632, Validation Loss: 0.036390
Iterations [15550/25500], Train Loss: 0.043117, Validation Loss: 0.047122
Iterations [15560/25500], Train Loss: 0.041497, Validation Loss: 0.052371
Iterations [15570/25500], Train Loss: 0.048367, Validation Loss: 0.049465
Iterations [15580/25500], Train Loss: 0.039635, Validation Loss: 0.042386
Iterations [15590/25500], Train Loss: 0.033898, Validation Loss: 0.043711
Iterations [15600/25500], Train Loss: 0.031166, Validation Loss: 0.039035
Iterations [15610/25500], Train Loss: 0.044108, Validation Loss: 0.035844
Iterations [15620/25500], Train Loss: 0.040291, Validation Loss: 0.042010
Iterations [15630/25500], Train Loss: 0.046934, Validation Loss: 0.043196
Iterations [15640/25500], Train Loss: 0.037196, Validation Loss: 0.044908
Iterations [15650/25500], Train Loss: 0.049659, Validation Loss: 0.035464
Iterations [15660/25500], Train Loss: 0.034677, Validation Loss: 0.048897
Iterations [15670/25500], Train Loss: 0.032831, Validation Loss: 0.036451
Iterations [15680/25500], Train Loss: 0.034122, Validation Loss: 0.041445
Iterations [15690/25500], Train Loss: 0.045563, Validation Loss: 0.045093
Iterations [15700/25500], Train Loss: 0.040537, Validation Loss: 0.052319
Iterations [15710/25500], Train Loss: 0.041997, Validation Loss: 0.045290
Iterations [15720/25500], Train Loss: 0.041685, Validation Loss: 0.039772
Iterations [15730/25500], Train Loss: 0.037208, Validation Loss: 0.029168
Iterations [15740/25500], Train Loss: 0.037327, Validation Loss: 0.050458
Iterations [15750/25500], Train Loss: 0.033537, Validation Loss: 0.037238
Iterations [15760/25500], Train Loss: 0.040310, Validation Loss: 0.040839
Iterations [15770/25500], Train Loss: 0.040163, Validation Loss: 0.048893
Iterations [15780/25500], Train Loss: 0.045890, Validation Loss: 0.039001
Iterations [15790/25500], Train Loss: 0.042905, Validation Loss: 0.039195
Iterations [15800/25500], Train Loss: 0.036995, Validation Loss: 0.044289
Iterations [15810/25500], Train Loss: 0.033136, Validation Loss: 0.039391
Iterations [15820/25500], Train Loss: 0.040719, Validation Loss: 0.052580
Iterations [15830/25500], Train Loss: 0.037050, Validation Loss: 0.030408
Iterations [15840/25500], Train Loss: 0.034132, Validation Loss: 0.046410
Iterations [15850/25500], Train Loss: 0.029222, Validation Loss: 0.049341
Iterations [15860/25500], Train Loss: 0.038738, Validation Loss: 0.033636
Iterations [15870/25500], Train Loss: 0.036865, Validation Loss: 0.043997
Iterations [15880/25500], Train Loss: 0.036020, Validation Loss: 0.045556
Iterations [15890/25500], Train Loss: 0.036012, Validation Loss: 0.040541
Iterations [15900/25500], Train Loss: 0.026775, Validation Loss: 0.042497
Iterations [15910/25500], Train Loss: 0.045519, Validation Loss: 0.035935
Iterations [15920/25500], Train Loss: 0.039797, Validation Loss: 0.041374
Iterations [15930/25500], Train Loss: 0.028535, Validation Loss: 0.045087
Iterations [15940/25500], Train Loss: 0.038292, Validation Loss: 0.046780
Iterations [15950/25500], Train Loss: 0.034506, Validation Loss: 0.034471
Iterations [15960/25500], Train Loss: 0.039071, Validation Loss: 0.045620
Iterations [15970/25500], Train Loss: 0.041651, Validation Loss: 0.041111
Iterations [15980/25500], Train Loss: 0.044544, Validation Loss: 0.036935
Iterations [15990/25500], Train Loss: 0.039063, Validation Loss: 0.047389
Iterations [16000/25500], Train Loss: 0.036769, Validation Loss: 0.035318
Iterations [16010/25500], Train Loss: 0.035885, Validation Loss: 0.035009
Iterations [16020/25500], Train Loss: 0.034096, Validation Loss: 0.041829
Iterations [16030/25500], Train Loss: 0.043105, Validation Loss: 0.042084
Iterations [16040/25500], Train Loss: 0.033318, Validation Loss: 0.037918
Iterations [16050/25500], Train Loss: 0.038932, Validation Loss: 0.040621
Iterations [16060/25500], Train Loss: 0.034259, Validation Loss: 0.055732
Iterations [16070/25500], Train Loss: 0.024939, Validation Loss: 0.044482
Iterations [16080/25500], Train Loss: 0.038791, Validation Loss: 0.041200
Iterations [16090/25500], Train Loss: 0.030917, Validation Loss: 0.031145
Iterations [16100/25500], Train Loss: 0.037253, Validation Loss: 0.039597
Iterations [16110/25500], Train Loss: 0.042556, Validation Loss: 0.039286
Iterations [16120/25500], Train Loss: 0.035059, Validation Loss: 0.042333
Iterations [16130/25500], Train Loss: 0.035388, Validation Loss: 0.045082
Iterations [16140/25500], Train Loss: 0.035407, Validation Loss: 0.041828
Iterations [16150/25500], Train Loss: 0.039318, Validation Loss: 0.043655
Iterations [16160/25500], Train Loss: 0.027322, Validation Loss: 0.038167
Iterations [16170/25500], Train Loss: 0.037365, Validation Loss: 0.047508
Iterations [16180/25500], Train Loss: 0.028746, Validation Loss: 0.051976
Iterations [16190/25500], Train Loss: 0.043025, Validation Loss: 0.043135
Iterations [16200/25500], Train Loss: 0.035257, Validation Loss: 0.043073
Iterations [16210/25500], Train Loss: 0.037466, Validation Loss: 0.045865
Iterations [16220/25500], Train Loss: 0.042621, Validation Loss: 0.035227
Iterations [16230/25500], Train Loss: 0.048362, Validation Loss: 0.042962
Iterations [16240/25500], Train Loss: 0.029090, Validation Loss: 0.028150
Iterations [16250/25500], Train Loss: 0.043707, Validation Loss: 0.034144
Iterations [16260/25500], Train Loss: 0.033615, Validation Loss: 0.039395
Iterations [16270/25500], Train Loss: 0.044336, Validation Loss: 0.036242
Iterations [16280/25500], Train Loss: 0.032135, Validation Loss: 0.040913
Iterations [16290/25500], Train Loss: 0.033792, Validation Loss: 0.038326
Iterations [16300/25500], Train Loss: 0.035682, Validation Loss: 0.047509
Iterations [16310/25500], Train Loss: 0.045770, Validation Loss: 0.050610
Iterations [16320/25500], Train Loss: 0.041027, Validation Loss: 0.038166
Iterations [16330/25500], Train Loss: 0.034616, Validation Loss: 0.028990
Iterations [16340/25500], Train Loss: 0.033642, Validation Loss: 0.043634
Iterations [16350/25500], Train Loss: 0.026957, Validation Loss: 0.034124
Iterations [16360/25500], Train Loss: 0.035535, Validation Loss: 0.036593
Iterations [16370/25500], Train Loss: 0.027607, Validation Loss: 0.037618
Iterations [16380/25500], Train Loss: 0.033429, Validation Loss: 0.036516
Iterations [16390/25500], Train Loss: 0.030709, Validation Loss: 0.038014
Iterations [16400/25500], Train Loss: 0.032750, Validation Loss: 0.033541
Iterations [16410/25500], Train Loss: 0.029034, Validation Loss: 0.048351
Iterations [16420/25500], Train Loss: 0.026917, Validation Loss: 0.037908
Iterations [16430/25500], Train Loss: 0.029838, Validation Loss: 0.031681
Iterations [16440/25500], Train Loss: 0.035689, Validation Loss: 0.037322
Iterations [16450/25500], Train Loss: 0.030383, Validation Loss: 0.037898
Iterations [16460/25500], Train Loss: 0.032409, Validation Loss: 0.034947
Iterations [16470/25500], Train Loss: 0.029631, Validation Loss: 0.041355
Iterations [16480/25500], Train Loss: 0.031457, Validation Loss: 0.049142
Iterations [16490/25500], Train Loss: 0.027441, Validation Loss: 0.038312
Iterations [16500/25500], Train Loss: 0.034431, Validation Loss: 0.043971
Iterations [16510/25500], Train Loss: 0.026530, Validation Loss: 0.026387
Iterations [16520/25500], Train Loss: 0.035598, Validation Loss: 0.042844
Iterations [16530/25500], Train Loss: 0.024864, Validation Loss: 0.027368
Iterations [16540/25500], Train Loss: 0.039803, Validation Loss: 0.035889
Iterations [16550/25500], Train Loss: 0.036646, Validation Loss: 0.047300
Iterations [16560/25500], Train Loss: 0.036318, Validation Loss: 0.042327
Iterations [16570/25500], Train Loss: 0.026826, Validation Loss: 0.046168
Iterations [16580/25500], Train Loss: 0.049774, Validation Loss: 0.032420
Iterations [16590/25500], Train Loss: 0.034067, Validation Loss: 0.044709
Iterations [16600/25500], Train Loss: 0.037693, Validation Loss: 0.046056
Iterations [16610/25500], Train Loss: 0.031966, Validation Loss: 0.034856
Iterations [16620/25500], Train Loss: 0.031510, Validation Loss: 0.037127
Iterations [16630/25500], Train Loss: 0.025703, Validation Loss: 0.040660
Iterations [16640/25500], Train Loss: 0.036986, Validation Loss: 0.034363
Iterations [16650/25500], Train Loss: 0.026042, Validation Loss: 0.033336
Iterations [16660/25500], Train Loss: 0.035128, Validation Loss: 0.043621
Iterations [16670/25500], Train Loss: 0.033526, Validation Loss: 0.040964
Iterations [16680/25500], Train Loss: 0.020794, Validation Loss: 0.033465
Iterations [16690/25500], Train Loss: 0.026696, Validation Loss: 0.037840
Iterations [16700/25500], Train Loss: 0.026754, Validation Loss: 0.036684
Iterations [16710/25500], Train Loss: 0.033230, Validation Loss: 0.044805
Iterations [16720/25500], Train Loss: 0.032629, Validation Loss: 0.042184
Iterations [16730/25500], Train Loss: 0.027943, Validation Loss: 0.037270
Iterations [16740/25500], Train Loss: 0.031216, Validation Loss: 0.037725
Iterations [16750/25500], Train Loss: 0.026185, Validation Loss: 0.040339
Iterations [16760/25500], Train Loss: 0.024564, Validation Loss: 0.035547
Iterations [16770/25500], Train Loss: 0.027478, Validation Loss: 0.044217
Iterations [16780/25500], Train Loss: 0.035466, Validation Loss: 0.042512
Iterations [16790/25500], Train Loss: 0.022046, Validation Loss: 0.043809
Iterations [16800/25500], Train Loss: 0.031983, Validation Loss: 0.020562
Iterations [16810/25500], Train Loss: 0.043112, Validation Loss: 0.034392
Iterations [16820/25500], Train Loss: 0.041668, Validation Loss: 0.031530
Iterations [16830/25500], Train Loss: 0.036025, Validation Loss: 0.048983
Iterations [16840/25500], Train Loss: 0.034409, Validation Loss: 0.040139
Iterations [16850/25500], Train Loss: 0.031453, Validation Loss: 0.038339
Iterations [16860/25500], Train Loss: 0.033641, Validation Loss: 0.038499
Iterations [16870/25500], Train Loss: 0.036128, Validation Loss: 0.037885
Iterations [16880/25500], Train Loss: 0.025882, Validation Loss: 0.034794
Iterations [16890/25500], Train Loss: 0.034502, Validation Loss: 0.038911
Iterations [16900/25500], Train Loss: 0.031347, Validation Loss: 0.031815
Iterations [16910/25500], Train Loss: 0.030845, Validation Loss: 0.027750
Iterations [16920/25500], Train Loss: 0.039364, Validation Loss: 0.043210
Iterations [16930/25500], Train Loss: 0.035476, Validation Loss: 0.027957
Iterations [16940/25500], Train Loss: 0.033813, Validation Loss: 0.041241
Iterations [16950/25500], Train Loss: 0.025844, Validation Loss: 0.040550
Iterations [16960/25500], Train Loss: 0.033569, Validation Loss: 0.039738
Iterations [16970/25500], Train Loss: 0.026651, Validation Loss: 0.038175
Iterations [16980/25500], Train Loss: 0.032886, Validation Loss: 0.029316
Iterations [16990/25500], Train Loss: 0.035577, Validation Loss: 0.032527
Iterations [17000/25500], Train Loss: 0.024666, Validation Loss: 0.033961
Iterations [17010/25500], Train Loss: 0.037057, Validation Loss: 0.042850
Iterations [17020/25500], Train Loss: 0.029402, Validation Loss: 0.039696
Iterations [17030/25500], Train Loss: 0.041514, Validation Loss: 0.038588
Iterations [17040/25500], Train Loss: 0.032152, Validation Loss: 0.032819
Iterations [17050/25500], Train Loss: 0.030496, Validation Loss: 0.034922
Iterations [17060/25500], Train Loss: 0.030425, Validation Loss: 0.029285
Iterations [17070/25500], Train Loss: 0.032863, Validation Loss: 0.027158
Iterations [17080/25500], Train Loss: 0.031370, Validation Loss: 0.041103
Iterations [17090/25500], Train Loss: 0.033110, Validation Loss: 0.036185
Iterations [17100/25500], Train Loss: 0.023458, Validation Loss: 0.025880
Iterations [17110/25500], Train Loss: 0.033047, Validation Loss: 0.027824
Iterations [17120/25500], Train Loss: 0.024919, Validation Loss: 0.041248
Iterations [17130/25500], Train Loss: 0.026735, Validation Loss: 0.039703
Iterations [17140/25500], Train Loss: 0.024209, Validation Loss: 0.037357
Iterations [17150/25500], Train Loss: 0.023404, Validation Loss: 0.029605
Iterations [17160/25500], Train Loss: 0.028817, Validation Loss: 0.033526
Iterations [17170/25500], Train Loss: 0.041126, Validation Loss: 0.036328
Iterations [17180/25500], Train Loss: 0.024967, Validation Loss: 0.029173
Iterations [17190/25500], Train Loss: 0.031644, Validation Loss: 0.039098
Iterations [17200/25500], Train Loss: 0.038247, Validation Loss: 0.024887
Iterations [17210/25500], Train Loss: 0.023596, Validation Loss: 0.028375
Iterations [17220/25500], Train Loss: 0.029967, Validation Loss: 0.026958
Iterations [17230/25500], Train Loss: 0.035565, Validation Loss: 0.036628
Iterations [17240/25500], Train Loss: 0.033488, Validation Loss: 0.037744
Iterations [17250/25500], Train Loss: 0.028652, Validation Loss: 0.033892
Iterations [17260/25500], Train Loss: 0.030123, Validation Loss: 0.037671
Iterations [17270/25500], Train Loss: 0.043900, Validation Loss: 0.037288
Iterations [17280/25500], Train Loss: 0.041653, Validation Loss: 0.032493
Iterations [17290/25500], Train Loss: 0.035132, Validation Loss: 0.036070
Iterations [17300/25500], Train Loss: 0.030927, Validation Loss: 0.034304
Iterations [17310/25500], Train Loss: 0.035671, Validation Loss: 0.035045
Iterations [17320/25500], Train Loss: 0.026222, Validation Loss: 0.040188
Iterations [17330/25500], Train Loss: 0.026668, Validation Loss: 0.031618
Iterations [17340/25500], Train Loss: 0.027338, Validation Loss: 0.028766
Iterations [17350/25500], Train Loss: 0.025621, Validation Loss: 0.029813
Iterations [17360/25500], Train Loss: 0.029026, Validation Loss: 0.038490
Iterations [17370/25500], Train Loss: 0.040181, Validation Loss: 0.037787
Iterations [17380/25500], Train Loss: 0.028629, Validation Loss: 0.041763
Iterations [17390/25500], Train Loss: 0.029895, Validation Loss: 0.036525
Iterations [17400/25500], Train Loss: 0.041723, Validation Loss: 0.036247
Iterations [17410/25500], Train Loss: 0.037511, Validation Loss: 0.029838
Iterations [17420/25500], Train Loss: 0.027836, Validation Loss: 0.037740
Iterations [17430/25500], Train Loss: 0.030981, Validation Loss: 0.036606
Iterations [17440/25500], Train Loss: 0.032318, Validation Loss: 0.033555
Iterations [17450/25500], Train Loss: 0.029677, Validation Loss: 0.029518
Iterations [17460/25500], Train Loss: 0.032030, Validation Loss: 0.030248
Iterations [17470/25500], Train Loss: 0.028519, Validation Loss: 0.046647
Iterations [17480/25500], Train Loss: 0.029975, Validation Loss: 0.045204
Iterations [17490/25500], Train Loss: 0.030207, Validation Loss: 0.027731
Iterations [17500/25500], Train Loss: 0.038365, Validation Loss: 0.027506
Iterations [17510/25500], Train Loss: 0.028551, Validation Loss: 0.032007
Iterations [17520/25500], Train Loss: 0.037009, Validation Loss: 0.035544
Iterations [17530/25500], Train Loss: 0.032750, Validation Loss: 0.035147
Iterations [17540/25500], Train Loss: 0.035422, Validation Loss: 0.034877
Iterations [17550/25500], Train Loss: 0.024312, Validation Loss: 0.023876
Iterations [17560/25500], Train Loss: 0.022600, Validation Loss: 0.031505
Iterations [17570/25500], Train Loss: 0.027097, Validation Loss: 0.031651
Iterations [17580/25500], Train Loss: 0.035278, Validation Loss: 0.028839
Iterations [17590/25500], Train Loss: 0.022856, Validation Loss: 0.032159
Iterations [17600/25500], Train Loss: 0.028590, Validation Loss: 0.050276
Iterations [17610/25500], Train Loss: 0.030439, Validation Loss: 0.032381
Iterations [17620/25500], Train Loss: 0.020705, Validation Loss: 0.031421
Iterations [17630/25500], Train Loss: 0.031265, Validation Loss: 0.026698
Iterations [17640/25500], Train Loss: 0.023991, Validation Loss: 0.034001
Iterations [17650/25500], Train Loss: 0.036996, Validation Loss: 0.035893
Iterations [17660/25500], Train Loss: 0.023153, Validation Loss: 0.034051
Iterations [17670/25500], Train Loss: 0.029123, Validation Loss: 0.036163
Iterations [17680/25500], Train Loss: 0.030802, Validation Loss: 0.035454
Iterations [17690/25500], Train Loss: 0.024568, Validation Loss: 0.049785
Iterations [17700/25500], Train Loss: 0.023010, Validation Loss: 0.036987
Iterations [17710/25500], Train Loss: 0.035119, Validation Loss: 0.031945
Iterations [17720/25500], Train Loss: 0.025882, Validation Loss: 0.029281
Iterations [17730/25500], Train Loss: 0.031148, Validation Loss: 0.029704
Iterations [17740/25500], Train Loss: 0.028129, Validation Loss: 0.035447
Iterations [17750/25500], Train Loss: 0.021679, Validation Loss: 0.046294
Iterations [17760/25500], Train Loss: 0.024874, Validation Loss: 0.039062
Iterations [17770/25500], Train Loss: 0.021557, Validation Loss: 0.028997
Iterations [17780/25500], Train Loss: 0.022129, Validation Loss: 0.021549
Iterations [17790/25500], Train Loss: 0.031466, Validation Loss: 0.029299
Iterations [17800/25500], Train Loss: 0.032646, Validation Loss: 0.035344
Iterations [17810/25500], Train Loss: 0.033033, Validation Loss: 0.029613
Iterations [17820/25500], Train Loss: 0.022895, Validation Loss: 0.035249
Iterations [17830/25500], Train Loss: 0.029146, Validation Loss: 0.025401
Iterations [17840/25500], Train Loss: 0.030138, Validation Loss: 0.036383
Iterations [17850/25500], Train Loss: 0.020604, Validation Loss: 0.025608
Iterations [17860/25500], Train Loss: 0.026460, Validation Loss: 0.034270
Iterations [17870/25500], Train Loss: 0.027442, Validation Loss: 0.040950
Iterations [17880/25500], Train Loss: 0.034372, Validation Loss: 0.048316
Iterations [17890/25500], Train Loss: 0.027408, Validation Loss: 0.028815
Iterations [17900/25500], Train Loss: 0.022124, Validation Loss: 0.031766
Iterations [17910/25500], Train Loss: 0.026037, Validation Loss: 0.031986
Iterations [17920/25500], Train Loss: 0.025261, Validation Loss: 0.039839
Iterations [17930/25500], Train Loss: 0.017638, Validation Loss: 0.030983
Iterations [17940/25500], Train Loss: 0.028567, Validation Loss: 0.029811
Iterations [17950/25500], Train Loss: 0.040021, Validation Loss: 0.037898
Iterations [17960/25500], Train Loss: 0.029508, Validation Loss: 0.030595
Iterations [17970/25500], Train Loss: 0.017726, Validation Loss: 0.029803
Iterations [17980/25500], Train Loss: 0.028197, Validation Loss: 0.024011
Iterations [17990/25500], Train Loss: 0.028503, Validation Loss: 0.026516
Iterations [18000/25500], Train Loss: 0.024598, Validation Loss: 0.035365
Iterations [18010/25500], Train Loss: 0.031372, Validation Loss: 0.042107
Iterations [18020/25500], Train Loss: 0.034822, Validation Loss: 0.029172
Iterations [18030/25500], Train Loss: 0.018628, Validation Loss: 0.032348
Iterations [18040/25500], Train Loss: 0.030208, Validation Loss: 0.042243
Iterations [18050/25500], Train Loss: 0.024159, Validation Loss: 0.032653
Iterations [18060/25500], Train Loss: 0.023709, Validation Loss: 0.029168
Iterations [18070/25500], Train Loss: 0.028665, Validation Loss: 0.038245
Iterations [18080/25500], Train Loss: 0.029455, Validation Loss: 0.033119
Iterations [18090/25500], Train Loss: 0.030556, Validation Loss: 0.029128
Iterations [18100/25500], Train Loss: 0.024741, Validation Loss: 0.039012
Iterations [18110/25500], Train Loss: 0.018481, Validation Loss: 0.037151
Iterations [18120/25500], Train Loss: 0.023185, Validation Loss: 0.022817
Iterations [18130/25500], Train Loss: 0.032341, Validation Loss: 0.029559
Iterations [18140/25500], Train Loss: 0.031358, Validation Loss: 0.040906
Iterations [18150/25500], Train Loss: 0.022627, Validation Loss: 0.031363
Iterations [18160/25500], Train Loss: 0.029236, Validation Loss: 0.029614
Iterations [18170/25500], Train Loss: 0.029575, Validation Loss: 0.036594
Iterations [18180/25500], Train Loss: 0.022578, Validation Loss: 0.028600
Iterations [18190/25500], Train Loss: 0.033475, Validation Loss: 0.033161
Iterations [18200/25500], Train Loss: 0.019912, Validation Loss: 0.026104
Iterations [18210/25500], Train Loss: 0.023527, Validation Loss: 0.030793
Iterations [18220/25500], Train Loss: 0.026987, Validation Loss: 0.029370
Iterations [18230/25500], Train Loss: 0.029404, Validation Loss: 0.027905
Iterations [18240/25500], Train Loss: 0.033137, Validation Loss: 0.021904
Iterations [18250/25500], Train Loss: 0.023420, Validation Loss: 0.034418
Iterations [18260/25500], Train Loss: 0.028887, Validation Loss: 0.025499
Iterations [18270/25500], Train Loss: 0.030695, Validation Loss: 0.041248
Iterations [18280/25500], Train Loss: 0.024140, Validation Loss: 0.027468
Iterations [18290/25500], Train Loss: 0.021412, Validation Loss: 0.033385
Iterations [18300/25500], Train Loss: 0.024301, Validation Loss: 0.028836
Iterations [18310/25500], Train Loss: 0.025661, Validation Loss: 0.034908
Iterations [18320/25500], Train Loss: 0.030011, Validation Loss: 0.042466
Iterations [18330/25500], Train Loss: 0.025594, Validation Loss: 0.035132
Iterations [18340/25500], Train Loss: 0.023041, Validation Loss: 0.037290
Iterations [18350/25500], Train Loss: 0.018791, Validation Loss: 0.029643
Iterations [18360/25500], Train Loss: 0.020908, Validation Loss: 0.029990
Iterations [18370/25500], Train Loss: 0.023344, Validation Loss: 0.034191
Iterations [18380/25500], Train Loss: 0.029998, Validation Loss: 0.028525
Iterations [18390/25500], Train Loss: 0.026891, Validation Loss: 0.036327
Iterations [18400/25500], Train Loss: 0.027197, Validation Loss: 0.033268
Iterations [18410/25500], Train Loss: 0.026357, Validation Loss: 0.026084
Iterations [18420/25500], Train Loss: 0.027299, Validation Loss: 0.039951
Iterations [18430/25500], Train Loss: 0.026189, Validation Loss: 0.023795
Iterations [18440/25500], Train Loss: 0.023410, Validation Loss: 0.045151
Iterations [18450/25500], Train Loss: 0.033588, Validation Loss: 0.043253
Iterations [18460/25500], Train Loss: 0.026525, Validation Loss: 0.031723
Iterations [18470/25500], Train Loss: 0.018893, Validation Loss: 0.023536
Iterations [18480/25500], Train Loss: 0.027965, Validation Loss: 0.025976
Iterations [18490/25500], Train Loss: 0.022694, Validation Loss: 0.033878
Iterations [18500/25500], Train Loss: 0.026411, Validation Loss: 0.036323
Iterations [18510/25500], Train Loss: 0.028242, Validation Loss: 0.034245
Iterations [18520/25500], Train Loss: 0.023856, Validation Loss: 0.030151
Iterations [18530/25500], Train Loss: 0.032139, Validation Loss: 0.036012
Iterations [18540/25500], Train Loss: 0.021674, Validation Loss: 0.026073
Iterations [18550/25500], Train Loss: 0.022082, Validation Loss: 0.024321
Iterations [18560/25500], Train Loss: 0.024157, Validation Loss: 0.032881
Iterations [18570/25500], Train Loss: 0.024604, Validation Loss: 0.030426
Iterations [18580/25500], Train Loss: 0.032779, Validation Loss: 0.026691
Iterations [18590/25500], Train Loss: 0.028765, Validation Loss: 0.028304
Iterations [18600/25500], Train Loss: 0.021714, Validation Loss: 0.026451
Iterations [18610/25500], Train Loss: 0.023024, Validation Loss: 0.030769
Iterations [18620/25500], Train Loss: 0.033219, Validation Loss: 0.027566
Iterations [18630/25500], Train Loss: 0.030406, Validation Loss: 0.037134
Iterations [18640/25500], Train Loss: 0.035016, Validation Loss: 0.032769
Iterations [18650/25500], Train Loss: 0.023377, Validation Loss: 0.029368
Iterations [18660/25500], Train Loss: 0.017629, Validation Loss: 0.034164
Iterations [18670/25500], Train Loss: 0.020687, Validation Loss: 0.024734
Iterations [18680/25500], Train Loss: 0.028600, Validation Loss: 0.024169
Iterations [18690/25500], Train Loss: 0.020277, Validation Loss: 0.029635
Iterations [18700/25500], Train Loss: 0.023949, Validation Loss: 0.028055
Iterations [18710/25500], Train Loss: 0.025524, Validation Loss: 0.019951
Iterations [18720/25500], Train Loss: 0.019909, Validation Loss: 0.028323
Iterations [18730/25500], Train Loss: 0.027909, Validation Loss: 0.023175
Iterations [18740/25500], Train Loss: 0.015975, Validation Loss: 0.029033
Iterations [18750/25500], Train Loss: 0.013574, Validation Loss: 0.031226
Iterations [18760/25500], Train Loss: 0.026190, Validation Loss: 0.030100
Iterations [18770/25500], Train Loss: 0.027178, Validation Loss: 0.024444
Iterations [18780/25500], Train Loss: 0.017341, Validation Loss: 0.040723
Iterations [18790/25500], Train Loss: 0.024846, Validation Loss: 0.040724
Iterations [18800/25500], Train Loss: 0.019733, Validation Loss: 0.045957
Iterations [18810/25500], Train Loss: 0.021051, Validation Loss: 0.024790
Iterations [18820/25500], Train Loss: 0.016653, Validation Loss: 0.026739
Iterations [18830/25500], Train Loss: 0.032041, Validation Loss: 0.019304
Iterations [18840/25500], Train Loss: 0.020694, Validation Loss: 0.027456
Iterations [18850/25500], Train Loss: 0.024607, Validation Loss: 0.025622
Iterations [18860/25500], Train Loss: 0.022432, Validation Loss: 0.037916
Iterations [18870/25500], Train Loss: 0.026463, Validation Loss: 0.031950
Iterations [18880/25500], Train Loss: 0.032466, Validation Loss: 0.038487
Iterations [18890/25500], Train Loss: 0.023092, Validation Loss: 0.029437
Iterations [18900/25500], Train Loss: 0.019202, Validation Loss: 0.022424
Iterations [18910/25500], Train Loss: 0.029778, Validation Loss: 0.037643
Iterations [18920/25500], Train Loss: 0.026296, Validation Loss: 0.027089
Iterations [18930/25500], Train Loss: 0.023362, Validation Loss: 0.028564
Iterations [18940/25500], Train Loss: 0.023071, Validation Loss: 0.032555
Iterations [18950/25500], Train Loss: 0.025197, Validation Loss: 0.028130
Iterations [18960/25500], Train Loss: 0.022066, Validation Loss: 0.029087
Iterations [18970/25500], Train Loss: 0.024453, Validation Loss: 0.024000
Iterations [18980/25500], Train Loss: 0.025796, Validation Loss: 0.032444
Iterations [18990/25500], Train Loss: 0.023446, Validation Loss: 0.027529
Iterations [19000/25500], Train Loss: 0.019753, Validation Loss: 0.034223
Iterations [19010/25500], Train Loss: 0.026085, Validation Loss: 0.039964
Iterations [19020/25500], Train Loss: 0.028946, Validation Loss: 0.034869
Iterations [19030/25500], Train Loss: 0.027545, Validation Loss: 0.033517
Iterations [19040/25500], Train Loss: 0.019383, Validation Loss: 0.026850
Iterations [19050/25500], Train Loss: 0.023425, Validation Loss: 0.027413
Iterations [19060/25500], Train Loss: 0.017876, Validation Loss: 0.036087
Iterations [19070/25500], Train Loss: 0.019506, Validation Loss: 0.029560
Iterations [19080/25500], Train Loss: 0.019598, Validation Loss: 0.025110
Iterations [19090/25500], Train Loss: 0.018309, Validation Loss: 0.033367
Iterations [19100/25500], Train Loss: 0.017133, Validation Loss: 0.034461
Iterations [19110/25500], Train Loss: 0.019498, Validation Loss: 0.023712
Iterations [19120/25500], Train Loss: 0.024518, Validation Loss: 0.026962
Iterations [19130/25500], Train Loss: 0.023850, Validation Loss: 0.026706
Iterations [19140/25500], Train Loss: 0.029180, Validation Loss: 0.024810
Iterations [19150/25500], Train Loss: 0.016028, Validation Loss: 0.026098
Iterations [19160/25500], Train Loss: 0.013373, Validation Loss: 0.035246
Iterations [19170/25500], Train Loss: 0.022772, Validation Loss: 0.021743
Iterations [19180/25500], Train Loss: 0.014538, Validation Loss: 0.025486
Iterations [19190/25500], Train Loss: 0.023062, Validation Loss: 0.029496
Iterations [19200/25500], Train Loss: 0.019990, Validation Loss: 0.027076
Iterations [19210/25500], Train Loss: 0.022455, Validation Loss: 0.031105
Iterations [19220/25500], Train Loss: 0.013150, Validation Loss: 0.028503
Iterations [19230/25500], Train Loss: 0.020775, Validation Loss: 0.022299
Iterations [19240/25500], Train Loss: 0.026970, Validation Loss: 0.027280
Iterations [19250/25500], Train Loss: 0.015312, Validation Loss: 0.031047
Iterations [19260/25500], Train Loss: 0.013889, Validation Loss: 0.027795
Iterations [19270/25500], Train Loss: 0.026664, Validation Loss: 0.024518
Iterations [19280/25500], Train Loss: 0.024042, Validation Loss: 0.029160
Iterations [19290/25500], Train Loss: 0.022392, Validation Loss: 0.024853
Iterations [19300/25500], Train Loss: 0.017903, Validation Loss: 0.027000
Iterations [19310/25500], Train Loss: 0.028843, Validation Loss: 0.026111
Iterations [19320/25500], Train Loss: 0.020918, Validation Loss: 0.032648
Iterations [19330/25500], Train Loss: 0.023656, Validation Loss: 0.030861
Iterations [19340/25500], Train Loss: 0.018266, Validation Loss: 0.031973
Iterations [19350/25500], Train Loss: 0.020360, Validation Loss: 0.028342
Iterations [19360/25500], Train Loss: 0.018065, Validation Loss: 0.024341
Iterations [19370/25500], Train Loss: 0.019539, Validation Loss: 0.032719
Iterations [19380/25500], Train Loss: 0.032779, Validation Loss: 0.021231
Iterations [19390/25500], Train Loss: 0.024344, Validation Loss: 0.028362
Iterations [19400/25500], Train Loss: 0.020113, Validation Loss: 0.019238
Iterations [19410/25500], Train Loss: 0.019004, Validation Loss: 0.031221
Iterations [19420/25500], Train Loss: 0.020084, Validation Loss: 0.018994
Iterations [19430/25500], Train Loss: 0.015119, Validation Loss: 0.029438
Iterations [19440/25500], Train Loss: 0.028801, Validation Loss: 0.022297
Iterations [19450/25500], Train Loss: 0.022321, Validation Loss: 0.027350
Iterations [19460/25500], Train Loss: 0.015928, Validation Loss: 0.024228
Iterations [19470/25500], Train Loss: 0.017149, Validation Loss: 0.040785
Iterations [19480/25500], Train Loss: 0.019623, Validation Loss: 0.025689
Iterations [19490/25500], Train Loss: 0.017888, Validation Loss: 0.029987
Iterations [19500/25500], Train Loss: 0.022116, Validation Loss: 0.032655
Iterations [19510/25500], Train Loss: 0.019287, Validation Loss: 0.024072
Iterations [19520/25500], Train Loss: 0.020038, Validation Loss: 0.025621
Iterations [19530/25500], Train Loss: 0.022437, Validation Loss: 0.025342
Iterations [19540/25500], Train Loss: 0.022383, Validation Loss: 0.023211
Iterations [19550/25500], Train Loss: 0.014629, Validation Loss: 0.027318
Iterations [19560/25500], Train Loss: 0.020877, Validation Loss: 0.035050
Iterations [19570/25500], Train Loss: 0.016949, Validation Loss: 0.031055
Iterations [19580/25500], Train Loss: 0.025283, Validation Loss: 0.029028
Iterations [19590/25500], Train Loss: 0.027528, Validation Loss: 0.027313
Iterations [19600/25500], Train Loss: 0.028596, Validation Loss: 0.019360
Iterations [19610/25500], Train Loss: 0.016441, Validation Loss: 0.030061
Iterations [19620/25500], Train Loss: 0.025485, Validation Loss: 0.025579
Iterations [19630/25500], Train Loss: 0.019575, Validation Loss: 0.019713
Iterations [19640/25500], Train Loss: 0.020648, Validation Loss: 0.023736
Iterations [19650/25500], Train Loss: 0.022561, Validation Loss: 0.018892
Iterations [19660/25500], Train Loss: 0.020374, Validation Loss: 0.035009
Iterations [19670/25500], Train Loss: 0.013631, Validation Loss: 0.020883
Iterations [19680/25500], Train Loss: 0.016262, Validation Loss: 0.021536
Iterations [19690/25500], Train Loss: 0.011126, Validation Loss: 0.020262
Iterations [19700/25500], Train Loss: 0.023614, Validation Loss: 0.027012
Iterations [19710/25500], Train Loss: 0.019857, Validation Loss: 0.032333
Iterations [19720/25500], Train Loss: 0.022668, Validation Loss: 0.016037
Iterations [19730/25500], Train Loss: 0.021168, Validation Loss: 0.020227
Iterations [19740/25500], Train Loss: 0.017754, Validation Loss: 0.029530
Iterations [19750/25500], Train Loss: 0.021418, Validation Loss: 0.030299
Iterations [19760/25500], Train Loss: 0.015102, Validation Loss: 0.038075
Iterations [19770/25500], Train Loss: 0.015118, Validation Loss: 0.027784
Iterations [19780/25500], Train Loss: 0.024126, Validation Loss: 0.036427
Iterations [19790/25500], Train Loss: 0.033323, Validation Loss: 0.017320
Iterations [19800/25500], Train Loss: 0.021227, Validation Loss: 0.027461
Iterations [19810/25500], Train Loss: 0.018094, Validation Loss: 0.030638
Iterations [19820/25500], Train Loss: 0.020265, Validation Loss: 0.019127
Iterations [19830/25500], Train Loss: 0.017779, Validation Loss: 0.031187
Iterations [19840/25500], Train Loss: 0.024296, Validation Loss: 0.028273
Iterations [19850/25500], Train Loss: 0.019588, Validation Loss: 0.030692
Iterations [19860/25500], Train Loss: 0.023315, Validation Loss: 0.027719
Iterations [19870/25500], Train Loss: 0.018752, Validation Loss: 0.023289
Iterations [19880/25500], Train Loss: 0.019686, Validation Loss: 0.031729
Iterations [19890/25500], Train Loss: 0.028718, Validation Loss: 0.027019
Iterations [19900/25500], Train Loss: 0.013560, Validation Loss: 0.020062
Iterations [19910/25500], Train Loss: 0.018691, Validation Loss: 0.031186
Iterations [19920/25500], Train Loss: 0.015653, Validation Loss: 0.023061
Iterations [19930/25500], Train Loss: 0.018208, Validation Loss: 0.019296
Iterations [19940/25500], Train Loss: 0.015106, Validation Loss: 0.020583
Iterations [19950/25500], Train Loss: 0.019842, Validation Loss: 0.030562
Iterations [19960/25500], Train Loss: 0.014480, Validation Loss: 0.032464
Iterations [19970/25500], Train Loss: 0.015445, Validation Loss: 0.027577
Iterations [19980/25500], Train Loss: 0.022265, Validation Loss: 0.032250
Iterations [19990/25500], Train Loss: 0.016484, Validation Loss: 0.032879
Iterations [20000/25500], Train Loss: 0.014012, Validation Loss: 0.015237
Iterations [20010/25500], Train Loss: 0.018873, Validation Loss: 0.023119
Iterations [20020/25500], Train Loss: 0.020953, Validation Loss: 0.038619
Iterations [20030/25500], Train Loss: 0.028600, Validation Loss: 0.026380
Iterations [20040/25500], Train Loss: 0.016534, Validation Loss: 0.020988
Iterations [20050/25500], Train Loss: 0.017360, Validation Loss: 0.024170
Iterations [20060/25500], Train Loss: 0.027706, Validation Loss: 0.028242
Iterations [20070/25500], Train Loss: 0.027467, Validation Loss: 0.022007
Iterations [20080/25500], Train Loss: 0.015277, Validation Loss: 0.015992
Iterations [20090/25500], Train Loss: 0.015633, Validation Loss: 0.027144
Iterations [20100/25500], Train Loss: 0.017189, Validation Loss: 0.031979
Iterations [20110/25500], Train Loss: 0.015694, Validation Loss: 0.017037
Iterations [20120/25500], Train Loss: 0.020628, Validation Loss: 0.027936
Iterations [20130/25500], Train Loss: 0.028192, Validation Loss: 0.019395
Iterations [20140/25500], Train Loss: 0.021020, Validation Loss: 0.027235
Iterations [20150/25500], Train Loss: 0.025438, Validation Loss: 0.040389
Iterations [20160/25500], Train Loss: 0.024768, Validation Loss: 0.028128
Iterations [20170/25500], Train Loss: 0.022538, Validation Loss: 0.023171
Iterations [20180/25500], Train Loss: 0.021651, Validation Loss: 0.027920
Iterations [20190/25500], Train Loss: 0.017851, Validation Loss: 0.029742
Iterations [20200/25500], Train Loss: 0.017082, Validation Loss: 0.021021
Iterations [20210/25500], Train Loss: 0.020349, Validation Loss: 0.028527
Iterations [20220/25500], Train Loss: 0.011297, Validation Loss: 0.024030
Iterations [20230/25500], Train Loss: 0.015325, Validation Loss: 0.021255
Iterations [20240/25500], Train Loss: 0.021074, Validation Loss: 0.021716
Iterations [20250/25500], Train Loss: 0.016900, Validation Loss: 0.024862
Iterations [20260/25500], Train Loss: 0.014762, Validation Loss: 0.040135
Iterations [20270/25500], Train Loss: 0.018629, Validation Loss: 0.032088
Iterations [20280/25500], Train Loss: 0.021978, Validation Loss: 0.016295
Iterations [20290/25500], Train Loss: 0.014386, Validation Loss: 0.022091
Iterations [20300/25500], Train Loss: 0.020355, Validation Loss: 0.023255
Iterations [20310/25500], Train Loss: 0.023766, Validation Loss: 0.022539
Iterations [20320/25500], Train Loss: 0.018947, Validation Loss: 0.027570
Iterations [20330/25500], Train Loss: 0.022101, Validation Loss: 0.026319
Iterations [20340/25500], Train Loss: 0.020826, Validation Loss: 0.027440
Iterations [20350/25500], Train Loss: 0.016253, Validation Loss: 0.029626
Iterations [20360/25500], Train Loss: 0.020700, Validation Loss: 0.023445
Iterations [20370/25500], Train Loss: 0.025657, Validation Loss: 0.036055
Iterations [20380/25500], Train Loss: 0.021067, Validation Loss: 0.021659
Iterations [20390/25500], Train Loss: 0.013263, Validation Loss: 0.021014
Iterations [20400/25500], Train Loss: 0.016229, Validation Loss: 0.026924
Iterations [20410/25500], Train Loss: 0.024135, Validation Loss: 0.022210
Iterations [20420/25500], Train Loss: 0.017605, Validation Loss: 0.025696
Iterations [20430/25500], Train Loss: 0.014752, Validation Loss: 0.028441
Iterations [20440/25500], Train Loss: 0.016550, Validation Loss: 0.035803
Iterations [20450/25500], Train Loss: 0.007269, Validation Loss: 0.031718
Iterations [20460/25500], Train Loss: 0.020266, Validation Loss: 0.026510
Iterations [20470/25500], Train Loss: 0.013273, Validation Loss: 0.024908
Iterations [20480/25500], Train Loss: 0.015573, Validation Loss: 0.021922
Iterations [20490/25500], Train Loss: 0.016859, Validation Loss: 0.020251
Iterations [20500/25500], Train Loss: 0.024794, Validation Loss: 0.026949
Iterations [20510/25500], Train Loss: 0.018968, Validation Loss: 0.026535
Iterations [20520/25500], Train Loss: 0.018572, Validation Loss: 0.028773
Iterations [20530/25500], Train Loss: 0.018057, Validation Loss: 0.022669
Iterations [20540/25500], Train Loss: 0.017020, Validation Loss: 0.020701
Iterations [20550/25500], Train Loss: 0.012067, Validation Loss: 0.019815
Iterations [20560/25500], Train Loss: 0.035706, Validation Loss: 0.024170
Iterations [20570/25500], Train Loss: 0.025271, Validation Loss: 0.024619
Iterations [20580/25500], Train Loss: 0.016822, Validation Loss: 0.043852
Iterations [20590/25500], Train Loss: 0.022732, Validation Loss: 0.020908
Iterations [20600/25500], Train Loss: 0.022436, Validation Loss: 0.026766
Iterations [20610/25500], Train Loss: 0.013982, Validation Loss: 0.025542
Iterations [20620/25500], Train Loss: 0.018660, Validation Loss: 0.025776
Iterations [20630/25500], Train Loss: 0.017352, Validation Loss: 0.026279
Iterations [20640/25500], Train Loss: 0.019744, Validation Loss: 0.025222
Iterations [20650/25500], Train Loss: 0.019097, Validation Loss: 0.023203
Iterations [20660/25500], Train Loss: 0.016189, Validation Loss: 0.023416
Iterations [20670/25500], Train Loss: 0.013702, Validation Loss: 0.014532
Iterations [20680/25500], Train Loss: 0.013134, Validation Loss: 0.024581
Iterations [20690/25500], Train Loss: 0.017333, Validation Loss: 0.022234
Iterations [20700/25500], Train Loss: 0.016643, Validation Loss: 0.026186
Iterations [20710/25500], Train Loss: 0.017747, Validation Loss: 0.020902
Iterations [20720/25500], Train Loss: 0.017125, Validation Loss: 0.023482
Iterations [20730/25500], Train Loss: 0.018858, Validation Loss: 0.027927
Iterations [20740/25500], Train Loss: 0.017576, Validation Loss: 0.021463
Iterations [20750/25500], Train Loss: 0.018888, Validation Loss: 0.023238
Iterations [20760/25500], Train Loss: 0.016904, Validation Loss: 0.027440
Iterations [20770/25500], Train Loss: 0.021693, Validation Loss: 0.024659
Iterations [20780/25500], Train Loss: 0.018268, Validation Loss: 0.023090
Iterations [20790/25500], Train Loss: 0.010365, Validation Loss: 0.020382
Iterations [20800/25500], Train Loss: 0.018022, Validation Loss: 0.027899
Iterations [20810/25500], Train Loss: 0.020439, Validation Loss: 0.026777
Iterations [20820/25500], Train Loss: 0.011962, Validation Loss: 0.022853
Iterations [20830/25500], Train Loss: 0.017301, Validation Loss: 0.033897
Iterations [20840/25500], Train Loss: 0.016868, Validation Loss: 0.025925
Iterations [20850/25500], Train Loss: 0.012761, Validation Loss: 0.025909
Iterations [20860/25500], Train Loss: 0.017526, Validation Loss: 0.028361
Iterations [20870/25500], Train Loss: 0.018438, Validation Loss: 0.018269
Iterations [20880/25500], Train Loss: 0.018062, Validation Loss: 0.018694
Iterations [20890/25500], Train Loss: 0.014380, Validation Loss: 0.020359
Iterations [20900/25500], Train Loss: 0.014006, Validation Loss: 0.025016
Iterations [20910/25500], Train Loss: 0.012124, Validation Loss: 0.026770
Iterations [20920/25500], Train Loss: 0.029725, Validation Loss: 0.016546
Iterations [20930/25500], Train Loss: 0.013085, Validation Loss: 0.022215
Iterations [20940/25500], Train Loss: 0.014186, Validation Loss: 0.027174
Iterations [20950/25500], Train Loss: 0.012724, Validation Loss: 0.023052
Iterations [20960/25500], Train Loss: 0.021472, Validation Loss: 0.024609
Iterations [20970/25500], Train Loss: 0.016553, Validation Loss: 0.028257
Iterations [20980/25500], Train Loss: 0.020562, Validation Loss: 0.024454
Iterations [20990/25500], Train Loss: 0.013284, Validation Loss: 0.023705
Iterations [21000/25500], Train Loss: 0.015207, Validation Loss: 0.018306
Iterations [21010/25500], Train Loss: 0.017190, Validation Loss: 0.025088
Iterations [21020/25500], Train Loss: 0.017196, Validation Loss: 0.026757
Iterations [21030/25500], Train Loss: 0.016594, Validation Loss: 0.024889
Iterations [21040/25500], Train Loss: 0.021552, Validation Loss: 0.019657
Iterations [21050/25500], Train Loss: 0.017144, Validation Loss: 0.024800
Iterations [21060/25500], Train Loss: 0.021759, Validation Loss: 0.024327
Iterations [21070/25500], Train Loss: 0.013586, Validation Loss: 0.021314
Iterations [21080/25500], Train Loss: 0.013836, Validation Loss: 0.018410
Iterations [21090/25500], Train Loss: 0.016629, Validation Loss: 0.024064
Iterations [21100/25500], Train Loss: 0.020752, Validation Loss: 0.026806
Iterations [21110/25500], Train Loss: 0.010736, Validation Loss: 0.021232
Iterations [21120/25500], Train Loss: 0.020669, Validation Loss: 0.021344
Iterations [21130/25500], Train Loss: 0.016149, Validation Loss: 0.025365
Iterations [21140/25500], Train Loss: 0.018379, Validation Loss: 0.021942
Iterations [21150/25500], Train Loss: 0.013125, Validation Loss: 0.029349
Iterations [21160/25500], Train Loss: 0.022797, Validation Loss: 0.024075
Iterations [21170/25500], Train Loss: 0.016309, Validation Loss: 0.030815
Iterations [21180/25500], Train Loss: 0.020367, Validation Loss: 0.018543
Iterations [21190/25500], Train Loss: 0.016914, Validation Loss: 0.023614
Iterations [21200/25500], Train Loss: 0.014970, Validation Loss: 0.041028
Iterations [21210/25500], Train Loss: 0.017734, Validation Loss: 0.023382
Iterations [21220/25500], Train Loss: 0.014635, Validation Loss: 0.032781
Iterations [21230/25500], Train Loss: 0.012267, Validation Loss: 0.016584
Iterations [21240/25500], Train Loss: 0.014460, Validation Loss: 0.020870
Iterations [21250/25500], Train Loss: 0.013115, Validation Loss: 0.022417
Iterations [21260/25500], Train Loss: 0.017376, Validation Loss: 0.015506
Iterations [21270/25500], Train Loss: 0.020096, Validation Loss: 0.029446
Iterations [21280/25500], Train Loss: 0.014465, Validation Loss: 0.020469
Iterations [21290/25500], Train Loss: 0.015703, Validation Loss: 0.024687
Iterations [21300/25500], Train Loss: 0.026651, Validation Loss: 0.026803
Iterations [21310/25500], Train Loss: 0.020300, Validation Loss: 0.017936
Iterations [21320/25500], Train Loss: 0.016906, Validation Loss: 0.022083
Iterations [21330/25500], Train Loss: 0.016390, Validation Loss: 0.028918
Iterations [21340/25500], Train Loss: 0.027711, Validation Loss: 0.014698
Iterations [21350/25500], Train Loss: 0.019007, Validation Loss: 0.024769
Iterations [21360/25500], Train Loss: 0.021318, Validation Loss: 0.017744
Iterations [21370/25500], Train Loss: 0.012383, Validation Loss: 0.019347
Iterations [21380/25500], Train Loss: 0.015260, Validation Loss: 0.024542
Iterations [21390/25500], Train Loss: 0.017224, Validation Loss: 0.023279
Iterations [21400/25500], Train Loss: 0.023359, Validation Loss: 0.021988
Iterations [21410/25500], Train Loss: 0.025024, Validation Loss: 0.019484
Iterations [21420/25500], Train Loss: 0.012872, Validation Loss: 0.023785
Iterations [21430/25500], Train Loss: 0.022770, Validation Loss: 0.019014
Iterations [21440/25500], Train Loss: 0.018548, Validation Loss: 0.025263
Iterations [21450/25500], Train Loss: 0.020887, Validation Loss: 0.018739
Iterations [21460/25500], Train Loss: 0.014399, Validation Loss: 0.025644
Iterations [21470/25500], Train Loss: 0.010897, Validation Loss: 0.021918
Iterations [21480/25500], Train Loss: 0.012727, Validation Loss: 0.017483
Iterations [21490/25500], Train Loss: 0.011993, Validation Loss: 0.019174
Iterations [21500/25500], Train Loss: 0.021017, Validation Loss: 0.026073
Iterations [21510/25500], Train Loss: 0.011423, Validation Loss: 0.022513
Iterations [21520/25500], Train Loss: 0.011675, Validation Loss: 0.021115
Iterations [21530/25500], Train Loss: 0.016573, Validation Loss: 0.020790
Iterations [21540/25500], Train Loss: 0.014694, Validation Loss: 0.020458
Iterations [21550/25500], Train Loss: 0.022082, Validation Loss: 0.024159
Iterations [21560/25500], Train Loss: 0.010588, Validation Loss: 0.028759
Iterations [21570/25500], Train Loss: 0.013639, Validation Loss: 0.018496
Iterations [21580/25500], Train Loss: 0.013044, Validation Loss: 0.028147
Iterations [21590/25500], Train Loss: 0.007688, Validation Loss: 0.029017
Iterations [21600/25500], Train Loss: 0.017610, Validation Loss: 0.022749
Iterations [21610/25500], Train Loss: 0.013750, Validation Loss: 0.023038
Iterations [21620/25500], Train Loss: 0.018720, Validation Loss: 0.024156
Iterations [21630/25500], Train Loss: 0.020475, Validation Loss: 0.021627
Iterations [21640/25500], Train Loss: 0.018146, Validation Loss: 0.023841
Iterations [21650/25500], Train Loss: 0.020168, Validation Loss: 0.019776
Iterations [21660/25500], Train Loss: 0.021694, Validation Loss: 0.016223
Iterations [21670/25500], Train Loss: 0.012776, Validation Loss: 0.018956
Iterations [21680/25500], Train Loss: 0.013305, Validation Loss: 0.018566
Iterations [21690/25500], Train Loss: 0.016031, Validation Loss: 0.034414
Iterations [21700/25500], Train Loss: 0.022429, Validation Loss: 0.019114
Iterations [21710/25500], Train Loss: 0.012537, Validation Loss: 0.020875
Iterations [21720/25500], Train Loss: 0.017207, Validation Loss: 0.024031
Iterations [21730/25500], Train Loss: 0.015594, Validation Loss: 0.020472
Iterations [21740/25500], Train Loss: 0.015007, Validation Loss: 0.025368
Iterations [21750/25500], Train Loss: 0.023765, Validation Loss: 0.030897
Iterations [21760/25500], Train Loss: 0.024561, Validation Loss: 0.020265
Iterations [21770/25500], Train Loss: 0.014612, Validation Loss: 0.025316
Iterations [21780/25500], Train Loss: 0.019150, Validation Loss: 0.019183
Iterations [21790/25500], Train Loss: 0.021208, Validation Loss: 0.019783
Iterations [21800/25500], Train Loss: 0.013814, Validation Loss: 0.018242
Iterations [21810/25500], Train Loss: 0.012395, Validation Loss: 0.023760
Iterations [21820/25500], Train Loss: 0.017583, Validation Loss: 0.023681
Iterations [21830/25500], Train Loss: 0.016999, Validation Loss: 0.019209
Iterations [21840/25500], Train Loss: 0.014989, Validation Loss: 0.019821
Iterations [21850/25500], Train Loss: 0.019978, Validation Loss: 0.022456
Iterations [21860/25500], Train Loss: 0.018537, Validation Loss: 0.019941
Iterations [21870/25500], Train Loss: 0.009684, Validation Loss: 0.019204
Iterations [21880/25500], Train Loss: 0.018849, Validation Loss: 0.020417
Iterations [21890/25500], Train Loss: 0.009964, Validation Loss: 0.018898
Iterations [21900/25500], Train Loss: 0.016629, Validation Loss: 0.016486
Iterations [21910/25500], Train Loss: 0.013729, Validation Loss: 0.027467
Iterations [21920/25500], Train Loss: 0.013120, Validation Loss: 0.024699
Iterations [21930/25500], Train Loss: 0.017510, Validation Loss: 0.021063
Iterations [21940/25500], Train Loss: 0.021733, Validation Loss: 0.013922
Iterations [21950/25500], Train Loss: 0.015563, Validation Loss: 0.016084
Iterations [21960/25500], Train Loss: 0.022461, Validation Loss: 0.028609
Iterations [21970/25500], Train Loss: 0.018086, Validation Loss: 0.024924
Iterations [21980/25500], Train Loss: 0.011338, Validation Loss: 0.033545
Iterations [21990/25500], Train Loss: 0.017311, Validation Loss: 0.017332
Iterations [22000/25500], Train Loss: 0.018696, Validation Loss: 0.021056
Iterations [22010/25500], Train Loss: 0.023359, Validation Loss: 0.022739
Iterations [22020/25500], Train Loss: 0.013078, Validation Loss: 0.018519
Iterations [22030/25500], Train Loss: 0.011481, Validation Loss: 0.021398
Iterations [22040/25500], Train Loss: 0.009651, Validation Loss: 0.025172
Iterations [22050/25500], Train Loss: 0.020785, Validation Loss: 0.018996
Iterations [22060/25500], Train Loss: 0.008280, Validation Loss: 0.019768
Iterations [22070/25500], Train Loss: 0.014949, Validation Loss: 0.023615
Iterations [22080/25500], Train Loss: 0.015837, Validation Loss: 0.017604
Iterations [22090/25500], Train Loss: 0.022739, Validation Loss: 0.025655
Iterations [22100/25500], Train Loss: 0.015910, Validation Loss: 0.027950
Iterations [22110/25500], Train Loss: 0.015925, Validation Loss: 0.018299
Iterations [22120/25500], Train Loss: 0.010767, Validation Loss: 0.018920
Iterations [22130/25500], Train Loss: 0.020268, Validation Loss: 0.025223
Iterations [22140/25500], Train Loss: 0.013701, Validation Loss: 0.022900
Iterations [22150/25500], Train Loss: 0.008598, Validation Loss: 0.014920
Iterations [22160/25500], Train Loss: 0.009559, Validation Loss: 0.026338
Iterations [22170/25500], Train Loss: 0.014258, Validation Loss: 0.031418
Iterations [22180/25500], Train Loss: 0.007334, Validation Loss: 0.024643
Iterations [22190/25500], Train Loss: 0.016660, Validation Loss: 0.023473
Iterations [22200/25500], Train Loss: 0.017940, Validation Loss: 0.018960
Iterations [22210/25500], Train Loss: 0.012591, Validation Loss: 0.026905
Iterations [22220/25500], Train Loss: 0.012628, Validation Loss: 0.012186
Iterations [22230/25500], Train Loss: 0.020082, Validation Loss: 0.026761
Iterations [22240/25500], Train Loss: 0.012194, Validation Loss: 0.018009
Iterations [22250/25500], Train Loss: 0.017387, Validation Loss: 0.017541
Iterations [22260/25500], Train Loss: 0.013829, Validation Loss: 0.015523
Iterations [22270/25500], Train Loss: 0.016247, Validation Loss: 0.017519
Iterations [22280/25500], Train Loss: 0.018637, Validation Loss: 0.014732
Iterations [22290/25500], Train Loss: 0.022582, Validation Loss: 0.031449
Iterations [22300/25500], Train Loss: 0.016065, Validation Loss: 0.022847
Iterations [22310/25500], Train Loss: 0.016186, Validation Loss: 0.025276
Iterations [22320/25500], Train Loss: 0.013610, Validation Loss: 0.016682
Iterations [22330/25500], Train Loss: 0.012060, Validation Loss: 0.026552
Iterations [22340/25500], Train Loss: 0.015367, Validation Loss: 0.019435
Iterations [22350/25500], Train Loss: 0.012499, Validation Loss: 0.024100
Iterations [22360/25500], Train Loss: 0.014683, Validation Loss: 0.018386
Iterations [22370/25500], Train Loss: 0.015269, Validation Loss: 0.020674
Iterations [22380/25500], Train Loss: 0.012755, Validation Loss: 0.018704
Iterations [22390/25500], Train Loss: 0.019246, Validation Loss: 0.022415
Iterations [22400/25500], Train Loss: 0.011108, Validation Loss: 0.027865
Iterations [22410/25500], Train Loss: 0.017739, Validation Loss: 0.010418
Iterations [22420/25500], Train Loss: 0.021650, Validation Loss: 0.017376
Iterations [22430/25500], Train Loss: 0.016219, Validation Loss: 0.020594
Iterations [22440/25500], Train Loss: 0.018703, Validation Loss: 0.022403
Iterations [22450/25500], Train Loss: 0.012198, Validation Loss: 0.014309
Iterations [22460/25500], Train Loss: 0.017249, Validation Loss: 0.018777
Iterations [22470/25500], Train Loss: 0.018087, Validation Loss: 0.035264
Iterations [22480/25500], Train Loss: 0.010297, Validation Loss: 0.021265
Iterations [22490/25500], Train Loss: 0.014441, Validation Loss: 0.016565
Iterations [22500/25500], Train Loss: 0.013810, Validation Loss: 0.018599
Iterations [22510/25500], Train Loss: 0.017478, Validation Loss: 0.019498
Iterations [22520/25500], Train Loss: 0.018494, Validation Loss: 0.020016
Iterations [22530/25500], Train Loss: 0.015069, Validation Loss: 0.014216
Iterations [22540/25500], Train Loss: 0.011099, Validation Loss: 0.016636
Iterations [22550/25500], Train Loss: 0.016192, Validation Loss: 0.021430
Iterations [22560/25500], Train Loss: 0.015234, Validation Loss: 0.019681
Iterations [22570/25500], Train Loss: 0.016159, Validation Loss: 0.016331
Iterations [22580/25500], Train Loss: 0.016906, Validation Loss: 0.017773
Iterations [22590/25500], Train Loss: 0.011504, Validation Loss: 0.018470
Iterations [22600/25500], Train Loss: 0.022446, Validation Loss: 0.016253
Iterations [22610/25500], Train Loss: 0.012001, Validation Loss: 0.017393
Iterations [22620/25500], Train Loss: 0.021821, Validation Loss: 0.018269
Iterations [22630/25500], Train Loss: 0.013616, Validation Loss: 0.020756
Iterations [22640/25500], Train Loss: 0.011173, Validation Loss: 0.021235
Iterations [22650/25500], Train Loss: 0.014092, Validation Loss: 0.025571
Iterations [22660/25500], Train Loss: 0.019909, Validation Loss: 0.021617
Iterations [22670/25500], Train Loss: 0.009515, Validation Loss: 0.022799
Iterations [22680/25500], Train Loss: 0.021871, Validation Loss: 0.021432
Iterations [22690/25500], Train Loss: 0.014674, Validation Loss: 0.019442
Iterations [22700/25500], Train Loss: 0.016798, Validation Loss: 0.017614
Iterations [22710/25500], Train Loss: 0.007165, Validation Loss: 0.018958
Iterations [22720/25500], Train Loss: 0.015501, Validation Loss: 0.020458
Iterations [22730/25500], Train Loss: 0.009530, Validation Loss: 0.020571
Iterations [22740/25500], Train Loss: 0.018615, Validation Loss: 0.016104
Iterations [22750/25500], Train Loss: 0.020201, Validation Loss: 0.018663
Iterations [22760/25500], Train Loss: 0.012551, Validation Loss: 0.022970
Iterations [22770/25500], Train Loss: 0.018200, Validation Loss: 0.018695
Iterations [22780/25500], Train Loss: 0.011064, Validation Loss: 0.022551
Iterations [22790/25500], Train Loss: 0.018603, Validation Loss: 0.027008
Iterations [22800/25500], Train Loss: 0.015761, Validation Loss: 0.018646
Iterations [22810/25500], Train Loss: 0.008894, Validation Loss: 0.023827
Iterations [22820/25500], Train Loss: 0.008592, Validation Loss: 0.020762
Iterations [22830/25500], Train Loss: 0.012181, Validation Loss: 0.024829
Iterations [22840/25500], Train Loss: 0.013889, Validation Loss: 0.021969
Iterations [22850/25500], Train Loss: 0.014196, Validation Loss: 0.021193
Iterations [22860/25500], Train Loss: 0.010002, Validation Loss: 0.016840
Iterations [22870/25500], Train Loss: 0.011212, Validation Loss: 0.016312
Iterations [22880/25500], Train Loss: 0.018248, Validation Loss: 0.019040
Iterations [22890/25500], Train Loss: 0.016243, Validation Loss: 0.018185
Iterations [22900/25500], Train Loss: 0.012832, Validation Loss: 0.025594
Iterations [22910/25500], Train Loss: 0.009880, Validation Loss: 0.024885
Iterations [22920/25500], Train Loss: 0.017091, Validation Loss: 0.017044
Iterations [22930/25500], Train Loss: 0.016293, Validation Loss: 0.021085
Iterations [22940/25500], Train Loss: 0.008325, Validation Loss: 0.018311
Iterations [22950/25500], Train Loss: 0.014870, Validation Loss: 0.019929
Iterations [22960/25500], Train Loss: 0.011020, Validation Loss: 0.017849
Iterations [22970/25500], Train Loss: 0.013233, Validation Loss: 0.023719
Iterations [22980/25500], Train Loss: 0.012765, Validation Loss: 0.017598
Iterations [22990/25500], Train Loss: 0.014423, Validation Loss: 0.025117
Iterations [23000/25500], Train Loss: 0.009307, Validation Loss: 0.016753
Iterations [23010/25500], Train Loss: 0.011605, Validation Loss: 0.022202
Iterations [23020/25500], Train Loss: 0.012195, Validation Loss: 0.023975
Iterations [23030/25500], Train Loss: 0.013688, Validation Loss: 0.016538
Iterations [23040/25500], Train Loss: 0.013780, Validation Loss: 0.013946
Iterations [23050/25500], Train Loss: 0.011884, Validation Loss: 0.016929
Iterations [23060/25500], Train Loss: 0.015557, Validation Loss: 0.021414
Iterations [23070/25500], Train Loss: 0.007718, Validation Loss: 0.016514
Iterations [23080/25500], Train Loss: 0.014242, Validation Loss: 0.018925
Iterations [23090/25500], Train Loss: 0.015860, Validation Loss: 0.020474
Iterations [23100/25500], Train Loss: 0.010635, Validation Loss: 0.017883
Iterations [23110/25500], Train Loss: 0.010083, Validation Loss: 0.021401
Iterations [23120/25500], Train Loss: 0.009524, Validation Loss: 0.018513
Iterations [23130/25500], Train Loss: 0.013899, Validation Loss: 0.017224
Iterations [23140/25500], Train Loss: 0.012982, Validation Loss: 0.024725
Iterations [23150/25500], Train Loss: 0.014596, Validation Loss: 0.018512
Iterations [23160/25500], Train Loss: 0.016609, Validation Loss: 0.024496
Iterations [23170/25500], Train Loss: 0.010201, Validation Loss: 0.020344
Iterations [23180/25500], Train Loss: 0.008289, Validation Loss: 0.024023
Iterations [23190/25500], Train Loss: 0.015227, Validation Loss: 0.024979
Iterations [23200/25500], Train Loss: 0.009380, Validation Loss: 0.017520
Iterations [23210/25500], Train Loss: 0.012104, Validation Loss: 0.013496
Iterations [23220/25500], Train Loss: 0.013972, Validation Loss: 0.014731
Iterations [23230/25500], Train Loss: 0.013442, Validation Loss: 0.022058
Iterations [23240/25500], Train Loss: 0.011606, Validation Loss: 0.021776
Iterations [23250/25500], Train Loss: 0.009734, Validation Loss: 0.015320
Iterations [23260/25500], Train Loss: 0.010881, Validation Loss: 0.015058
Iterations [23270/25500], Train Loss: 0.014884, Validation Loss: 0.018322
Iterations [23280/25500], Train Loss: 0.009375, Validation Loss: 0.018293
Iterations [23290/25500], Train Loss: 0.015907, Validation Loss: 0.018004
Iterations [23300/25500], Train Loss: 0.015136, Validation Loss: 0.020225
Iterations [23310/25500], Train Loss: 0.008160, Validation Loss: 0.011343
Iterations [23320/25500], Train Loss: 0.016578, Validation Loss: 0.014592
Iterations [23330/25500], Train Loss: 0.010726, Validation Loss: 0.016082
Iterations [23340/25500], Train Loss: 0.019546, Validation Loss: 0.017394
Iterations [23350/25500], Train Loss: 0.010996, Validation Loss: 0.020423
Iterations [23360/25500], Train Loss: 0.011939, Validation Loss: 0.019640
Iterations [23370/25500], Train Loss: 0.012504, Validation Loss: 0.027022
Iterations [23380/25500], Train Loss: 0.016692, Validation Loss: 0.015409
Iterations [23390/25500], Train Loss: 0.010343, Validation Loss: 0.010487
Iterations [23400/25500], Train Loss: 0.008400, Validation Loss: 0.020263
Iterations [23410/25500], Train Loss: 0.011708, Validation Loss: 0.017399
Iterations [23420/25500], Train Loss: 0.012846, Validation Loss: 0.019068
Iterations [23430/25500], Train Loss: 0.018762, Validation Loss: 0.010949
Iterations [23440/25500], Train Loss: 0.011104, Validation Loss: 0.024185
Iterations [23450/25500], Train Loss: 0.011805, Validation Loss: 0.016835
Iterations [23460/25500], Train Loss: 0.013628, Validation Loss: 0.015251
Iterations [23470/25500], Train Loss: 0.009413, Validation Loss: 0.021996
Iterations [23480/25500], Train Loss: 0.015117, Validation Loss: 0.021147
Iterations [23490/25500], Train Loss: 0.010705, Validation Loss: 0.016078
Iterations [23500/25500], Train Loss: 0.015716, Validation Loss: 0.019848
Iterations [23510/25500], Train Loss: 0.009399, Validation Loss: 0.017745
Iterations [23520/25500], Train Loss: 0.008362, Validation Loss: 0.019707
Iterations [23530/25500], Train Loss: 0.011362, Validation Loss: 0.028789
Iterations [23540/25500], Train Loss: 0.011741, Validation Loss: 0.022278
Iterations [23550/25500], Train Loss: 0.007923, Validation Loss: 0.027168
Iterations [23560/25500], Train Loss: 0.012068, Validation Loss: 0.015818
Iterations [23570/25500], Train Loss: 0.012692, Validation Loss: 0.031593
Iterations [23580/25500], Train Loss: 0.008167, Validation Loss: 0.016516
Iterations [23590/25500], Train Loss: 0.018413, Validation Loss: 0.017617
Iterations [23600/25500], Train Loss: 0.012505, Validation Loss: 0.017309
Iterations [23610/25500], Train Loss: 0.011756, Validation Loss: 0.016199
Iterations [23620/25500], Train Loss: 0.030346, Validation Loss: 0.012021
Iterations [23630/25500], Train Loss: 0.014663, Validation Loss: 0.020405
Iterations [23640/25500], Train Loss: 0.010805, Validation Loss: 0.021739
Iterations [23650/25500], Train Loss: 0.013708, Validation Loss: 0.019680
Iterations [23660/25500], Train Loss: 0.008654, Validation Loss: 0.018100
Iterations [23670/25500], Train Loss: 0.014944, Validation Loss: 0.020835
Iterations [23680/25500], Train Loss: 0.007240, Validation Loss: 0.016025
Iterations [23690/25500], Train Loss: 0.010191, Validation Loss: 0.011974
Iterations [23700/25500], Train Loss: 0.011063, Validation Loss: 0.015022
Iterations [23710/25500], Train Loss: 0.013517, Validation Loss: 0.015126
Iterations [23720/25500], Train Loss: 0.009645, Validation Loss: 0.017837
Iterations [23730/25500], Train Loss: 0.012056, Validation Loss: 0.013319
Iterations [23740/25500], Train Loss: 0.012518, Validation Loss: 0.013919
Iterations [23750/25500], Train Loss: 0.012674, Validation Loss: 0.013918
Iterations [23760/25500], Train Loss: 0.008219, Validation Loss: 0.017080
Iterations [23770/25500], Train Loss: 0.008162, Validation Loss: 0.018904
Iterations [23780/25500], Train Loss: 0.008250, Validation Loss: 0.027107
Iterations [23790/25500], Train Loss: 0.012036, Validation Loss: 0.016991
Iterations [23800/25500], Train Loss: 0.009836, Validation Loss: 0.010921
Iterations [23810/25500], Train Loss: 0.005881, Validation Loss: 0.017493
Iterations [23820/25500], Train Loss: 0.010236, Validation Loss: 0.009509
Iterations [23830/25500], Train Loss: 0.011135, Validation Loss: 0.018449
Iterations [23840/25500], Train Loss: 0.008610, Validation Loss: 0.015991
Iterations [23850/25500], Train Loss: 0.008592, Validation Loss: 0.020916
Iterations [23860/25500], Train Loss: 0.010548, Validation Loss: 0.022013
Iterations [23870/25500], Train Loss: 0.007478, Validation Loss: 0.013394
Iterations [23880/25500], Train Loss: 0.013182, Validation Loss: 0.015571
Iterations [23890/25500], Train Loss: 0.015107, Validation Loss: 0.025293
Iterations [23900/25500], Train Loss: 0.009941, Validation Loss: 0.019675
Iterations [23910/25500], Train Loss: 0.011349, Validation Loss: 0.013950
Iterations [23920/25500], Train Loss: 0.010253, Validation Loss: 0.016729
Iterations [23930/25500], Train Loss: 0.009299, Validation Loss: 0.027701
Iterations [23940/25500], Train Loss: 0.019585, Validation Loss: 0.009782
Iterations [23950/25500], Train Loss: 0.013008, Validation Loss: 0.018730
Iterations [23960/25500], Train Loss: 0.011191, Validation Loss: 0.021094
Iterations [23970/25500], Train Loss: 0.007856, Validation Loss: 0.023372
Iterations [23980/25500], Train Loss: 0.010241, Validation Loss: 0.018377
Iterations [23990/25500], Train Loss: 0.014608, Validation Loss: 0.024109
Iterations [24000/25500], Train Loss: 0.012506, Validation Loss: 0.014000
Iterations [24010/25500], Train Loss: 0.006668, Validation Loss: 0.013503
Iterations [24020/25500], Train Loss: 0.006983, Validation Loss: 0.015885
Iterations [24030/25500], Train Loss: 0.013869, Validation Loss: 0.019565
Iterations [24040/25500], Train Loss: 0.010843, Validation Loss: 0.024883
Iterations [24050/25500], Train Loss: 0.011359, Validation Loss: 0.020994
Iterations [24060/25500], Train Loss: 0.012042, Validation Loss: 0.018505
Iterations [24070/25500], Train Loss: 0.009393, Validation Loss: 0.018889
Iterations [24080/25500], Train Loss: 0.017549, Validation Loss: 0.016021
Iterations [24090/25500], Train Loss: 0.017326, Validation Loss: 0.016518
Iterations [24100/25500], Train Loss: 0.006275, Validation Loss: 0.013599
Iterations [24110/25500], Train Loss: 0.009289, Validation Loss: 0.013535
Iterations [24120/25500], Train Loss: 0.013425, Validation Loss: 0.022212
Iterations [24130/25500], Train Loss: 0.010824, Validation Loss: 0.009482
Iterations [24140/25500], Train Loss: 0.016707, Validation Loss: 0.012350
Iterations [24150/25500], Train Loss: 0.014786, Validation Loss: 0.020358
Iterations [24160/25500], Train Loss: 0.010125, Validation Loss: 0.013286
Iterations [24170/25500], Train Loss: 0.013019, Validation Loss: 0.012828
Iterations [24180/25500], Train Loss: 0.008343, Validation Loss: 0.017361
Iterations [24190/25500], Train Loss: 0.013348, Validation Loss: 0.020682
Iterations [24200/25500], Train Loss: 0.009500, Validation Loss: 0.023947
Iterations [24210/25500], Train Loss: 0.011496, Validation Loss: 0.024823
Iterations [24220/25500], Train Loss: 0.011538, Validation Loss: 0.021149
Iterations [24230/25500], Train Loss: 0.009123, Validation Loss: 0.015383
Iterations [24240/25500], Train Loss: 0.009276, Validation Loss: 0.013256
Iterations [24250/25500], Train Loss: 0.011989, Validation Loss: 0.021671
Iterations [24260/25500], Train Loss: 0.009122, Validation Loss: 0.012675
Iterations [24270/25500], Train Loss: 0.011683, Validation Loss: 0.023558
Iterations [24280/25500], Train Loss: 0.013942, Validation Loss: 0.018845
Iterations [24290/25500], Train Loss: 0.007847, Validation Loss: 0.019116
Iterations [24300/25500], Train Loss: 0.012213, Validation Loss: 0.017814
Iterations [24310/25500], Train Loss: 0.014351, Validation Loss: 0.018986
Iterations [24320/25500], Train Loss: 0.010043, Validation Loss: 0.015164
Iterations [24330/25500], Train Loss: 0.012202, Validation Loss: 0.015983
Iterations [24340/25500], Train Loss: 0.010360, Validation Loss: 0.014861
Iterations [24350/25500], Train Loss: 0.009049, Validation Loss: 0.018202
Iterations [24360/25500], Train Loss: 0.019733, Validation Loss: 0.012758
Iterations [24370/25500], Train Loss: 0.006954, Validation Loss: 0.015852
Iterations [24380/25500], Train Loss: 0.007258, Validation Loss: 0.022897
Iterations [24390/25500], Train Loss: 0.010233, Validation Loss: 0.017233
Iterations [24400/25500], Train Loss: 0.015682, Validation Loss: 0.009194
Iterations [24410/25500], Train Loss: 0.006154, Validation Loss: 0.024093
Iterations [24420/25500], Train Loss: 0.009928, Validation Loss: 0.020431
Iterations [24430/25500], Train Loss: 0.008542, Validation Loss: 0.015082
Iterations [24440/25500], Train Loss: 0.007985, Validation Loss: 0.016602
Iterations [24450/25500], Train Loss: 0.013244, Validation Loss: 0.019387
Iterations [24460/25500], Train Loss: 0.008554, Validation Loss: 0.015206
Iterations [24470/25500], Train Loss: 0.008134, Validation Loss: 0.014326
Iterations [24480/25500], Train Loss: 0.011898, Validation Loss: 0.014110
Iterations [24490/25500], Train Loss: 0.014970, Validation Loss: 0.019699
Iterations [24500/25500], Train Loss: 0.014403, Validation Loss: 0.023441
Iterations [24510/25500], Train Loss: 0.007776, Validation Loss: 0.016230
Iterations [24520/25500], Train Loss: 0.011174, Validation Loss: 0.017686
Iterations [24530/25500], Train Loss: 0.011947, Validation Loss: 0.013863
Iterations [24540/25500], Train Loss: 0.010271, Validation Loss: 0.013636
Iterations [24550/25500], Train Loss: 0.008787, Validation Loss: 0.013587
Iterations [24560/25500], Train Loss: 0.009672, Validation Loss: 0.019532
Iterations [24570/25500], Train Loss: 0.006785, Validation Loss: 0.017099
Iterations [24580/25500], Train Loss: 0.014470, Validation Loss: 0.015607
Iterations [24590/25500], Train Loss: 0.009241, Validation Loss: 0.020003
Iterations [24600/25500], Train Loss: 0.010836, Validation Loss: 0.018949
Iterations [24610/25500], Train Loss: 0.010299, Validation Loss: 0.011628
Iterations [24620/25500], Train Loss: 0.011371, Validation Loss: 0.015435
Iterations [24630/25500], Train Loss: 0.017496, Validation Loss: 0.015247
Iterations [24640/25500], Train Loss: 0.011098, Validation Loss: 0.012459
Iterations [24650/25500], Train Loss: 0.013296, Validation Loss: 0.026315
Iterations [24660/25500], Train Loss: 0.011923, Validation Loss: 0.015024
Iterations [24670/25500], Train Loss: 0.011501, Validation Loss: 0.017128
Iterations [24680/25500], Train Loss: 0.010205, Validation Loss: 0.017987
Iterations [24690/25500], Train Loss: 0.015001, Validation Loss: 0.016197
Iterations [24700/25500], Train Loss: 0.009347, Validation Loss: 0.014447
Iterations [24710/25500], Train Loss: 0.007308, Validation Loss: 0.012578
Iterations [24720/25500], Train Loss: 0.009688, Validation Loss: 0.014648
Iterations [24730/25500], Train Loss: 0.006738, Validation Loss: 0.027598
Iterations [24740/25500], Train Loss: 0.009690, Validation Loss: 0.017626
Iterations [24750/25500], Train Loss: 0.006362, Validation Loss: 0.016515
Iterations [24760/25500], Train Loss: 0.011470, Validation Loss: 0.015044
Iterations [24770/25500], Train Loss: 0.020148, Validation Loss: 0.014441
Iterations [24780/25500], Train Loss: 0.009712, Validation Loss: 0.018448
Iterations [24790/25500], Train Loss: 0.011623, Validation Loss: 0.011821
Iterations [24800/25500], Train Loss: 0.010659, Validation Loss: 0.016178
Iterations [24810/25500], Train Loss: 0.013461, Validation Loss: 0.016057
Iterations [24820/25500], Train Loss: 0.004791, Validation Loss: 0.017790
Iterations [24830/25500], Train Loss: 0.014658, Validation Loss: 0.022043
Iterations [24840/25500], Train Loss: 0.006716, Validation Loss: 0.019646
Iterations [24850/25500], Train Loss: 0.008515, Validation Loss: 0.021535
Iterations [24860/25500], Train Loss: 0.006789, Validation Loss: 0.024375
Iterations [24870/25500], Train Loss: 0.010068, Validation Loss: 0.013303
Iterations [24880/25500], Train Loss: 0.006040, Validation Loss: 0.018164
Iterations [24890/25500], Train Loss: 0.010634, Validation Loss: 0.016160
Iterations [24900/25500], Train Loss: 0.011770, Validation Loss: 0.023502
Iterations [24910/25500], Train Loss: 0.014220, Validation Loss: 0.023627
Iterations [24920/25500], Train Loss: 0.010419, Validation Loss: 0.016067
Iterations [24930/25500], Train Loss: 0.007587, Validation Loss: 0.016835
Iterations [24940/25500], Train Loss: 0.009151, Validation Loss: 0.015206
Iterations [24950/25500], Train Loss: 0.007632, Validation Loss: 0.014163
Iterations [24960/25500], Train Loss: 0.006720, Validation Loss: 0.015057
Iterations [24970/25500], Train Loss: 0.009476, Validation Loss: 0.010502
Iterations [24980/25500], Train Loss: 0.011779, Validation Loss: 0.014088
Iterations [24990/25500], Train Loss: 0.012415, Validation Loss: 0.015795
Iterations [25000/25500], Train Loss: 0.009718, Validation Loss: 0.011338
Iterations [25010/25500], Train Loss: 0.011824, Validation Loss: 0.023401
Iterations [25020/25500], Train Loss: 0.009157, Validation Loss: 0.015604
Iterations [25030/25500], Train Loss: 0.009526, Validation Loss: 0.012318
Iterations [25040/25500], Train Loss: 0.008126, Validation Loss: 0.011418
Iterations [25050/25500], Train Loss: 0.014432, Validation Loss: 0.023070
Iterations [25060/25500], Train Loss: 0.013515, Validation Loss: 0.019254
Iterations [25070/25500], Train Loss: 0.011083, Validation Loss: 0.020534
Iterations [25080/25500], Train Loss: 0.011996, Validation Loss: 0.026484
Iterations [25090/25500], Train Loss: 0.010461, Validation Loss: 0.015772
Iterations [25100/25500], Train Loss: 0.011242, Validation Loss: 0.013159
Iterations [25110/25500], Train Loss: 0.008853, Validation Loss: 0.019137
Iterations [25120/25500], Train Loss: 0.009991, Validation Loss: 0.014217
Iterations [25130/25500], Train Loss: 0.007616, Validation Loss: 0.012467
Iterations [25140/25500], Train Loss: 0.014831, Validation Loss: 0.025618
Iterations [25150/25500], Train Loss: 0.011678, Validation Loss: 0.024978
Iterations [25160/25500], Train Loss: 0.007885, Validation Loss: 0.015911
Iterations [25170/25500], Train Loss: 0.007964, Validation Loss: 0.013933
Iterations [25180/25500], Train Loss: 0.005313, Validation Loss: 0.013119
Iterations [25190/25500], Train Loss: 0.013744, Validation Loss: 0.025014
Iterations [25200/25500], Train Loss: 0.011653, Validation Loss: 0.008587
Iterations [25210/25500], Train Loss: 0.006781, Validation Loss: 0.026652
Iterations [25220/25500], Train Loss: 0.012216, Validation Loss: 0.016927
Iterations [25230/25500], Train Loss: 0.010071, Validation Loss: 0.017708
Iterations [25240/25500], Train Loss: 0.013638, Validation Loss: 0.020247
Iterations [25250/25500], Train Loss: 0.011440, Validation Loss: 0.016016
Iterations [25260/25500], Train Loss: 0.016486, Validation Loss: 0.012984
Iterations [25270/25500], Train Loss: 0.012493, Validation Loss: 0.016814
Iterations [25280/25500], Train Loss: 0.010336, Validation Loss: 0.015952
Iterations [25290/25500], Train Loss: 0.018538, Validation Loss: 0.017534
Iterations [25300/25500], Train Loss: 0.006278, Validation Loss: 0.015485
Iterations [25310/25500], Train Loss: 0.009796, Validation Loss: 0.012069
Iterations [25320/25500], Train Loss: 0.007067, Validation Loss: 0.015352
Iterations [25330/25500], Train Loss: 0.005292, Validation Loss: 0.019274
Iterations [25340/25500], Train Loss: 0.009683, Validation Loss: 0.011814
Iterations [25350/25500], Train Loss: 0.011167, Validation Loss: 0.020142
Iterations [25360/25500], Train Loss: 0.005799, Validation Loss: 0.017854
Iterations [25370/25500], Train Loss: 0.009577, Validation Loss: 0.021457
Iterations [25380/25500], Train Loss: 0.015535, Validation Loss: 0.017378
Iterations [25390/25500], Train Loss: 0.007805, Validation Loss: 0.014459
Iterations [25400/25500], Train Loss: 0.011929, Validation Loss: 0.018661
Iterations [25410/25500], Train Loss: 0.006285, Validation Loss: 0.015576
Iterations [25420/25500], Train Loss: 0.013240, Validation Loss: 0.015431
Iterations [25430/25500], Train Loss: 0.011346, Validation Loss: 0.015610
Iterations [25440/25500], Train Loss: 0.006841, Validation Loss: 0.012511
Iterations [25450/25500], Train Loss: 0.011641, Validation Loss: 0.014708
Iterations [25460/25500], Train Loss: 0.005853, Validation Loss: 0.011573
Iterations [25470/25500], Train Loss: 0.014468, Validation Loss: 0.013873
Iterations [25480/25500], Train Loss: 0.009667, Validation Loss: 0.012606
Iterations [25490/25500], Train Loss: 0.006148, Validation Loss: 0.024827
3. Model Evaluation
3.1 Test dataset evaluation - run model on test dataset, see the loss, and visualize


in_channel = 3
out_channel = 1

batch_size = 8 # batch size
iterations = int(test_size / batch_size + 0.5)

model_path = base_path + “/UNet_50epochs_16batch_5e-3lr_0.995lrd.pt”

device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”)

model = UNet(in_channel, out_channel)
if os.path.exists(model_path):
model.load_state_dict(torch.load(model_path))

# Move models to GPU if CUDA is available.
model.to(device)

# Define the loss function.
criterion = DiceLoss()

X, y = sample_dataset_minibatch(test_imgs, test_labels, batch_size)
tensor_X, tensor_y = torch.from_numpy(X).float().to(device), torch.from_numpy(y).long().to(device)
# print("X size: “, X.size())

outputs = model(tensor_X)

loss = criterion(outputs, tensor_y)
print(“Loss: “, loss.item())
print()
print(”%15s, %10s, %15s”%(“Input Images”, “Labels”, “Model Outputs”))
# visualization
ori_imgs = np.transpose(X, (0,2,3,1))
ori_labels = np.squeeze(np.transpose(y, (0,2,3,1)))
model_outputs = np.squeeze(np.transpose(outputs.cpu().detach().numpy(), (0,2,3,1)))
for i in range(batch_size):
plt.subplot(1,3,1)
plt.imshow(ori_imgs[i])

plt.subplot(1,3,2)
plt.imshow(ori_labels[i])

plt.subplot(1,3,3)
plt.imshow(model_outputs[i])

plt.figure()

plt.show()


Loss: 0.0058106184005737305

Input Images, Labels, Model Outputs








<Figure size 432x288 with 0 Axes>
3.2 Visualize the training loss and validation loss of training process


# Plot the training processes
import matplotlib.pyplot as plt

def plot(x, y, x_label, y_label, title):
# plot x and y
plt.plot(x, y)
plt.xlabel(x_label)
plt.ylabel(y_label)
plt.title(title)
plt.show()

iters = []
train_losses = []
val_losses = []
with open(base_path + ‘training_outputs.txt’, ‘r’) as f:
for line in f.readlines():
words = line.split()
iters.append(int(words[1].split(‘/’)[0][1:]))
train_losses.append(float(words[4][:-1]))
val_losses.append(float(words[-1]))

plot(iters, train_losses, “Iterations”, “Train Loss”, “Training Loss”)
plot(iters, val_losses, “Iterations”, “Validation Loss”, “Validation Loss”)



4. Testing using real-life videos
4.1 Load video and visualize as plot


import pylab
import imageio

video1 = base_path + “Real_Life_Video_1.mp4”

video = imageio.get_reader(video1, ‘ffmpeg’)
total_frames = video.get_length()
frame_shape = video.get_data(0).shape
fps = video.get_meta_data()[‘fps’]

print(“There are total {} frames in the video”.format(total_frames))
print(“Every frame’s size is {}”.format(frame_shape))
print(“FPS of the video is {}”.format(fps))
print()
# visualize frames in the video
num_frame = 10
image = video.get_data(num_frame)
fig = pylab.figure()
fig.suptitle(‘image #{}’.format(num_frame), fontsize=20)
pylab.imshow(image)
pylab.show()

There are total 1107 frames in the video
Every frame’s size is (1080, 1920, 3)
FPS of the video is 29.83


4.2 Resize every frames of video to model input size


new_size = 224
data = np.stack([np.asarray(Image.fromarray(current_data).resize((new_size, new_size), Image.NEAREST))
for current_data in tqdm(video)])


plt.imshow(data[10])

plt.show()

100%|██████████| 1107/1107 [00:11<00:00, 99.21it/s]

4.3 Feed every frame to the model


in_channel = 3
out_channel = 1

batch_size = 8
iterations = int(total_frames / batch_size + 0.5)

model_path = base_path + “/UNet_50epochs_16batch_5e-3lr_0.995lrd.pt”

device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”)

model = UNet(in_channel, out_channel)
if os.path.exists(model_path):
model.load_state_dict(torch.load(model_path))

# Move models to GPU if CUDA is available.
model.to(device)

output_file = imageio.get_writer(base_path + “Real_Life_Video_1_output.mp4”, fps=fps)

for i in range(iterations):
labelled_imgs = []
# Feed the images to the model and generate lanes
if i == iterations - 1:
X = data[ibatch_size:]
else:
X = data[ibatch_size:(i+1)*batch_size]
X = np.transpose(X,(0,3,1,2))
tensor_X = torch.from_numpy(X).float().to(device)

outputs = model(tensor_X)

ori_imgs = np.transpose(X, (0,2,3,1))
model_outputs = np.squeeze(np.transpose(outputs.cpu().detach().numpy(), (0,2,3,1)))
# visualization
for i in range(batch_size):
img = ori_imgs[i]
output = model_outputs[i]

plt.subplot(1,4,1)
plt.imshow(img)

plt.subplot(1,4,2)
plt.imshow(output)

plt.subplot(1,4,3)
plt.imshow(img)
plt.imshow(output, alpha=0.3)

# Process the images to denoise
output[:100,…] = 0
kernel = kernel = np.ones((10,10), np.uint8)
erode = cv2.erode(output, kernel, iterations=1)
dilate_erode = cv2.dilate(erode, kernel, iterations=1)

plt.subplot(1,4,4)
plt.imshow(img)
plt.imshow(dilate_erode, alpha=0.3)

# Generate fake R & B color dimensions, stack with G
lanes = np.expand_dims(dilate_erode, axis=2).astype(np.uint8)
blanks = np.zeros_like(lanes).astype(np.uint8)
lane_drawn = np.dstack((blanks, lanes, blanks))
# combine original images and output from the model
labelled_img = cv2.addWeighted(img, 1, lane_drawn, 1, 1)

labelled_imgs.append(labelled_img)

plt.figure()
plt.show()

# # Resize to video size
# print(frame_shape[:2])
# lane_drawn_frames = np.stack([np.asarray(Image.fromarray(current_data).resize(frame_shape[:2], Image.NEAREST))
# for current_data in tqdm(labelled_imgs)])

# write to the video
for frame in labelled_imgs:
output_file.append_data(frame)

output_file.close()”

i want like this
but only for images like previous code