Compare commits

..
15 Commits
Author SHA1 Message Date
William Falcon 0637d8e7a5 release v0.1.dev15 2019-04-23 09:08:06 -04:00
William Falcon 2514f62913 early epoch stopping 2019-04-23 08:57:58 -04:00
William Falcon 95aee7ff96 early epoch stopping 2019-04-23 08:46:20 -04:00
William Falcon ffd6dc678c early epoch stopping 2019-04-23 08:27:27 -04:00
William Falcon 1961a6abb2 early epoch stopping 2019-04-23 08:26:48 -04:00
William Falcon 676d76d839 pointer to trainer in model 2019-04-23 07:25:09 -04:00
William Falcon b625b293f4 running new CE then DDT 2019-04-21 14:46:33 -04:00
William Falcon 333f0fde9b fixed hooks 2019-04-21 14:16:54 -04:00
William Falcon 4b0b7e5ea3 if return -1 from a hook that loop stopps 2019-04-21 13:40:32 -04:00
William Falcon e89da15f18 if return -1 from a hook that loop stopps 2019-04-21 13:38:50 -04:00
William Falcon 004f015ee0 fixed imports 2019-04-21 13:13:09 -04:00
William Falcon 398b709b76 fixex imports 2019-04-21 13:12:42 -04:00
William Falcon e9bcbc2318 fixing setup 2019-04-21 13:09:06 -04:00
William Falcon ee51d7b7bc fixing setup 2019-04-21 13:05:29 -04:00
William Falcon bb75bdf87b fixing setup 2019-04-21 13:02:11 -04:00
21 changed files with 22 additions and 56 deletions
+1
View File
@@ -7,6 +7,7 @@ test_tube_data/
datasets/
model_weights/
app/models/
pip-wheel-metadata/
# Byte-compiled / optimized / DLL files
__pycache__/
@@ -86,7 +86,7 @@ class Trainer(TrainerIO):
self.test_percent_check = overfit_pct
def __is_function_implemented(self, f_name):
f_op = getattr(self, f_name, None)
f_op = getattr(self.model, f_name, None)
return callable(f_op)
@property
@@ -195,6 +195,7 @@ class Trainer(TrainerIO):
# -----------------------------
def fit(self, model):
self.model = model
model.trainer = self
# transfer data loaders from model
self.__get_dataloaders(model)
@@ -266,20 +267,17 @@ class Trainer(TrainerIO):
if met_batch_limit:
break
# give model a chance to end epoch early
if self.model.should_stop_epoch(data_batch):
break
# ---------------
# RUN TRAIN STEP
# ---------------
self.__run_tng_batch(data_batch)
batch_result = self.__run_tng_batch(data_batch)
early_stop_epoch = batch_result == -1
# ---------------
# RUN VAL STEP
# ---------------
is_val_check_batch = (batch_nb + 1) % self.val_check_batch == 0
if self.fast_dev_run or is_val_check_batch:
if self.fast_dev_run or is_val_check_batch or early_stop_epoch:
self.__run_validation()
# when batch should be saved
@@ -311,6 +309,10 @@ class Trainer(TrainerIO):
if self.__is_function_implemented('on_batch_end'):
self.model.on_batch_end()
# end epoch early
if early_stop_epoch:
break
# hook
if self.__is_function_implemented('on_epoch_end'):
self.model.on_epoch_end()
@@ -325,13 +327,16 @@ class Trainer(TrainerIO):
if stop:
return
def __run_tng_batch(self, data_batch):
if data_batch is None:
return
return 0
# hook
if self.__is_function_implemented('on_batch_start'):
self.model.on_batch_start()
response = self.model.on_batch_start(data_batch)
if response == -1:
return -1
if self.enable_tqdm:
self.prog_bar.update(1)
@@ -373,6 +378,8 @@ class Trainer(TrainerIO):
if self.__is_function_implemented('on_batch_end'):
self.model.on_batch_end()
return 0
def __run_validation(self):
# decide if can check epochs
can_check_epoch = (self.current_epoch + 1) % self.check_val_every_n_epoch == 0
@@ -1,7 +1,7 @@
import torch
class ModelHooks(torch.nn.Module):
def on_batch_start(self):
def on_batch_start(self, data_batch):
pass
def on_batch_end(self):
@@ -19,5 +19,3 @@ class ModelHooks(torch.nn.Module):
def on_post_performance_check(self):
pass
def should_stop_epoch(self, data_batch):
return False
@@ -24,6 +24,7 @@ class RootModule(GradInformation, ModelIO, OptimizerConfig, ModelHooks):
self.overfit = hparams.overfit
self.gradient_clip = hparams.gradient_clip
self.num = 2
self.trainer = None
# track if gpu was requested for checkpointing
self.on_gpu = False
@@ -9,7 +9,6 @@ from pytorch_lightning.utils.arg_parse import add_default_args
from time import sleep
from pytorch_lightning.utils.pt_callbacks import EarlyStopping, ModelCheckpoint
SEED = 2334
torch.manual_seed(SEED)
np.random.seed(SEED)
View File
+3 -33
View File
@@ -1,16 +1,13 @@
#!/usr/bin/env python
from setuptools import setup, find_packages, os
from setuptools import setup, find_packages
# https://packaging.python.org/guides/single-sourcing-package-version/
version = {}
with open(os.path.join("src", "pytorch-lightning", "__init__.py")) as fp:
exec(fp.read(), version)
# http://blog.ionelmc.ro/2014/05/25/python-packaging/
setup(
name="pytorch-lightning",
version=version["__version__"],
version='0.1.dev15',
description="The Keras for ML researchers using PyTorch",
author="William Falcon",
author_email="waf2107@columbia.edu",
@@ -24,34 +21,7 @@ setup(
"tqdm",
"test-tube",
],
extras_require={
"dev": [
"black ; python_version>='3.6'",
"coverage",
"isort",
"pytest",
"pytest-cov<2.6.0",
"pycodestyle",
"sphinx",
"nbsphinx",
"ipython>=5.0",
"jupyter-client",
]
},
packages=find_packages("src"),
package_dir={"": "src"},
classifiers=[
"Development Status :: 4 - Beta",
"Intended Audience :: Education",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
],
packages=find_packages(),
long_description=open("README.md", encoding="utf-8").read(),
include_package_data=True,
zip_safe=False,
-10
View File
@@ -1,10 +0,0 @@
"""
=================
pytorch-lightning
=================
The Keras for ML researchers using PyTorch. More control. Less boilerplate.
"""
__version__ = "0.1.dev11"