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モジュールでの代替を検討してください |