[Skeleton] Add resnet application skeleton
authorJihoon Lee <jhoon.it.lee@samsung.com>
Thu, 24 Jun 2021 05:13:00 +0000 (14:13 +0900)
committerJijoong Moon <jijoong.moon@samsung.com>
Mon, 28 Jun 2021 03:22:57 +0000 (12:22 +0900)
This patch adds resnet application skeleton

**Self evaluation:**
1. Build test: [X]Passed [ ]Failed [ ]Skipped
2. Run test: [X]Passed [ ]Failed [ ]Skipped

Signed-off-by: Jihoon Lee <jhoon.it.lee@samsung.com>
Applications/ResNet/res/resnet18.ini [deleted file]
Applications/Resnet/jni/Android.mk [new file with mode: 0644]
Applications/Resnet/jni/Application.mk [new file with mode: 0644]
Applications/Resnet/jni/main.cpp [new file with mode: 0644]
Applications/Resnet/jni/meson.build [new file with mode: 0644]
Applications/Resnet/res/resnet18.ini [new file with mode: 0644]
Applications/meson.build

diff --git a/Applications/ResNet/res/resnet18.ini b/Applications/ResNet/res/resnet18.ini
deleted file mode 100644 (file)
index 6b65ec6..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-#
-# SPDX-License_Identifier: Apache-2.0
-# @file resnet18.ini
-# @author Jijoong Moon <jijoong.moon@samsung.com>
-# @date Jan 27 2021
-# @brief input configuration of Residual Net 18
-#
-
-[Model]
-Type = NeuralNetwork
-Epochs = 2
-Loss = cross
-Save_Path = "model.bin"
-batch_size = 128
-
-[Optimizer]
-Type = adam
-Learning_rate = 1e-4
-beta1 = 0.9
-beta2 = 0.999
-epsilon = 1e-7
-
-[inputlayer]
-Type = input
-Input_Shape = 3:32:32
-
-[first_layer_112_1]
-Type=conv2d
-input_layers = inputlayer
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=64
-stride =1,1
-padding=1,1
-
-[preparation_bn]
-Type=batch_normalization
-input_layers = first_layer_112_1
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[out0]
-Type=output
-input_layers=preparation_bn
-
-[B1_residue_1_conv_3]
-Type=conv2d
-input_layers=out0
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=64
-stride =1,1
-padding=1,1
-
-[B1_residue_2_bn]
-Type=batch_normalization
-input_layers = B1_residue_1_conv_3
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[B1_residue_2_conv_4]
-Type=conv2d
-input_layers = B1_residue_2_bn
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=64
-stride =1,1
-padding=1,1
-
-[B1_1_add]
-Type=addition
-input_layers=B1_residue_2_conv_4, out0
-
-[B1_1_bn]
-Type=batch_normalization
-input_layers = B1_1_add
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[out1]
-Type=output
-input_layers=B1_1_bn
-
-[B1_residue_3_conv_5]
-Type=conv2d
-input_layers = out1
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=64
-stride =1,1
-padding=1,1
-
-[B1_residue_4_bn]
-Type=batch_normalization
-input_layers = B1_residue_3_conv_5
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[B1_residue_4_conv_6]
-Type=conv2d
-input_layers = B1_residue_4_bn
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=64
-stride =1,1
-padding=1,1
-
-[B1_2_add]
-Type=addition
-input_layers=B1_residue_4_conv_6, out1
-
-[B1_2_bn]
-Type=batch_normalization
-input_layers = B1_2_add
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[out2]
-Type=output
-input_layers=B1_2_bn
-
-[B2_residue_1_conv_7]
-Type=conv2d
-input_layers = out2
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=128
-stride =2,2
-padding=1,1
-
-[B2_residue_2_bn]
-Type=batch_normalization
-input_layers = B2_residue_1_conv_7
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[B2_residue_2_conv_8]
-Type=conv2d
-input_layers = B2_residue_2_bn
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=128
-stride =1,1
-padding=1,1
-
-[B2_original_reshaped]
-Type=conv2d
-input_layers = out2
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=128
-stride =2,2
-padding=1,1
-
-[B2_1_add]
-Type=addition
-input_layers=B2_residue_2_conv_8, B2_original_reshaped
-
-[B2_1_bn]
-Type=batch_normalization
-input_layers = B2_1_add
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[out3]
-Type=output
-input_layers=B2_1_bn
-
-[B2_residue_3_conv_9]
-Type=conv2d
-input_layers = out3
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=128
-stride =1,1
-padding=1,1
-
-[B2_residue_4_bn]
-Type=batch_normalization
-input_layers = B2_residue_3_conv_9
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[B2_residue_4_conv_10]
-Type=conv2d
-input_layers = B2_residue_4_bn
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=128
-stride =1,1
-padding=1,1
-
-[B2_2_add]
-Type=addition
-input_layers=B2_residue_4_conv_10, out3
-
-[B2_2_bn]
-Type=batch_normalization
-input_layers = B2_2_add
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[out4]
-Type=output
-input_layers=B2_2_bn
-
-[B3_residue_1_conv_11]
-Type=conv2d
-input_layers = out4
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=256
-stride =2,2
-padding=1,1
-
-[B3_residue_2_bn]
-Type=batch_normalization
-input_layers = B3_residue_1_conv_11
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[B3_residue_2_conv_12]
-Type=conv2d
-input_layers = B3_residue_2_bn
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=256
-stride =1,1
-padding=1,1
-
-[B3_original_reshaped]
-Type=conv2d
-input_layers = out4
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=256
-stride =2,2
-padding=1,1
-
-[B3_1_add]
-Type=addition
-input_layers=B3_residue_2_conv_12, B3_original_reshaped
-
-[B3_1_bn]
-Type=batch_normalization
-input_layers = B3_1_add
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[out5]
-Type=output
-input_layers=B3_1_bn
-
-[B3_residue_3_conv_13]
-Type=conv2d
-input_layers = out5
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=256
-stride =1,1
-padding=1,1
-
-[B3_residue_4_bn]
-Type=batch_normalization
-input_layers = B3_residue_3_conv_13
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[B3_residue_4_conv_14]
-Type=conv2d
-input_layers = B3_residue_4_bn
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=256
-stride =1,1
-padding=1,1
-
-[B3_2_add]
-Type=addition
-input_layers=B3_residue_4_conv_14, out5
-
-[B3_2_bn]
-Type=batch_normalization
-input_layers = B3_2_add
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[out6]
-Type=output
-input_layers=B3_2_bn
-
-[B4_residue_1_conv_15]
-Type=conv2d
-input_layers = out6
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=512
-stride =2,2
-padding=1,1
-
-[B4_residue_2_bn]
-Type=batch_normalization
-input_layers = B4_residue_1_conv_15
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[B4_residue_2_conv_16]
-Type=conv2d
-input_layers = B4_residue_2_bn
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=512
-stride =1,1
-padding=1,1
-
-[B4_original_reshaped]
-Type=conv2d
-input_layers = out6
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=512
-stride =2,2
-padding=1,1
-
-[B4_1_add]
-Type=addition
-input_layers=B4_residue_2_conv_16, B4_original_reshaped
-
-[B4_1_bn]
-Type=batch_normalization
-input_layers = B4_1_add
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[out7]
-Type=output
-input_layers=B4_1_bn
-
-[B4_residue_3_conv_17]
-Type=conv2d
-input_layers = out7
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=512
-stride =1,1
-padding=1,1
-
-[B4_residue_4_bn]
-Type=batch_normalization
-input_layers = B4_residue_3_conv_17
-epsilon = 1.0e-6
-momentum = 0.9
-Activation = relu
-beta_initializer = zeros
-gamma_initializer = ones
-moving_mean_initializer = zeros
-moving_variance_initializer = ones
-
-[B4_residue_4_conv_18]
-Type=conv2d
-input_layers = B4_residue_4_bn
-kernel_size = 3,3
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=512
-stride =1,1
-padding=1,1
-
-[B4_2_add]
-Type=addition
-input_layers=B4_residue_4_conv_18, out7
-
-[out8]
-Type=output
-input_layers=B4_2_add
-
-[max_pooling2d_1]
-Type=pooling2d
-input_layers = out8
-pool_size = 4,4
-stride =4,4
-padding = 0,0
-pooling = max
-
-[average_pooling2d_1]
-Type=pooling2d
-input_layers = out8
-pool_size = 4,4
-stride =4,4
-padding = 0,0
-pooling = average
-
-[concatenate_1]
-Type=concat
-input_layers=max_pooling2d_1, average_pooling2d_1
-
-[linear]
-Type=conv2d
-input_layers = concatenate_1
-kernel_size = 1,1
-bias_initializer = zeros
-weight_initializer = xavier_uniform
-filters=10
-stride =1,1
-padding=0,0
-
-[flatten_1]
-Type=flatten
-input_layers = linear
-
-[activation]
-Type=Activation
-Activation = softmax
diff --git a/Applications/Resnet/jni/Android.mk b/Applications/Resnet/jni/Android.mk
new file mode 100644 (file)
index 0000000..7f85805
--- /dev/null
@@ -0,0 +1,51 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+# ndk path
+ifndef ANDROID_NDK
+$(error ANDROID_NDK is not defined!)
+endif
+
+ifndef NNTRAINER_ROOT
+NNTRAINER_ROOT := $(LOCAL_PATH)/../../..
+endif
+
+ ML_API_COMMON_INCLUDES := ${NNTRAINER_ROOT}/ml_api_common/include
+NNTRAINER_INCLUDES := $(NNTRAINER_ROOT)/nntrainer \
+       $(NNTRAINER_ROOT)/nntrainer/dataset \
+       $(NNTRAINER_ROOT)/nntrainer/models \
+       $(NNTRAINER_ROOT)/nntrainer/layers \
+       $(NNTRAINER_ROOT)/nntrainer/graph \
+       $(NNTRAINER_ROOT)/nntrainer/optimizers \
+       $(NNTRAINER_ROOT)/nntrainer/tensor \
+       $(NNTRAINER_ROOT)/nntrainer/utils \
+       $(NNTRAINER_ROOT)/api \
+       $(NNTRAINER_ROOT)/api/ccapi/include \
+       ${ML_API_COMMON_INCLUDES}
+
+LOCAL_MODULE := nntrainer
+LOCAL_SRC_FILES := $(NNTRAINER_ROOT)/libs/$(TARGET_ARCH_ABI)/libnntrainer.so
+
+include $(PREBUILT_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+
+LOCAL_ARM_NEON := true
+LOCAL_CFLAGS += -std=c++17 -Ofast -mcpu=cortex-a53 -Ilz4-nougat/lib
+LOCAL_LDFLAGS += -Llz4-nougat/lib/obj/local/$(TARGET_ARCH_ABI)/
+LOCAL_CXXFLAGS += -std=c++17 -frtti
+LOCAL_CFLAGS += -pthread -fexceptions
+LOCAL_LDFLAGS += -fexceptions
+LOCAL_MODULE_TAGS := optional
+LOCAL_ARM_MODE := arm
+LOCAL_MODULE := nntrainer_logistic
+LOCAL_LDLIBS := -llog -landroid
+
+LOCAL_SRC_FILES := main.cpp
+
+LOCAL_SHARED_LIBRARIES := nntrainer
+
+LOCAL_C_INCLUDES += $(NNTRAINER_INCLUDES)
+
+include $(BUILD_EXECUTABLE)
diff --git a/Applications/Resnet/jni/Application.mk b/Applications/Resnet/jni/Application.mk
new file mode 100644 (file)
index 0000000..659caaf
--- /dev/null
@@ -0,0 +1,3 @@
+APP_ABI := arm64-v8a
+APP_STL := c++_shared
+APP_PLATFORM := android-29
diff --git a/Applications/Resnet/jni/main.cpp b/Applications/Resnet/jni/main.cpp
new file mode 100644 (file)
index 0000000..7f46bfb
--- /dev/null
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: Apache-2.0
+/**
+ * Copyright (C) 2020 Jihoon Lee <jhoon.it.lee@samsung.com>
+ *
+ * @file   main.cpp
+ * @date   24 Jun 2021
+ * @brief  task runner for the resnet
+ * @see    https://github.com/nnstreamer/nntrainer
+ * @author Jihoon Lee <jhoon.it.lee@samsung.com>
+ * @bug    No known bugs except for NYI items
+ */
+#include <iostream>
+#include <memory>
+#include <sstream>
+#include <vector>
+
+#include <layer.h>
+
+int main() {
+  std::cout << "Hello world\n";
+
+  return 0;
+}
diff --git a/Applications/Resnet/jni/meson.build b/Applications/Resnet/jni/meson.build
new file mode 100644 (file)
index 0000000..0423353
--- /dev/null
@@ -0,0 +1,12 @@
+resnet_sources = [
+  'main.cpp',
+]
+
+e = executable('nntrainer_resnet18',
+  resnet_sources,
+  dependencies: [app_utils_dep, iniparser_dep, nntrainer_dep, nntrainer_ccapi_dep],
+  install: get_option('install-app'),
+  install_dir: application_install_dir
+)
+
+test('app_resnet18', e)
diff --git a/Applications/Resnet/res/resnet18.ini b/Applications/Resnet/res/resnet18.ini
new file mode 100644 (file)
index 0000000..6b65ec6
--- /dev/null
@@ -0,0 +1,507 @@
+#
+# SPDX-License_Identifier: Apache-2.0
+# @file resnet18.ini
+# @author Jijoong Moon <jijoong.moon@samsung.com>
+# @date Jan 27 2021
+# @brief input configuration of Residual Net 18
+#
+
+[Model]
+Type = NeuralNetwork
+Epochs = 2
+Loss = cross
+Save_Path = "model.bin"
+batch_size = 128
+
+[Optimizer]
+Type = adam
+Learning_rate = 1e-4
+beta1 = 0.9
+beta2 = 0.999
+epsilon = 1e-7
+
+[inputlayer]
+Type = input
+Input_Shape = 3:32:32
+
+[first_layer_112_1]
+Type=conv2d
+input_layers = inputlayer
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=64
+stride =1,1
+padding=1,1
+
+[preparation_bn]
+Type=batch_normalization
+input_layers = first_layer_112_1
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[out0]
+Type=output
+input_layers=preparation_bn
+
+[B1_residue_1_conv_3]
+Type=conv2d
+input_layers=out0
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=64
+stride =1,1
+padding=1,1
+
+[B1_residue_2_bn]
+Type=batch_normalization
+input_layers = B1_residue_1_conv_3
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[B1_residue_2_conv_4]
+Type=conv2d
+input_layers = B1_residue_2_bn
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=64
+stride =1,1
+padding=1,1
+
+[B1_1_add]
+Type=addition
+input_layers=B1_residue_2_conv_4, out0
+
+[B1_1_bn]
+Type=batch_normalization
+input_layers = B1_1_add
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[out1]
+Type=output
+input_layers=B1_1_bn
+
+[B1_residue_3_conv_5]
+Type=conv2d
+input_layers = out1
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=64
+stride =1,1
+padding=1,1
+
+[B1_residue_4_bn]
+Type=batch_normalization
+input_layers = B1_residue_3_conv_5
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[B1_residue_4_conv_6]
+Type=conv2d
+input_layers = B1_residue_4_bn
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=64
+stride =1,1
+padding=1,1
+
+[B1_2_add]
+Type=addition
+input_layers=B1_residue_4_conv_6, out1
+
+[B1_2_bn]
+Type=batch_normalization
+input_layers = B1_2_add
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[out2]
+Type=output
+input_layers=B1_2_bn
+
+[B2_residue_1_conv_7]
+Type=conv2d
+input_layers = out2
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=128
+stride =2,2
+padding=1,1
+
+[B2_residue_2_bn]
+Type=batch_normalization
+input_layers = B2_residue_1_conv_7
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[B2_residue_2_conv_8]
+Type=conv2d
+input_layers = B2_residue_2_bn
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=128
+stride =1,1
+padding=1,1
+
+[B2_original_reshaped]
+Type=conv2d
+input_layers = out2
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=128
+stride =2,2
+padding=1,1
+
+[B2_1_add]
+Type=addition
+input_layers=B2_residue_2_conv_8, B2_original_reshaped
+
+[B2_1_bn]
+Type=batch_normalization
+input_layers = B2_1_add
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[out3]
+Type=output
+input_layers=B2_1_bn
+
+[B2_residue_3_conv_9]
+Type=conv2d
+input_layers = out3
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=128
+stride =1,1
+padding=1,1
+
+[B2_residue_4_bn]
+Type=batch_normalization
+input_layers = B2_residue_3_conv_9
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[B2_residue_4_conv_10]
+Type=conv2d
+input_layers = B2_residue_4_bn
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=128
+stride =1,1
+padding=1,1
+
+[B2_2_add]
+Type=addition
+input_layers=B2_residue_4_conv_10, out3
+
+[B2_2_bn]
+Type=batch_normalization
+input_layers = B2_2_add
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[out4]
+Type=output
+input_layers=B2_2_bn
+
+[B3_residue_1_conv_11]
+Type=conv2d
+input_layers = out4
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=256
+stride =2,2
+padding=1,1
+
+[B3_residue_2_bn]
+Type=batch_normalization
+input_layers = B3_residue_1_conv_11
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[B3_residue_2_conv_12]
+Type=conv2d
+input_layers = B3_residue_2_bn
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=256
+stride =1,1
+padding=1,1
+
+[B3_original_reshaped]
+Type=conv2d
+input_layers = out4
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=256
+stride =2,2
+padding=1,1
+
+[B3_1_add]
+Type=addition
+input_layers=B3_residue_2_conv_12, B3_original_reshaped
+
+[B3_1_bn]
+Type=batch_normalization
+input_layers = B3_1_add
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[out5]
+Type=output
+input_layers=B3_1_bn
+
+[B3_residue_3_conv_13]
+Type=conv2d
+input_layers = out5
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=256
+stride =1,1
+padding=1,1
+
+[B3_residue_4_bn]
+Type=batch_normalization
+input_layers = B3_residue_3_conv_13
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[B3_residue_4_conv_14]
+Type=conv2d
+input_layers = B3_residue_4_bn
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=256
+stride =1,1
+padding=1,1
+
+[B3_2_add]
+Type=addition
+input_layers=B3_residue_4_conv_14, out5
+
+[B3_2_bn]
+Type=batch_normalization
+input_layers = B3_2_add
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[out6]
+Type=output
+input_layers=B3_2_bn
+
+[B4_residue_1_conv_15]
+Type=conv2d
+input_layers = out6
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=512
+stride =2,2
+padding=1,1
+
+[B4_residue_2_bn]
+Type=batch_normalization
+input_layers = B4_residue_1_conv_15
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[B4_residue_2_conv_16]
+Type=conv2d
+input_layers = B4_residue_2_bn
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=512
+stride =1,1
+padding=1,1
+
+[B4_original_reshaped]
+Type=conv2d
+input_layers = out6
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=512
+stride =2,2
+padding=1,1
+
+[B4_1_add]
+Type=addition
+input_layers=B4_residue_2_conv_16, B4_original_reshaped
+
+[B4_1_bn]
+Type=batch_normalization
+input_layers = B4_1_add
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[out7]
+Type=output
+input_layers=B4_1_bn
+
+[B4_residue_3_conv_17]
+Type=conv2d
+input_layers = out7
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=512
+stride =1,1
+padding=1,1
+
+[B4_residue_4_bn]
+Type=batch_normalization
+input_layers = B4_residue_3_conv_17
+epsilon = 1.0e-6
+momentum = 0.9
+Activation = relu
+beta_initializer = zeros
+gamma_initializer = ones
+moving_mean_initializer = zeros
+moving_variance_initializer = ones
+
+[B4_residue_4_conv_18]
+Type=conv2d
+input_layers = B4_residue_4_bn
+kernel_size = 3,3
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=512
+stride =1,1
+padding=1,1
+
+[B4_2_add]
+Type=addition
+input_layers=B4_residue_4_conv_18, out7
+
+[out8]
+Type=output
+input_layers=B4_2_add
+
+[max_pooling2d_1]
+Type=pooling2d
+input_layers = out8
+pool_size = 4,4
+stride =4,4
+padding = 0,0
+pooling = max
+
+[average_pooling2d_1]
+Type=pooling2d
+input_layers = out8
+pool_size = 4,4
+stride =4,4
+padding = 0,0
+pooling = average
+
+[concatenate_1]
+Type=concat
+input_layers=max_pooling2d_1, average_pooling2d_1
+
+[linear]
+Type=conv2d
+input_layers = concatenate_1
+kernel_size = 1,1
+bias_initializer = zeros
+weight_initializer = xavier_uniform
+filters=10
+stride =1,1
+padding=0,0
+
+[flatten_1]
+Type=flatten
+input_layers = linear
+
+[activation]
+Type=Activation
+Activation = softmax
index 82a1c43c8b4435ac413b7f66d8cad78ab902ffeb..26b3865ea5582f2ed6da58227b2ff09afdf56c2c 100644 (file)
@@ -8,6 +8,7 @@ if get_option('enable-ccapi')
   subdir('MNIST/jni')
 endif
 subdir('VGG/jni')
+subdir('Resnet/jni')
 subdir('ReinforcementLearning/DeepQ/jni')
 subdir('TransferLearning/CIFAR_Classification/jni')
 subdir('TransferLearning/Draw_Classification/jni')
@@ -17,3 +18,4 @@ subdir('ProductRatings/jni')
 if get_option('enable-tflite-backbone')
   subdir('SimpleShot')
 endif
+