メインコンテンツに移動

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

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

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

TypePyTorchTensorflow (tf-keras)KerasTensorflow Lite (New V2.1.0)
C_FP32C_FP32C_FP32APIC_INT8
1. Convolution Layersnn.Conv2dtf.keras.layers.Conv2Dkeras.layers.Conv2Dtfl.conv_2d
nn.Conv2dtf.keras.layers.DepthwiseConv2Dkeras.layers.DepthwiseConv2Dtfl.depthwise_conv_2d
nn.ConvTranspose2dtf.keras.layers.Conv2DTransposekeras.layers.Conv2DTransposetfl.transpose_conv
+tf.keras.layers.addkeras.layers.add 
2. Pooling layersnn.MaxPool2dtf.keras.layers.MaxPool2Dkeras.layers.MaxPooling2Dtfl.max_pool_2d
nn.MaxPool2dtf.keras.layers.GlobalMaxPooling2Dkeras.layers.GlobalMaxPooling2Dtfl.mean
nn.AvgPool2dtf.keras.layers.AveragePooling2Dkeras.layers.AveragePooling2Dtfl.average_pool_2d
nn.AvgPool2dtf.keras.layers.GlobalAveragePooling2Dkeras.layers.GlobalAveragePooling2Dtfl.reducemax
3. Non-linear Activations
(weighted sum, nonlinearity)
nn.Hardsigmoidtf.keras.activations.hard_sigmoid
tf.keras.layers.Activation(“hard_sigmoid”)
keras.activations.hard_sigmoid
keras.layers.Activation(“hard_sigmoid”)
None×
nn.LeakyReLUtf.keras.layers.LeakyReLUkeras.layers.LeakyReLUtfl.leaky_relu
nn.ReLUtf.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.ReLU6tf.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.Sigmoidtf.keras.activations.sigmoid
tf.keras.layers.Activation(“sigmoid”)
keras.activations.sigmoid
keras.layers.Activation(“sigmoid”)
tfl.logistic
nn.Softplustf.keras.activations.softplus
tf.keras.layers.Activation(“softplus”)
keras.activations.softplus
keras.layers.Activation(“softplus”)
None×
nn.Softsigntf.keras.activations.softsign
tf.keras.layers.Activation(“softsign”)
keras.activations.softsign
keras.layers.Activation(“softsign”)
None×
nn.Tanhtf.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 Layersnn.BatchNorm2dtf.keras.layers.BatchNormalizationkeras.layers.BatchNormalizationtfl.mul, tfl.add×
CBR only
6. Linear Layersnn.Linear
torch.matmul
tf.keras.layers.Densekeras.layers.Densetfl.fully_connected
8. Utilitiesnn.Flattentf.keras.layers.Flattenkeras.layers.FlattenNone
(skip)
view
torch.reshape
tf.keras.layers.Reshapekeras.layers.ReshapeNone
(skip)
9. Mearge layers
(structure check)
+tf.keras.layers.addkeras.layers.addtfl.add
-tf.keras.layers.subtractkeras.layers.subtracttfl.sub
*tf.keras.layers.multiplykeras.layers.multiplytfl.mul
torch.cattf.keras.layers.concatenatekeras.layers.concatenatetfl.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:推論時)

TypeTensorFlowtf-kerasKerasCaffe
1. Convolution Layerstf.nn.conv2d
tf.contrib.layers.conv2d
tf.layers.conv2d
tf.keras.layers.Conv2Dkeras.layers.Conv2DConvolution
tf.nn.depthwise_conv2dtf.keras.layers.DepthwiseConv2Dkeras.layers.DepthwiseConv2DNone
tf.nn.conv2d_transpose
tf.contrib.layers.conv2d_transpose
tf.layers.conv2d_transpose
tf.keras.layers.Conv2DTransposekeras.layers.Conv2DTransposeDeconvolution
tf.add
tf.nn.bias_add
tf.contrib.layers.bias_add
+
tf.keras.layers.addkeras.layers.addNone
2. Pooling layerstf.nn.max_pool
tf.contrib.layers.max_pool2d
tf.layers.max_pooling2d
tf.keras.layers.MaxPool2Dkeras.layers.MaxPooling2DPooling
 with pooling_param {pool: MAX}
Nonetf.keras.layers.GlobalMaxPooling2Dkeras.layers.GlobalMaxPooling2DNone
tf.nn.avg_pool
tf.contrib.layers.avg_pool2d
tf.layers.average_pooling2d
tf.keras.layers.AveragePooling2Dkeras.layers.AveragePooling2DPooling
 with pooling_param {pool: AVE}
Nonetf.keras.layers.GlobalAveragePooling2Dkeras.layers.GlobalAveragePooling2DNone
3. Non-linear Activations (weighted sum, nonlinearity)Nonetf.keras.activations.hard_sigmoid
tf.keras.layers.Activation(“hard_sigmoid”)
keras.activations.hard_sigmoid
keras.layers.Activation(“hard_sigmoid”)
None
tf.nn.leaky_relutf.keras.layers.LeakyReLUkeras.layers.LeakyReLUNone
tf.nn.relutf.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.relu6tf.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.sigmoidtf.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_normNoneNoneNone
tf.clip_by_global_normNoneNoneNone
tf.clip_by_normNoneNoneNone
tf.clip_by_valuetf.keras.backend.clip (use lambda)keras.backend.clip (use lambda)None
5. Normalization
Layers
tf.layers.batch_normalizationtf.keras.layers.BatchNormalizationkeras.layers.BatchNormalizationNone
tf.nn.lrn
tf.nn.local_response_normalization
NoneNoneLRN
6. Linear Layerstf.matmul
tf.contrib.layers.fully_connected
tf.layers.dense
tf.keras.layers.Densekeras.layers.DenseInnerProduct
8. Utilitiestf.layers.flatten
tf.contrib.layers.flatten
tf.keras.layers.Flattenkeras.layers.FlattenNone
tf.reshapetf.keras.layers.Reshapekeras.layers.ReshapeReshape
Split
9. Mearge layers (structure check)tf.add
tf.math.add
+
tf.keras.layers.addkeras.layers.addNone
tf.substruct
tf.math.substruct
-
tf.keras.layers.subtractkeras.layers.subtractNone
tf.math.multiply
*
tf.keras.layers.multiplykeras.layers.multiplyNone
tf.concattf.keras.layers.concatenatekeras.layers.concatenateNone

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

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

ビデオ