/neuralflow

Build DL Framework from scratch

Primary LanguagePythonMIT LicenseMIT

NeuralFlow

Deep learning framework built with numpy (cupy)
This version supports cuda 11.x ver

install

$ git clone git clone https://github.com/augustinLib/neuralflow.git

or

# cpu-only
$ pip install neuralflow-cpu

# gpu (cuda 11.x)
$ pip install neuralflow

Quick guide

you can build model like this,

from neuralflow.model import Model, DenseLayer, ConvLayer, MaxPoolingLayer
from neuralflow.function_class import ReLU

model = Model(
    DenseLayer(784, 50),
    ReLU(),
    DenseLayer(50, 10)
)

conv_model = Model(
    ConvLayer(input_channel = 1, output_channel = 30, kernel_size = 5, stride = 1, padding=0),
    ReLU(),
    MaxPoolingLayer(kernel_size=2, stride=2),
    DenseLayer(4320, 100),
    ReLU(),
    DenseLayer(100, 10)
)

model_ln = Model(
    EmbeddingLayer(vocab_size, wordvec_size),
    Dropout(dropout),
    LSTMLayer(wordvec_size, hidden_size),
    Dropout(dropout),
    LSTMLayer(hidden_size, hidden_size),
    Dropout(dropout),
    DenseLayer(hidden_size, vocab_size)
)

# mixed precision
model_ln.mixed_precision_on()

# weight tying
model_ln.weight_tying()

and the training proceeds as follows.

from neuralflow.function_class import ReLU, CrossEntropyLoss
from neuralflow.optimizer import Adam

critic = CrossEntropyLoss()
optim = Adam()
pred = model(x)
loss = critic(pred, y)
model.backward(critic)
optim.update(model)

you can also train model with trainer

from neuralflow.trainer import ClassificationTrainer
from neuralflow.data import DataLoader

dataloader = DataLoader(train_data)
trainer = ClassificationTrainer(model,
                                critic,
                                optim,
                                epochs,
                                init_lr = 0.001)
trainer.train(dataloader)

when using gpu, set it as follows.

# using gpu
from neuralflow import config
config.GPU = True

# using cpu
from neuralflow import config
config.GPU = False

Structure

  • neuralflow
    • __init__.py
    • data.py
    • function.py
    • function_class.py
    • model.py
    • optimizer.py
    • trainer.py
    • utils.py
    • nlp
      • __init__.py
      • utils.py
      • model.py
    • cv
      • __init__.py
      • model.py
    • epoch_notice
      • send_message.py
      • token_generator.py
  • dataset
  • test
  • README.md
  • .gitignore