Skip to main content

A framework for managing deep learning projects

Project description

NeuroStage

"NeuroStage is a framework that allows users to create and manage deep learning projects in a structured and modular way, adapted for TensorFlow. It includes integration with tools like Tensorboard, enabling users to efficiently track and improve their models."

Purpose

NeuroStage was born from the idea of automatically generating projects, with a specific focus on building deep learning models using TensorFlow. It is a tool designed for new users who need a standard structure without having to worry about organizing the project from scratch.

Índice

  1. Design
  2. Features
  3. Installation
  4. Usage Flow

Design

It is designed as a layer-based pattern (for building modules, architectures, and training) which is excellent for organizing a TensorFlow framework for deep learning testing. This modular approach facilitates integration with TensorBoard and promotes scalability.

Modules

Layers Define base layers here (e.g., convolutional, attention, etc.) that can be used in models. These layers form the building blocks for your deep learning models.

Models Combine the layers to create specific architectures for evaluation. This module allows you to design and implement various deep learning models by reusing and combining different layers.

Training Conduct experiments with specific configurations, logging metrics, parameters, and artifacts. This module focuses on the training process, helping you to configure and run training sessions, and track the performance and results.

Features

Feature DeepTrain
Model Management Allows customization for versioning and saving models.
Test Automation Executes each training session in series as defined by the training module.
Tool Compatibility TensorFlow, TensorBoard, OpenCV, Numpy
Open Source MIT License
Flexibility Preconfigured but flexible, define rules and processes as per your case
Collaboration Avalable

Project Structure

my_project/
│
├── config.py             # Project configuration file
├── utils.py              # General utilities file
├── functions.py          # Training functions file
├── imports.py            # Library imports file
├── experiments/          # Folder for experiments
├── src/                  # Main source code folder
│    ├── layers/           # Folder for implementing custom layers
│    │   └── layer_a.py    # Example content
│    │   └── layer_b.py 
│    ├── models/           # Folder for defining models
│    │   └── model_a.py    # Example content
│    │   └── model_b.py 
├── training/             # Folder for compiling and starting training
│    └── train_a.py        # Example content
│    └── train_b.py

Installation

To install NeuroStage, simply run the following command:

pip install neurostage

For more detailed information, visit the project page on Github: NeuroStage

stage

To confirm that the installation was successful, run the following command:

stage

You should see the following output:

usage: stage [-h] [--list] [--help_train] {startproject,run} ...

NeuroStage: A framework for testing and training deep learning models.

positional arguments:
  {startproject,run}
    startproject      Start a New Project
    run               Run the current project

options:
  -h, --help          show this help message and exit
  --list              List the available models
  --help_train        Show usage examples

If you see this message, the installation has been completed successfully and the stage command is ready to use.

Usage-Flow

Start a new project

To start a new project, use the following command. You can replace my_project with your desired project name:

stage startproject my_project

create a new layer

File: src/layers/layer_custom.py

from imports import tf

class CustomLayer(tf.keras.layers.Layer):
    def __init__(self, units, **kwargs):
        super().__init__(**kwargs)
        self.units = units
        self.conv = tf.keras.layers.Conv2D(units, 3, activation='relu')
        self.dense = tf.keras.layers.Dense(units)
        self.flatten = tf.keras.layers.Flatten()

    def call(self, inputs):
        x = self.conv(inputs)
        x = self.flatten(x)
        x = self.dense(x)
        return x

create a new model

File: src/models/model_custom.py

from imports import tf
from src.layers.layer_custom import CustomLayer

class ModelCustom():
    def __init__(self): 
        super(ModelCustom, self).__init__() 
        self.layer = CustomLayer(64)
        self.dense = tf.keras.layers.Dense(1, activation='sigmoid')
        
    def build_model(self, input):
        x = self.layer(input)
        x = self.dense(x)
        
        model = tf.keras.Model(inputs=input, outputs=x)
        
        return model

Create a training runner

File: training/train_custom.py

from functions import NeuroStage
from imports import tf, np
from src.models.model import Model

class TrainModel(NeuroStage):
    def __init__(self, batch_size=32, epochs=4, models=None):
        super().__init__()
        
        self.BATCH_SIZE = batch_size
        self.EPHOCS = epochs
        
        input = tf.keras.Input(shape=(256, 256, 1))  
        self.optimizer = tf.keras.optimizers.SGD(learning_rate=1e-3, momentum=0.95)
        self.architecture = Model()
        print(models)
        self.model = self.architecture.build_model(input)
        self.model.compile(optimizer=self.optimizer,
                         loss='binary_crossentropy',
                         metrics=['accuracy'])
                  
    def train(self):
        X_train = np.random.rand(100, 256, 256, 1)
        y_train = np.random.randint(0, 2, 100) 
        X_val = np.random.rand(20, 256, 256, 1) 
        y_val = np.random.randint(0, 2, 20)
        X_test = np.random.rand(20, 256, 256, 1) 
        y_test = np.random.randint(0, 2, 20)
        
        name = 'example_model'
        history = self.init_fit(self.model, X_train, y_train, X_val, y_val, self.EPHOCS, self.BATCH_SIZE, model_name=name)

Execution

stage run --batch_size 32 --epochs 10 

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neurostage-1.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neurostage-1.0-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file neurostage-1.0.tar.gz.

File metadata

  • Download URL: neurostage-1.0.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for neurostage-1.0.tar.gz
Algorithm Hash digest
SHA256 320f99d4109080b9486134227e97ad1daee5c6474a0d6fab7d082b1fab0176bd
MD5 83a7a470c940ba602375a6ac6e44f6d1
BLAKE2b-256 9b927e8111b5990005a46e7f2a5fcb8e71bec4f4775eb9728ca3244d04aa4a69

See more details on using hashes here.

File details

Details for the file neurostage-1.0-py3-none-any.whl.

File metadata

  • Download URL: neurostage-1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for neurostage-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4708f65df1018fa16e4672b86e8bacf63836f97358ca919d85dfe3790a35a5e1
MD5 c6d4efd9aa3f657a98c7ceeba813ab3b
BLAKE2b-256 e652e095409eb7ba5d050cf10e37d47a19b47b869ee10ea8006117282088184d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page