GithubHelp home page GithubHelp logo

alexxnica / cuticula Goto Github PK

View Code? Open in Web Editor NEW

This project forked from autumnai/cuticula

0.0 1.0 0.0 3.48 MB

Machine Intelligence Preprocessing Framework

Home Page: http://autumnai.github.io/cuticula

License: Apache License 2.0

Rust 100.00%

cuticula's Introduction

Cuticula • Join the chat at https://gitter.im/autumnai/cuticula Build Status Coverage Status Crates.io License

Cuticula tries to provide a smart and customizable pipeline for preprocessing data for machine learning tasks. Clean preprocessing methods for the most common type of data, makes preprocessing easy. Cuticula offers a pipeline of Modifiers and Transformers to turn non-numeric data into a safe and consistent numeric output in the form of Collenchyma's SharedTensor. For putting your preprocessed data to use, you might like to use the Machine Learning Framework Leaf.

For more information see the Documentation.

Architecture

Cuticula exposes several standard data types, which might need a numeric transformation in order to be processed by a Machine Learning Algorithm such as Neural Nets.

Data Types can be modified through Modifiers. This provides a coherent interface, allowing for custom modifiers. You can read more about custom modifiers further down. First, an example of a Data Type modification:

let mut data_type = Image { value: ... }
data_type = data_type.set((ModifierOne(param1, param2), ModifierTwo(anotherParam));
image.set(Resize(20, 20))

After one, none or many modifications through Modifiers, the Data Type can then finally be transformed into a SharedTensor (numeric Vector). Taking data_type from the above example:

// the Vector secures the correct shape and capacity of the final SharedTensor
let final_tensor = data_type.transform(vec![20, 20, 3]).unwrap();

Transformable Data Types

These are the data types that cuticula is currently addressing. For most of them are basic Modifiers and Transformers already specified.

  • Missing: NULL data
  • Label: labeled data such as ID's, Categories, etc.
  • Word: a String of arbitrary lengths
  • Image
  • Audio

Modifiers

All Modifiers implement the Modifier trait from rust-modifier. As all Transformable Data Types implement the Set trait of the same library, one can easily write custom modifiers as well. Quick Example:

extern crate cuticula;

use cuticula::Image;
use cuticula::modifier::Modifier;

struct CustomModifier(usize)

impl Modifier<Image> for CustomModifier {
    fn modify(self, image: &mut Image) {
        image.value = some_extern_image_manipulation_fn(self.0);
    }
}

Contributing

Want to contribute? Awesome! We have instructions to help you get started contributing code or documentation.

Autumn has a mostly real-time collaboration culture and happens on the Autumn Gitter Channels. Or you reach out to the Maintainers. e.g. {@MJ, @hobofan}.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as below, without any additional terms or conditions.

License

Licensed under either of

at your option.

cuticula's People

Contributors

homu avatar michaelhirn avatar hobofan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.