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
Built Distribution
Hashes for shinnosuke-0.6.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74571d97e9cc46530edaf54b7a76893428b67d9517e4acd132c36cdad07d3e09 |
|
MD5 | 15782054d9560a7764891d0b6a827c41 |
|
BLAKE2b-256 | d689f393f7e194c8b853b31ca38bce6c1c9dc4c679646a91ab002e10a55a1c36 |