def resnet_basic(input, out_feature_map_count, bn_time_const): c1 = conv_bn_relu_layer(input, out_feature_map_count, [3, 3], [1, 1], bn_time_const) c2 = conv_bn_layer(c1, out_feature_map_count, [3, 3], [1, 1], bn_time_const) p = c2 + input return relu(p)
def create_resnet_model(input, num_classes): bn_time_const = 4096 c_map1 = 16 feat_scale = 0.00390625 input_norm = element_times(feat_scale, input) conv = conv_bn_relu_layer(input_norm, c_map1, [3, 3], [1, 1], bn_time_const) r1_1 = resnet_basic_stack3(conv, c_map1, bn_time_const) c_map2 = 32 r2_1 = resnet_basic_inc(r1_1, c_map2, [2, 2], bn_time_const) r2_2 = resnet_basic_stack2(r2_1, c_map2, bn_time_const) c_map3 = 64 r3_1 = resnet_basic_inc(r2_2, c_map3, [2, 2], bn_time_const) r3_2 = resnet_basic_stack2(r3_1, c_map3, bn_time_const) # Global average pooling poolw = 8 poolh = 8 poolh_stride = 1 poolv_stride = 1 pool = pooling(r3_2, AVG_POOLING, (1, poolh, poolw), (1, poolv_stride, poolh_stride)) return linear_layer(pool, num_classes)
def create_resnet_model(input, num_classes): bn_time_const = 4096 c_map1 = 16 feat_scale = 0.00390625 input_norm = element_times(feat_scale, input) conv = conv_bn_relu_layer(input, c_map1, [3, 3], [1, 1], bn_time_const) r1_1 = resnet_basic_stack3(conv, c_map1, bn_time_const) c_map2 = 32 r2_1 = resnet_basic_inc(r1_1, c_map2, [2, 2], bn_time_const) r2_2 = resnet_basic_stack2(r2_1, c_map2, bn_time_const) c_map3 = 64 r3_1 = resnet_basic_inc(r2_2, c_map3, [2, 2], bn_time_const) r3_2 = resnet_basic_stack2(r3_1, c_map3, bn_time_const) # Global average pooling poolw = 8 poolh = 8 poolh_stride = 1 poolv_stride = 1 pool = pooling(r3_2, AVG_POOLING, (1, poolh, poolw), (1, poolv_stride, poolh_stride)) return linear_layer(pool, num_classes)
def resnet_classifer(input, num_classes): conv_w_scale = 7.07 conv_b_value = 0 fc1_w_scale = 0.4 fc1_b_value = 0 sc_value = 1 bn_time_const = 4096 kernel_width = 3 kernel_height = 3 conv1_w_scale = 0.26 c_map1 = 16 conv1 = conv_bn_relu_layer(input, c_map1, kernel_width, kernel_height, 1, 1, conv1_w_scale, conv_b_value, sc_value, bn_time_const) rn1_1 = resnet_node2(conv1, c_map1, kernel_width, kernel_height, conv1_w_scale, conv_b_value, sc_value, bn_time_const) rn1_2 = resnet_node2(rn1_1, c_map1, kernel_width, kernel_height, conv1_w_scale, conv_b_value, sc_value, bn_time_const) rn1_3 = resnet_node2(rn1_2, c_map1, kernel_width, kernel_height, conv1_w_scale, conv_b_value, sc_value, bn_time_const) c_map2 = 32 rn2_1_wProj = get_projection_map(c_map2, c_map1) rn2_1 = resnet_node2_inc(rn1_3, c_map2, kernel_width, kernel_height, conv1_w_scale, conv_b_value, sc_value, bn_time_const, rn2_1_wProj) rn2_2 = resnet_node2(rn2_1, c_map2, kernel_width, kernel_height, conv1_w_scale, conv_b_value, sc_value, bn_time_const) rn2_3 = resnet_node2(rn2_2, c_map2, kernel_width, kernel_height, conv1_w_scale, conv_b_value, sc_value, bn_time_const) c_map3 = 64 rn3_1_wProj = get_projection_map(c_map3, c_map2) rn3_1 = resnet_node2_inc(rn2_3, c_map3, kernel_width, kernel_height, conv1_w_scale, conv_b_value, sc_value, bn_time_const, rn3_1_wProj) rn3_2 = resnet_node2(rn3_1, c_map3, kernel_width, kernel_height, conv1_w_scale, conv_b_value, sc_value, bn_time_const) rn3_3 = resnet_node2(rn3_2, c_map3, kernel_width, kernel_height, conv1_w_scale, conv_b_value, sc_value, bn_time_const) # Global average pooling poolw = 8 poolh = 8 poolh_stride = 1 poolv_stride = 1 pool = pooling(rn3_3, AVG_POOLING, (1, poolh, poolw), (1, poolv_stride, poolh_stride)) out_times_params = parameter(shape=(c_map3, 1, 1, num_classes), init=glorot_uniform()) out_bias_params = parameter(shape=(num_classes), init=0) t = times(pool, out_times_params) return t + out_bias_params
def resnet_basic_inc(input, out_feature_map_count, strides, bn_time_const): c1 = conv_bn_relu_layer(input, out_feature_map_count, [3, 3], strides, bn_time_const) c2 = conv_bn_layer(c1, out_feature_map_count, [3, 3], [1, 1], bn_time_const) s = conv_bn_layer(input, out_feature_map_count, [1, 1], strides, bn_time_const) p = c2 + s return relu(p)