[go: nahoru, domu]

Skip to content

Commit

Permalink
Changes to run SJ jet training
Browse files Browse the repository at this point in the history
  • Loading branch information
watson-ij committed Dec 11, 2017
1 parent 49a03ac commit 7ad07ce
Show file tree
Hide file tree
Showing 18 changed files with 122 additions and 83 deletions.
17 changes: 9 additions & 8 deletions SJ-Keras/Proj-ChannelImportance/training.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from __future__ import division
from __future__ import print_function

import sys.path
import sys
import os.path

import matplotlib
Expand All @@ -21,7 +21,7 @@

import keras.backend as K

from pipeline import DataLodaer
from pipeline import DataLoader

sys.path.append("..")
from keras4jet.models.image.resnet import build_a_model
Expand All @@ -40,7 +40,7 @@ def main():
parser.add_argument(
'--log_dir', type=str,
default='./logs/{name}-{date}'.format(
name="{name}", date=datetime.today().strftime("%Y-%m-%d_%H-%M-%S")),
name="name", date=datetime.today().strftime("%Y-%m-%d_%H-%M-%S")))

parser.add_argument("--num_epochs", type=int, default=10)
parser.add_argument("--num_gpus", type=int, default=len(get_available_gpus()))
Expand All @@ -59,18 +59,19 @@ def main():

args = parser.parse_args()

data_dir = "../Data/FastSim_pt_100_500"
data_dir = "../../SJ-JetImage/images33x33/"
if args.train_data == "dijet":
train_data = os.path.join(data_dir, "")
elif args.train_data == "zjet":
train_data = os.path.join(data_dir, "")
else:
raise ValueError("")

log_dir = get_log_dir(
path=args.log_dir.format(name=args.channel),
creation=True)

logger = Logger(dpath=log_dir.path, "WRITE")
logger = Logger(dpath=log_dir.path, mode="WRITE")
logger.get_args(args)
logger["train_data"] = train_data
logger["val_zjet_data"] = val_dijet_data
Expand Down Expand Up @@ -99,7 +100,7 @@ def main():
cyclic=True)

# build a model
_model = build_a_model(input_shape
_model = build_a_model(input_shape)
model = multi_gpu_model(_model, gpus=args.num_gpus)


Expand Down Expand Up @@ -187,14 +188,14 @@ def main():
x="step",
ys=[(tr_acc_, "Training Acc on {}"),
("val_acc_dijet", "Validation on Dijet"),
("val_acc_zjet", "Validation on Z+jet")]
("val_acc_zjet", "Validation on Z+jet")],
title="Accuracy", xaxis="Step", yaxis="Accuracy")

meter.prepare(
x="step",
ys=[(tr_loss_name, "Training Loss os {}"),
("val_acc_dijet", "Validation Loss on Dijet"),
("val_acc_zjet", "Validation Loss on Z+jet")]
("val_acc_zjet", "Validation Loss on Z+jet")],
title="Loss", xaxis="Step", yaxis="Accuracy")

meter.finish()
Expand Down

This file was deleted.

12 changes: 6 additions & 6 deletions SJ-Keras/Proj-JetImage/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
from __future__ import division
from __future__ import print_function

import models.vggnet
import models.resnet
import models.densenet
import models.seresnet
import models.sedensnet
# import models.image.vggnet
# import models.resnet
# import models.densenet
# import models.seresnet
# import models.sedensnet

import models.capsnet
# import models.capsnet

__all__ = []

Expand Down
3 changes: 3 additions & 0 deletions SJ-Keras/Proj-JetImage/pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ def __init__(self, path, batch_size, cyclic, image_shape=(3, 33, 33)):

self.root_file = ROOT.TFile(path, "READ")
self.tree = self.root_file.Get("jet")
if self.tree == ROOT.MakeNullPointer():
print("ERROR:", self.root_file, "contains no 'jet' tree")
exit(1)

self._start = 0

Expand Down
50 changes: 29 additions & 21 deletions SJ-Keras/Proj-JetImage/training.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,10 @@

import keras.backend as K

from pipeline import DataLodaer

from models import build_a_model
from pipeline import DataLoader

sys.path.append("..")
from keras4jet.models import build_a_model
from keras4jet.meters import Meter
from keras4jet.utils import (
get_log_dir,
Expand All @@ -37,14 +36,18 @@ def main():
parser = argparse.ArgumentParser()

parser.add_argument("--train_data", type=str, default="dijet")
'--log_dir', type=str,
default='./logs/{name}-{date}'.format(
name="{name}", date=datetime.today().strftime("%Y-%m-%d_%H-%M-%S")),
parser.add_argument("--directory", type=str, default="../../SJ-JetImage/image33x33/")
parser.add_argument("--model", type=str, default="resnet")
parser.add_argument('--log_dir', type=str,
default='./logs/{name}-{date}'.format(
name="{name}",
date=datetime.today().strftime("%Y-%m-%d_%H-%M-%S")))

parser.add_argument("--num_epochs", type=int, default=10)
parser.add_argument("--num_gpus", type=int, default=len(get_available_gpus()))
parser.add_argument("--train_batch_size", type=int, default=500)
parser.add_argument("--val_batch_size", type=int, default=500)
parser.add_argument("--multi-gpu", default=False, action='store_true', dest='multi_gpu')

# Hyperparameter
parser.add_argument("--lr", type=float, default=0.001)
Expand All @@ -56,39 +59,40 @@ def main():
args = parser.parse_args()

if args.train_data == "dijet":
train_data = "../data/FastSim/dijet/training_dijet_466554_prep.root"
val_dijet_data = "../data/FastSim/dijet/test_dijet_after_dijet_186880_prep.root"
val_zjet_data = "../data/FastSim/dijet/test_zjet_after_dijet_176773_prep.root"
train_data = args.directory+"/dijet_train.root"
val_dijet_data = args.directory+"/dijet_test_after_dijet.root"
val_zjet_data = args.directory+"/z_jet_test_after_dijet.root"
elif args.train_data == "zjet":
train_data = "../data/FastSim/zjet/training_zjet_440168_prep.root"
val_dijet_data = "../data/FastSim/zjet/test_dijet_after_zjet_186880_prep.root"
val_zjet_data = "../data/FastSim/zjet/test_zjet_after_zjet_176773_prep.root"
train_data = args.directory+"/z_jet_train.root"
val_dijet_data = args.directory+"/dijet_test_after_zjet.root"
val_zjet_data = args.directory+"/z_jet_test_after_zjet.root"
else:
raise ValueError("")

if '{name}' in args.log_dir: args.log_dir = args.log_dir.format(name=args.model)
log_dir = get_log_dir(path=args.log_dir, creation=True)

logger = Logger(dpath=log_dir.path, "WRITE")
logger = Logger(dpath=log_dir.path, mode="WRITE")
logger.get_args(args)
logger["train_data"] = train_data
logger["val_zjet_data"] = val_dijet_data
logger["val_zjet_data"] = val_zjet_data
logger["val_dijet_data"] = val_dijet_data

# data loader
train_loader = DataLodaer(
train_loader = DataLoader(
path=train_data,
batch_size=args.train_batch_size,
cyclic=False)

steps_per_epoch = np.ceil( len(train_loader) / train_loader.batch_size ).astype(int)
total_step = args.num_epochs * steps_per_epoch

val_dijet_loader = DataLodaer(
val_dijet_loader = DataLoader(
path=val_dijet_data,
batch_size=args.val_batch_size,
cyclic=True)

val_zjet_loader = DataLodaer(
val_zjet_loader = DataLoader(
path=val_zjet_data,
batch_size=args.val_batch_size,
cyclic=True)
Expand All @@ -99,11 +103,12 @@ def main():
metric_list = ['accuracy']

# build a model and compile it
_model = build_a_model(
model_name=args.model,
**train_loader.get_shapes())
_model = build_a_model(model_name=args.model, input_shape=train_loader._image_shape)

model = multi_gpu_model(_model, gpus=args.num_gpus)
if args.multi_gpu:
model = multi_gpu_model(_model, gpus=args.num_gpus)
else:
model = _model


model.compile(
Expand Down Expand Up @@ -191,6 +196,9 @@ def main():
model.train_on_batch(x=x_train, y=y_train)
step += 1

filepath = os.path.join(log_dir.saved_models.path,
"model_final.h5")
_model.save(filepath)
print("Training is over! :D")
meter.finish()
logger.finish()
Expand Down
6 changes: 6 additions & 0 deletions SJ-Keras/Proj-RNN/pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ def __init__(self, path, batch_size, cyclic, maxlen=54, tree_name="jetAnalyser")

self.root_file = ROOT.TFile(path, "READ")
self.tree = self.root_file.Get(tree_name)
if self.tree == ROOT.MakeNullPointer():
print("ERROR:", self.root_file, "contains no 'jet' tree")
exit(1)

if maxlen is None:
self.maxlen = int(self.tree.GetMaximum("n_dau"))
Expand Down Expand Up @@ -180,6 +183,9 @@ def __init__(self, path, batch_size, cyclic, maxlen=54, tree_name="jetAnalyser")

self.root_file = ROOT.TFile(path, "READ")
self.tree = self.root_file.Get(tree_name)
if self.tree == ROOT.MakeNullPointer():
print("ERROR:", self.root_file, "contains no '", tree_name, "' tree")
exit(1)

if maxlen is None:
self.maxlen = int(self.tree.GetMaximum("n_dau"))
Expand Down
33 changes: 12 additions & 21 deletions SJ-Keras/Proj-RNN/training.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,20 @@
from pipeline import DataLoader
# from pipeline import SeqDataLoader as DataLoader

from models import build_a_model

sys.path.append("..")
from keras4jet.models import build_a_model
from keras4jet.meters import Meter
from utils import (
from keras4jet.utils import (
get_log_dir,
get_available_gpus,
Logger
)

def main():
if __name__ == '__main__':
parser = argparse.ArgumentParser()

parser.add_argument("--model", type=str, default="model_ak4")
parser.add_argument("--model", type=str, default="ak4")
parser.add_argument("--directory", type=str, default="../../SJ-JetImage/step5/")
parser.add_argument("--train_data", type=str, default="dijet")
parser.add_argument(
'--log_dir', type=str,
Expand All @@ -61,13 +61,12 @@ def main():

args = parser.parse_args()

train_data="../../Data/FastSim_pt_100_500/{}_train.root".format(args.train_data)
val_dijet_data="../../Data/FastSim_pt_100_500/dijet_test.root"
val_zjet_data="../../Data/FastSim_pt_100_500/zjet_test.root"
train_data = args.directory+"/dijet_train.root"
val_dijet_data = args.directory+"/dijet_test.root"
val_zjet_data = args.directory+"/z_jet_test.root"

log_dir = get_log_dir(
path=args.log_dir.format(name=args.model,
creation=True)
if '{name}' in args.log_dir: args.log_dir = args.log_dir.format(name=args.model)
log_dir = get_log_dir(path=args.log_dir,creation=True)

logger = Logger(log_dir.path, "WRITE")
logger.get_args(args)
Expand Down Expand Up @@ -202,15 +201,7 @@ def main():
end_time = time.time()
logger["training_time"] = end_time - start_time
print("Training is over! :D")
filepath = os.path.join(log_dir.saved_models.path, "model_final.h5")
model.save(filepath)
meter.finish()
logger.finish()








if __name__ == "__main__":
main()
10 changes: 4 additions & 6 deletions SJ-Keras/keras4jet/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
from __future__ import absolute_import

from keras4jet import losses
from keras4jet import metrics
from keras4jet import layers
from keras4jet import models
from . import layers
from . import models

from keras4jet import meters
from keras4jet import utils
from . import meters
from . import utils
8 changes: 8 additions & 0 deletions SJ-Keras/keras4jet/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,11 @@

import keras4jet.models.image
import keras4jet.models.sequential

__all__ = []

def build_a_model(model_name, *args, **kargs):
try:
return getattr(keras4jet.models.image, model_name).build_a_model(*args, **kargs)
except AttributeError:
return getattr(keras4jet.models.sequential, model_name).build_a_model(*args, **kargs)
4 changes: 4 additions & 0 deletions SJ-Keras/keras4jet/models/image/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
from __future__ import absolute_import

from . import resnet
# from . import light_resnet
from . import cnn
26 changes: 26 additions & 0 deletions SJ-Keras/keras4jet/models/image/cnn.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import keras
import keras.backend as K
import tensorflow as tf

from keras.layers import Input
from keras.layers import (
Conv2D,
GlobalAveragePooling2D,
Activation,
Dense,
Flatten
)
from keras.models import Model, Sequential


def build_a_model(input_shape, num_classes=1):
model = Sequential()
model.add(Flatten(input_shape=input_shape))
model.add(Dense(100, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
return model

4 changes: 2 additions & 2 deletions SJ-Keras/keras4jet/models/image/light_resnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def build_a_model(input_shape, filters_list, num_classes=1):

x = Conv2D(filters=num_classes, kernel_size=1, strides=1)(x)
logits = GlobalAveragePooling2D()(x)
softmax = Activation('softmax')(logits)
sigmoid = Activation('sigmoid')(logits)

model = Model(inputs=input_image, outputs=softmax)
model = Model(inputs=input_image, outputs=sigmoid)
return model
4 changes: 2 additions & 2 deletions SJ-Keras/keras4jet/models/image/resnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ def build_a_model(input_shape, num_classes=1):

x = Conv2D(filters=num_classes, kernel_size=1, strides=1)(x)
logits = GlobalAveragePooling2D()(x)
softmax = Activation('softmax')(logits)
sigmoid = Activation('sigmoid')(logits)

model = Model(inputs=input_image, outputs=softmax)
model = Model(inputs=input_image, outputs=sigmoid)

return model

2 changes: 1 addition & 1 deletion SJ-Keras/keras4jet/models/sequential/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from . import ak4_elu
from . import ak4_elu_gru

__all__ = ["model_ak4"]
__all__ = ["ak4"]

def build_a_model(model_name, *args, **kargs):
return getattr(models, model_name).build_a_model(*args, **kargs)
Loading

0 comments on commit 7ad07ce

Please sign in to comment.