A keras-like API deep learning framework,realized by Numpy
Project description
Shinnosuke : Deep learning framework
Descriptions
-
Based on Numpy(CPU version)
-
Completely realized by Python only
-
Keras-like API
-
Graph are used to construct the system
-
For deep learning studying
Features
-
Native to Python
-
Keras-like API
-
Easy to get start
-
Commonly used models are provided: Dense, Conv2D, MaxPooling2D, LSTM, SimpleRNN, etc
-
Several basic networks Examples
-
Sequential model and Functional model are implemented
-
Autograd is supported
-
training is conducted on forward graph and backward graph
Installation
Requirements(recommend)
Numpy=1.15.0
matplotlib=3.0.3
Using pip:
$ pip install shinnosuke
Examples
Shinnosuke provides several classcic AI tasks:
-
mnist handwrite number recognition
- Dense(FullyConnected neural network)
from shinnosuke.models import Sequential from shinnosuke.layers.FC import Dense m=Sequential() m.add(Dense(500,activation='relu',n_in=784)) #must be specify n_in if first layer m.add(Dense(10,activation='softmax')) #no need to specify n_in as shinnosuke will automatic calculate the input and output dim m.compile(optimizer='sgd',loss='sparse_categorical_crossentropy') #specify optimizer and objective,if your want to apply softmax for multi-classify tasks and your labels are one-hot vectors/matrixm,use sparse_categorical_crossentropy(recommend),otherwise use categorical_crossentropy. model.fit(trainX,trainy,batch_size=512,epochs=5,validation_ratio=0.)
- CNN(Convolutional neural network)
X_input=Input(shape=(None,1,28,28)) #represents batch_size,channels,height and width respectively,notice that channels must be at the axis 1 instead of -1 X=Conv2D(8,(3,3),padding='VALID',initializer='normal',activation='relu')(X_input) X=MaxPooling2D((2,2))(X) X=Flatten()(X) X=Dense(10,initializer='normal',activation='softmax')(X) model=Model(inputs=X_input,outputs=X) model.compile(optimizer='sgd',loss='sparse_categorical_cross_entropy') model.fit(trainX,trainy,batch_size=256,epochs=80,validation_ratio=0.)
Supports
Two model types:
1.Sequential
from shinnosuke.models import Sequential
from shinnosuke.layers.FC import Dense
m=Sequential()
m.add(Dense(500,activation='relu',n_in=784))
m.add(Dense(10,activation='softmax'))
m.compile(optimizer='sgd',loss='sparse_categorical_crossentropy',learning_rate=0.1)
m.fit(trainX,trainy,batch_size=512,epochs=1,validation_ratio=0.)
2.Model
from shinnosuke.models import Model
from shinnosuke.layers.FC import Dense
from shinnosuke.layers.Base import Input
X_input=Input(shape=(None,784))
X=Dense(500,activation='relu')(X_input)
X=Dense(10,activation='softmax')(X)
model=Model(inputs=X_input,outputs=X)
model.compile(optimizer='sgd',loss='sparse_categorical_crossentropy',learning_rate=0.1)
model.fit(trainX,trainy,batch_size=512,epochs=1,validation_ratio=0.)
Two basic class:
- Layer:
-
Dense
-
Conv2D
-
MaxPooling2D
-
MeanPooling2D
-
Activation
-
Input
-
Dropout
-
BatchNormalization
-
TimeDistributed
-
SimpleRNN
-
LSTM
-
GRU (waiting for implemented)
-
ZeroPadding2D
-
Operations( includes Add, Minus, Multiply, Matmul, and so on basic operations for Layer and Node)
Layer Operations are conducted to construt the graph. for examples:
- Node:
- Variable
- Constant
While Node Operations have both dynamic graph and static graph features
x=Variable(3)
y=Variable(5)
z=x+y
print(z.get_value())
#you suppose get a value 8,at same time shinnosuke construct a graph as below(waiting to implement):
Optimizers
-
StochasticGradientDescent
-
Momentum
-
RMSprop
-
AdaGrad
-
AdaDelta
-
Adam
Waiting for implemented more
Objectives
-
MeanSquaredError
-
MeanAbsoluteError
-
BinaryCrossEntropy
-
SparseCategoricalCrossEntropy
-
CategoricalCrossEntropy
Activations
-
Relu
-
Linear
-
Sigmoid
-
Tanh
-
Softmax
Initializations
-
Zeros
-
Ones
-
Uniform
-
LecunUniform
-
GlorotUniform
-
HeUniform
-
Normal
-
LecunNormal
-
GlorotNormal
-
HeNormal
-
Orthogonal
Regularizes
waiting for implement.
Utils
-
get_batches (generate mini-batch)
-
to_categorical (convert inputs to one-hot vector/matrix)
-
concatenate (concatenate Nodes that have the same shape in specify axis)
-
pad_sequences (pad sequences to the same length)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file shinnosuke-0.6.3.tar.gz
.
File metadata
- Download URL: shinnosuke-0.6.3.tar.gz
- Upload date:
- Size: 28.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.9.1 tqdm/4.26.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbaf3b2040326ca5d418ef025bc92ddc72b975bad4184dfff8246eaad7bcc7f4 |
|
MD5 | 86ac5ba5cf45aab0dc4df82f5eb6e25a |
|
BLAKE2b-256 | 0716cd5b196a07943131c2d9a064ed97d2fe6e36ab1d3a62457942e939297efd |