メインコンテンツに移動

e-AIトランスレータで変換可能なニューラルネットワーク構造

e-AIトランスレータ(無償版)は,比較的ROM/RAM容量の小さいマイコンを対象としています。 ライブラリで使う容量を圧縮するため,ニューラルネットワークでよく使われる関数のみをサポートしています。

トランスレート可能関数一覧(e-AIトランスレータ V2.1.0:推論時)

Type PyTorch Tensorflow (tf-keras) Keras Tensorflow Lite (New V2.1.0)
C_FP32 C_FP32 C_FP32 API C_INT8
1. Convolution Layers nn.Conv2d tf.keras.layers.Conv2D keras.layers.Conv2D tfl.conv_2d
nn.Conv2d tf.keras.layers.DepthwiseConv2D keras.layers.DepthwiseConv2D tfl.depthwise_conv_2d
nn.ConvTranspose2d tf.keras.layers.Conv2DTranspose keras.layers.Conv2DTranspose tfl.transpose_conv
+ tf.keras.layers.add keras.layers.add  
2. Pooling layers nn.MaxPool2d tf.keras.layers.MaxPool2D keras.layers.MaxPooling2D tfl.max_pool_2d
nn.MaxPool2d tf.keras.layers.GlobalMaxPooling2D keras.layers.GlobalMaxPooling2D tfl.mean
nn.AvgPool2d tf.keras.layers.AveragePooling2D keras.layers.AveragePooling2D tfl.average_pool_2d
nn.AvgPool2d tf.keras.layers.GlobalAveragePooling2D keras.layers.GlobalAveragePooling2D tfl.reducemax
3. Non-linear Activations
(weighted sum, nonlinearity)
nn.Hardsigmoid tf.keras.activations.hard_sigmoid
tf.keras.layers.Activation(“hard_sigmoid”)
keras.activations.hard_sigmoid
keras.layers.Activation(“hard_sigmoid”)
None ×
nn.LeakyReLU tf.keras.layers.LeakyReLU keras.layers.LeakyReLU tfl.leaky_relu
nn.ReLU tf.keras.activations.relu
tf.keras.layers.Activation(“relu”)
tf.keras.layers.relu
keras.activations.relu
keras.layers.Activation(“relu”)
keras.layers.relu
tfl.relu
(fused activation)
nn.ReLU6 tf.keras.activations.relu(max_value=6.)
tf.keras.layers.relu(max_value=6.)
keras.activations.relu(max_value=6.)
keras.layers.relu(max_value=6.)
tfl.relu
with max_value = 6
nn.Sigmoid tf.keras.activations.sigmoid
tf.keras.layers.Activation(“sigmoid”)
keras.activations.sigmoid
keras.layers.Activation(“sigmoid”)
tfl.logistic
nn.Softplus tf.keras.activations.softplus
tf.keras.layers.Activation(“softplus”)
keras.activations.softplus
keras.layers.Activation(“softplus”)
None ×
nn.Softsign tf.keras.activations.softsign
tf.keras.layers.Activation(“softsign”)
keras.activations.softsign
keras.layers.Activation(“softsign”)
None ×
nn.Tanh tf.keras.activations.tanh
tf.keras.layers.Activation(“tanh”)
keras.activations.tanh
keras.layers.Activation(“tanh”)
tfl.tanh
4. Non-linear Activations
(other)
nn.Softmax
nn.Softmax2d
tf.keras.activations.softmax
tf.keras.layers.Activation(“softmax”)
tf.keras.layers.Softmax
keras.activations.softmax
keras.layers.Activation(“softmax”)
keras.layers.Softmax
tfl.softmax
torch.clip
torch.clamp
tf.keras.backend.clip (use lambda) keras.backend.clip (use lambda) None ×
5. Normalization Layers nn.BatchNorm2d tf.keras.layers.BatchNormalization keras.layers.BatchNormalization tfl.mul, tfl.add ×
CBR only
6. Linear Layers nn.Linear
torch.matmul
tf.keras.layers.Dense keras.layers.Dense tfl.fully_connected
8. Utilities nn.Flatten tf.keras.layers.Flatten keras.layers.Flatten None
(skip)
view
torch.reshape
tf.keras.layers.Reshape keras.layers.Reshape None
(skip)
9. Mearge layers
(structure check)
+ tf.keras.layers.add keras.layers.add tfl.add
- tf.keras.layers.subtract keras.layers.subtract tfl.sub
* tf.keras.layers.multiply keras.layers.multiply tfl.mul
torch.cat tf.keras.layers.concatenate keras.layers.concatenate tfl.concatenation

主要なニューラルネットワーク構造への対応状況(e-AIトランスレータ V2.1.0)

ニューラルネットワーク名 モデル名 サポート状況 備考
AutoEncoder   Conv2D-Fully Connected-Deconv2D構造にも対応
Convolutional Neural Network (CNN)
分岐無し
LeNet  
AlexNet  
VGG 全結合層のチャネル数が大きい場合は、変換時に甚大なメモリ容量が必要
Convolutional Neural Network (CNN)
>分岐(スキップリンクなど)あり
Network in Network
GoogleNet
RAM使用量削減機能搭載 (New V2.1.0)
MobileNet
ResNet
SqueezeNet
SENet
ContextNet × 活性化関数をSwishからReLUに変更する必要あり
Self Attention Net × 一形態であるSENetのみ対応
Recurrent Neural Network (RNN) RNNoise × メモリ内蔵ネットワークには未対応
CNNやTranferの一種であるSEモジュールでの代替を検討してください
Long Short Term Memory (LSTM)   × メモリ内蔵ネットワークには未対応
CNNやTranferの一種であるSEモジュールでの代替を検討してください
Gated Recurrent Unit (GRU)   × メモリ内蔵ネットワークには未対応
CNNやTranferの一種であるSEモジュールでの代替を検討してください

トランスレート可能関数一覧(e-AIトランスレータ V1.6.0:推論時)

Type TensorFlow tf-keras Keras Caffe
1. Convolution Layers tf.nn.conv2d
tf.contrib.layers.conv2d
tf.layers.conv2d
tf.keras.layers.Conv2D keras.layers.Conv2D Convolution
tf.nn.depthwise_conv2d tf.keras.layers.DepthwiseConv2D keras.layers.DepthwiseConv2D None
tf.nn.conv2d_transpose
tf.contrib.layers.conv2d_transpose
tf.layers.conv2d_transpose
tf.keras.layers.Conv2DTranspose keras.layers.Conv2DTranspose Deconvolution
tf.add
tf.nn.bias_add
tf.contrib.layers.bias_add
+
tf.keras.layers.add keras.layers.add None
2. Pooling layers tf.nn.max_pool
tf.contrib.layers.max_pool2d
tf.layers.max_pooling2d
tf.keras.layers.MaxPool2D keras.layers.MaxPooling2D Pooling
 with pooling_param {pool: MAX}
None tf.keras.layers.GlobalMaxPooling2D keras.layers.GlobalMaxPooling2D None
tf.nn.avg_pool
tf.contrib.layers.avg_pool2d
tf.layers.average_pooling2d
tf.keras.layers.AveragePooling2D keras.layers.AveragePooling2D Pooling
 with pooling_param {pool: AVE}
None tf.keras.layers.GlobalAveragePooling2D keras.layers.GlobalAveragePooling2D None
3. Non-linear Activations (weighted sum, nonlinearity) None tf.keras.activations.hard_sigmoid
tf.keras.layers.Activation(“hard_sigmoid”)
keras.activations.hard_sigmoid
keras.layers.Activation(“hard_sigmoid”)
None
tf.nn.leaky_relu tf.keras.layers.LeakyReLU keras.layers.LeakyReLU None
tf.nn.relu tf.keras.activations.relu
tf.keras.layers.Activation(“relu”)
tf.keras.layers.relu
keras.activations.relu
keras.layers.Activation(“relu”)
keras.layers.relu
ReLU
tf.nn.relu6 tf.keras.activations.relu(max_value=6.)
tf.keras.layers.relu(max_value=6.)
keras.activations.relu(max_value=6.)
keras.layers.relu(max_value=6.)
None
tf.sigmoid tf.keras.activations.sigmoid
tf.keras.layers.Activation(“sigmoid”)
keras.activations.sigmoid
keras.layers.Activation(“sigmoid”)
Sigmoid
tf.nn.softplus
tf.math.softplus
tf.keras.activations.softplus
tf.keras.layers.Activation(“softplus”)
keras.activations.softplus
keras.layers.Activation(“softplus”)
None
tf.nn.softsign
tf.math.softsign
tf.keras.activations.softsign
tf.keras.layers.Activation(“softsign”)
keras.activations.softsign
keras.layers.Activation(“softsign”)
None
tf.nn.tanh
tf.tanh
tf.keras.activations.tanh
tf.keras.layers.Activation(“tanh”)
keras.activations.tanh
keras.layers.Activation(“tanh”)
TanH
4. Non-linear Activations (other) tf.nn.softmax
tf.contrib.layers.softmax
tf.nn.softmax_cross_entropy_with_logits
tf.nn.softmax_cross_entropy_with_logits_v2
tf.keras.activations.softmax
tf.keras.layers.Activation(“softmax”)
tf.keras.layers.Softmax
keras.activations.softmax
keras.layers.Activation(“softmax”)
keras.layers.Softmax
Softmax
tf.clip_by_average_norm None None None
tf.clip_by_global_norm None None None
tf.clip_by_norm None None None
tf.clip_by_value tf.keras.backend.clip (use lambda) keras.backend.clip (use lambda) None
5. Normalization
Layers
tf.layers.batch_normalization tf.keras.layers.BatchNormalization keras.layers.BatchNormalization None
tf.nn.lrn
tf.nn.local_response_normalization
None None LRN
6. Linear Layers tf.matmul
tf.contrib.layers.fully_connected
tf.layers.dense
tf.keras.layers.Dense keras.layers.Dense InnerProduct
8. Utilities tf.layers.flatten
tf.contrib.layers.flatten
tf.keras.layers.Flatten keras.layers.Flatten None
tf.reshape tf.keras.layers.Reshape keras.layers.Reshape Reshape
Split
9. Mearge layers (structure check) tf.add
tf.math.add
+
tf.keras.layers.add keras.layers.add None
tf.substruct
tf.math.substruct
-
tf.keras.layers.subtract keras.layers.subtract None
tf.math.multiply
*
tf.keras.layers.multiply keras.layers.multiply None
tf.concat tf.keras.layers.concatenate keras.layers.concatenate None

主要なニューラルネットワーク構造への対応状況(e-AIトランスレータ V1.6.0)

ニューラルネットワーク名 モデル名 サポート状況 備考
AutoEncoder   Conv2D-FC-Deconv2D構造にも対応
Convolutional Neural Network (CNN)
分岐無し
LeNet  
AlexNet  
VGG FCのチャネル数が大きい場合は、変換時に甚大なメモリ容量が必要
Convolutional Neural Network (CNN)
分岐(スキップリンクなど)あり
Network in Network
GoogleNet
RAM使用量削減機能が動作しません
MobileNet RAM使用量削減機能が動作しません
ResNet RAM使用量削減機能が動作しません
SENet RAM使用量削減機能が動作しません
Recurrent Neural Network (RNN)   × メモリ内蔵ネットワークには未対応
CNNやTranferの一種であるSEモジュールでの代替を検討してください
Long Short Term Memory (LSTM)   × メモリ内蔵ネットワークには未対応
CNNやTranferの一種であるSEモジュールでの代替を検討してください

ビデオ