In [1]:
INPUT_DIR = '../../input/nodules/'
OUTPUT_DIR = '../../output/lung-cancer/03/'
IMAGE_DIMS = (50,50,50,1)
In [3]:
%matplotlib inline
import numpy as np
import pandas as pd
import h5py
import matplotlib.pyplot as plt
import sklearn
import os
import glob
from modules.logging import logger
import modules.utils as utils
from modules.utils import Timer
import modules.logging
import modules.cnn as cnn
import modules.ctscan as ctscan
In [4]:
utils.mkdirs(OUTPUT_DIR, recreate=True)
modules.logging.setup_file_logger(OUTPUT_DIR + 'out.log')
logger.info('Dir ' + OUTPUT_DIR + ' created')
In [ ]:
logger.info('Prepare CNN for training')
network = cnn.net_nodule3d_swethasubramanian(IMAGE_DIMS)
model = cnn.prepare_cnn_model(network, OUTPUT_DIR, model_file=None)
In [ ]:
dataset_path = INPUT_DIR + 'nodules-train.h5'
with h5py.File(dataset_path, 'r') as train_hdf5:
X = train_hdf5['X']
Y = train_hdf5['Y']
logger.info('X shape ' + str(X.shape))
logger.info('Y shape ' + str(Y.shape))
dataset_path = INPUT_DIR + 'nodules-validate.h5'
with h5py.File(dataset_path, 'r') as validate_hdf5:
X_validate = validate_hdf5['X']
Y_validate = validate_hdf5['Y']
logger.info('X_validate shape ' + str(X_validate.shape))
logger.info('Y_validate shape ' + str(Y_validate.shape))
logger.info('Starting CNN training...')
model.fit(X, Y,
validation_set=(X_validate, Y_validate),
shuffle=True,
batch_size=96,
n_epoch=100,
show_metric=True,
snapshot_epoch=True,
run_id='nodule_classifier')
model.save(OUTPUT_DIR + "nodule-classifier.tfl")
logger.info("Network trained and saved as nodule-classifier.tfl!")
In [ ]:
logger.info('Evaluate dataset')
evaluate_dataset(OUTPUT_DIR + 'nodules-test.h5', model, batch_size=12, confusion_matrix=True)