initial commit
This commit is contained in:
179
sdk/software/examples/lenet/AccelConvFuncs.c
Normal file
179
sdk/software/examples/lenet/AccelConvFuncs.c
Normal file
@@ -0,0 +1,179 @@
|
||||
#include "AccelConvFuncs.h"
|
||||
|
||||
void accel_conv_func(int8_t* d_i, int8_t* weight, int32_t* bias, int32_t* d_o, int8_t di_type,
|
||||
int height, int width, int padding, int channel, int out_channel,
|
||||
int kernel_width, int kernel_height, int with_relu) {
|
||||
accel_conf_t accel_conf;
|
||||
accel_conf.buf_size = di_type;
|
||||
accel_conf.weight_size = 0;
|
||||
accel_conf.padding = padding;
|
||||
accel_conf.stride = 1;
|
||||
accel_conf.kernel_height = kernel_height;
|
||||
accel_conf.kernel_width = kernel_width;
|
||||
|
||||
int size_mul = di_type == 0b10 ? 4 :
|
||||
di_type == 0b01 ? 2 : 1;
|
||||
int buf_mul = di_type == 0b10 ? 1 :
|
||||
di_type == 0b01 ? 2 : 4;
|
||||
|
||||
int del_h = kernel_height - 1;
|
||||
int del_w = (kernel_width - 1) * size_mul;
|
||||
|
||||
int size_sft = size_mul >> 1;
|
||||
int buf_sft = buf_mul >> 1;
|
||||
int width_i = width * size_mul;
|
||||
int height_o = (height - kernel_height + padding * 2) + 1;
|
||||
int width_o = ((width - kernel_width + padding * 2) + 1);
|
||||
|
||||
|
||||
int h_append = 0;
|
||||
int res_h = 0;
|
||||
for (int h = 0; h < height; h += h_append) {
|
||||
int h_eq_0 = h == 0;
|
||||
h_append = h_eq_0 ? MAX_BUF_HEIGHT : MAX_BUF_HEIGHT - del_h;
|
||||
int h_remain = height - h;
|
||||
int buf_h_end = h_remain <= h_append;
|
||||
int buf_h;
|
||||
int begin_h = h_eq_0 ? 0 : h - del_h;
|
||||
if (buf_h_end) {
|
||||
if (h_eq_0) buf_h = h_remain;
|
||||
else buf_h = h_remain + del_h;
|
||||
} else {
|
||||
buf_h = MAX_BUF_HEIGHT;
|
||||
}
|
||||
accel_conf.buf_height = buf_h - 1;
|
||||
int res_h_append = (buf_h - kernel_height + (h_eq_0 + buf_h_end) * padding) + 1;
|
||||
|
||||
int w_append = 0;
|
||||
int res_w = 0;
|
||||
for (int w = 0; w < width_i; w += w_append) {
|
||||
int w_eq_0 = w == 0;
|
||||
w_append = w_eq_0 ? MAX_BUF_WIDTH : MAX_BUF_WIDTH - del_w;
|
||||
int w_remain = width_i - w;
|
||||
int buf_w_end = w_remain <= w_append;
|
||||
int buf_w;
|
||||
int begin_w = w_eq_0 ? 0 : w - del_w;
|
||||
if (buf_w_end) {
|
||||
if (w_eq_0) {
|
||||
buf_w = w_remain;
|
||||
} else {
|
||||
buf_w = (w_remain + del_w);
|
||||
}
|
||||
} else {
|
||||
buf_w = MAX_BUF_WIDTH;
|
||||
}
|
||||
int padding_valid = (w_eq_0) |
|
||||
(buf_w_end << 1) |
|
||||
(h_eq_0 << 2) |
|
||||
(buf_h_end << 3);
|
||||
int buf_offset = width_i - buf_w;
|
||||
int res_w_append = ((buf_w >> size_sft) - kernel_width + (w_eq_0 + buf_w_end) * padding) + 1;
|
||||
int res_offset = (width_o - res_w_append) << size_sft;
|
||||
int res_buf_info = ((res_w_append - 1) << 16) | res_offset;
|
||||
inst_conf_offset(buf_offset, res_buf_info);
|
||||
|
||||
accel_conf.buf_width = buf_w - 1;
|
||||
accel_conf.padding_valid = padding_valid;
|
||||
for (int k = 0; k < channel; k++) {
|
||||
accel_conf.buf_refresh = 1;
|
||||
accel_conf.wadd = k != 0;
|
||||
for (int c = 0; c < out_channel; c += MAX_KERNEL_NUM) {
|
||||
int valid_kernel_num = c + MAX_KERNEL_NUM > out_channel ? out_channel - c : MAX_KERNEL_NUM;
|
||||
accel_conf.kernel_num = valid_kernel_num - 1;
|
||||
inst_conf_buf((uint32_t)&d_i[(k * height + begin_h) * width_i + begin_w], accel_conf.val);
|
||||
for (int vc = 0; vc < valid_kernel_num; vc++) {
|
||||
int ca = c + vc;
|
||||
inst_conf_res_addr(&d_o[(ca * height_o + res_h) * width_o + res_w], vc);
|
||||
|
||||
if (k == 0) {
|
||||
inst_conf_res_bias(bias[ca], vc);
|
||||
// for (int m = 0; m < res_h_append; m++) {
|
||||
// for (int n = 0; n < res_w_append; n++) {
|
||||
// d_o[(ca * height_o + res_h + m) * width_o + res_w + n] = bias[ca];
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
if (k == channel - 1 && with_relu) {
|
||||
inst_conv_relu(&weight[(k * out_channel + c) * kernel_height * kernel_width]);
|
||||
} else {
|
||||
inst_conv(&weight[(k * out_channel + c) * kernel_height * kernel_width]);
|
||||
}
|
||||
accel_conf.buf_refresh = 0;
|
||||
}
|
||||
}
|
||||
res_w += res_w_append;
|
||||
}
|
||||
res_h += res_h_append;
|
||||
}
|
||||
}
|
||||
|
||||
// height and width must align 2
|
||||
void accel_pool_func(int32_t* d_i, int32_t* d_o, int pool_mode, int channel, int height, int width) {
|
||||
accel_conf_t conf;
|
||||
conf.buf_refresh = 1;
|
||||
conf.wadd = 0;
|
||||
conf.padding_valid = 0;
|
||||
conf.weight_size = 2;
|
||||
conf.buf_size = 2;
|
||||
conf.kernel_width = 2;
|
||||
conf.kernel_height = 2;
|
||||
conf.stride = 2;
|
||||
conf.kernel_num = 0;
|
||||
conf.padding = 0;
|
||||
|
||||
int max_width_word = MAX_BUF_WIDTH >> 2;
|
||||
|
||||
// for (int i = 0; i < height; i++) {
|
||||
// for(int j = 0; j < width; j++) {
|
||||
// printf("%x ", d_i[i * width + j]);
|
||||
// }
|
||||
// printf("\n");
|
||||
// }
|
||||
|
||||
int width_o = width >> 1;
|
||||
int height_o = height >> 1;
|
||||
|
||||
for (int c = 0; c < channel; c++) {
|
||||
int h_append;
|
||||
int res_h = 0;
|
||||
for (int h = 0; h < height; h += h_append) {
|
||||
h_append = height - h < MAX_BUF_HEIGHT ? height - h : MAX_BUF_HEIGHT;
|
||||
int buf_h = h_append;
|
||||
conf.buf_height = buf_h - 1;
|
||||
int res_h_append = buf_h >> 1;
|
||||
|
||||
int w_append;
|
||||
int res_w = 0;
|
||||
for (int w = 0; w < width; w += w_append) {
|
||||
int w_remain = width - w;
|
||||
w_append = w_remain < max_width_word ? w_remain : max_width_word;
|
||||
int buf_w = w_append;
|
||||
conf.buf_width = (buf_w << 2) - 1;
|
||||
|
||||
inst_conf_buf((uint32_t)&d_i[(c * height + h) * width + w], conf.val);
|
||||
inst_conf_res_addr((uint32_t)&d_o[(c * height_o + res_h) * width_o + res_w], 0);
|
||||
int buf_offset = (width - buf_w) << 2;
|
||||
int res_w_append = (buf_w >> 1);
|
||||
int res_offset = (width_o - res_w_append) << 2;
|
||||
int res_buf_info = ((res_w_append - 1) << 16) | res_offset;
|
||||
inst_conf_offset(buf_offset, res_buf_info);
|
||||
inst_pool(pool_mode);
|
||||
|
||||
res_w += res_w_append;
|
||||
}
|
||||
res_h += res_h_append;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void accel_linear_func(int32_t* d_i, int8_t* weight, int32_t* bias,
|
||||
int32_t* output, int input_size, int output_size) {
|
||||
// 线性层的瓶颈在于访存,cpu可以处理计算
|
||||
for (int i = 0; i < output_size; i++) {
|
||||
output[i] = bias[i];
|
||||
for (int j = 0; j < input_size; j++) {
|
||||
output[i] += d_i[j] * weight[i * input_size + j];
|
||||
}
|
||||
}
|
||||
}
|
||||
14
sdk/software/examples/lenet/AccelConvFuncs.h
Normal file
14
sdk/software/examples/lenet/AccelConvFuncs.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef __ACCEL__CONV__FUNCS__H__
|
||||
#define __ACCEL__CONV__FUNCS__H__
|
||||
#include "Accelop.h"
|
||||
|
||||
void accel_conv_func(int8_t* d_i, int8_t* weight, int32_t* bias, int32_t* d_o, int8_t di_type,
|
||||
int height, int width, int padding, int channel, int out_channel,
|
||||
int kernel_width, int kernel_height, int with_relu);
|
||||
|
||||
void accel_pool_func(int32_t* d_i, int32_t* d_o, int pool_mode, int channel, int height, int width);
|
||||
|
||||
void accel_linear_func(int32_t* d_i, int8_t* weight, int32_t* bias,
|
||||
int32_t* output, int input_size, int output_size);
|
||||
|
||||
#endif
|
||||
154
sdk/software/examples/lenet/Accelop.h
Normal file
154
sdk/software/examples/lenet/Accelop.h
Normal file
@@ -0,0 +1,154 @@
|
||||
#ifndef __ACCEL__OP__H__
|
||||
#define __ACCEL__OP__H__
|
||||
#include <stdint.h>
|
||||
// #define LACC_OP
|
||||
|
||||
typedef struct {
|
||||
union {
|
||||
struct {
|
||||
uint32_t buf_refresh: 1;
|
||||
uint32_t wadd: 1;
|
||||
uint32_t padding_valid: 4;
|
||||
uint32_t weight_size: 2;
|
||||
uint32_t buf_size: 2;
|
||||
uint32_t kernel_width: 3;
|
||||
uint32_t kernel_height: 3;
|
||||
uint32_t buf_width: 5;
|
||||
uint32_t buf_height: 4;
|
||||
uint32_t stride: 2;
|
||||
uint32_t kernel_num: 3;
|
||||
uint32_t padding: 2;
|
||||
};
|
||||
uint32_t val;
|
||||
};
|
||||
}accel_conf_t;
|
||||
|
||||
#define MAX_KERNEL_NUM 3
|
||||
#define MAx_KERNEL_WIDTH 3
|
||||
#define MAX_KERNEL_HEIGHT 3
|
||||
#define MAX_BUF_WIDTH 32
|
||||
#define MAX_BUF_HEIGHT 8
|
||||
|
||||
void inst_conf_buf(uint32_t addr, uint32_t para) {
|
||||
#ifdef LACC_OP
|
||||
asm volatile (
|
||||
"lacc 0x0, $r0, %[addr], %[para], 0x0\n\t"
|
||||
::[addr]"r"(addr), [para]"r"(para)
|
||||
);
|
||||
#else
|
||||
asm volatile (
|
||||
"move $r5, %[addr]\n\t"
|
||||
"move $r6, %[para]\n\t"
|
||||
".word 0xc00018a0\n\t"
|
||||
::[addr]"r"(addr),[para]"r"(para)
|
||||
:"$r5", "$r6"
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
void inst_conf_res_addr(uint32_t waddr, uint32_t idx) {
|
||||
#ifdef LACC_OP
|
||||
asm volatile (
|
||||
"lacc 0x1, $r0, %[addr], %[idx], 0x5\n\t"
|
||||
::[addr]"r"(waddr), [idx]"r"(idx)
|
||||
);
|
||||
#else
|
||||
asm volatile (
|
||||
"move $r5, %[addr]\n\t"
|
||||
"move $r6, %[idx]\n\t"
|
||||
".word 0xc04298a0\n\t"
|
||||
::[addr]"r"(waddr), [idx]"r"(idx)
|
||||
:"$r5", "$r6"
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
void inst_conf_res_bias(uint32_t bias, uint32_t idx) {
|
||||
#ifdef LACC_OP
|
||||
asm volatile (
|
||||
"lacc 0x1, $r0, %[bias], %[idx], 0x2\n\t"
|
||||
::[bias]"r"(bias), [idx]"r"(idx)
|
||||
);
|
||||
#else
|
||||
asm volatile (
|
||||
"move $r5, %[addr]\n\t"
|
||||
"move $r6, %[idx]\n\t"
|
||||
".word 0xc04118a0\n\t"
|
||||
::[addr]"r"(bias), [idx]"r"(idx)
|
||||
:"$r5", "$r6"
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
typedef void (*inst_conv_ptr_t)(uint32_t);
|
||||
|
||||
void inst_conv(uint32_t weight_addr) {
|
||||
#ifdef LACC_OP
|
||||
asm volatile (
|
||||
"lacc 0x2, $r0, %[addr], $r0, 0x1\n\t"
|
||||
::[addr]"r"(weight_addr)
|
||||
);
|
||||
#else
|
||||
asm volatile (
|
||||
"move $r5, %[addr]\n\t"
|
||||
".word 0xc08080a0\n\t"
|
||||
::[addr]"r"(weight_addr)
|
||||
: "$r5"
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
void inst_conv_relu(uint32_t weight_addr) {
|
||||
#ifdef LACC_OP
|
||||
asm volatile (
|
||||
"lacc 0x2, $r0, %[addr], $r0, 0x5\n\t"
|
||||
::[addr]"r"(weight_addr)
|
||||
);
|
||||
#else
|
||||
asm volatile (
|
||||
"move $r5, %[addr]\n\t"
|
||||
".word 0xc08280a0\n\t"
|
||||
::[addr]"r"(weight_addr)
|
||||
: "$r5"
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
#define POOL_MODE_MIN 0
|
||||
#define POOL_MODE_MAX 1
|
||||
#define POOL_MODE_AVG 2
|
||||
|
||||
void inst_pool(int pool_mode) {
|
||||
#ifdef LACC_OP
|
||||
asm volatile (
|
||||
"lacc 0x2, $r0, %[pool_mode], $r0, 0x2\n\t"
|
||||
::[pool_mode]"r"(pool_mode)
|
||||
);
|
||||
#else
|
||||
asm volatile (
|
||||
"move $r5, %[pool_mode]\n\t"
|
||||
".word 0xc08100a0\n\t"
|
||||
::[pool_mode]"r"(pool_mode)
|
||||
:"$r5"
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
void inst_conf_offset(uint32_t buf_offset, uint32_t res_offset) {
|
||||
#ifdef LACC_OP
|
||||
asm volatile (
|
||||
"lacc 0x3, $r0, %[buf_offset], %[res_offset], 0x0\n\t"
|
||||
::[buf_offset]"r"(buf_offset), [res_offset]"r"(res_offset)
|
||||
);
|
||||
#else
|
||||
asm volatile (
|
||||
"move $r5, %[buf_offset]\n\t"
|
||||
"move $r6, %[res_offset]\n\t"
|
||||
".word 0xc0c018a0"
|
||||
::[buf_offset]"r"(buf_offset),[res_offset]"r"(res_offset)
|
||||
:"$r5", "$r6"
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
97
sdk/software/examples/lenet/ConvFuncs.c
Normal file
97
sdk/software/examples/lenet/ConvFuncs.c
Normal file
@@ -0,0 +1,97 @@
|
||||
#include "ConvFuncs.h"
|
||||
|
||||
void conv_func(int8_t* d_i, int8_t* weight, int32_t* bias, int32_t* d_o, int8_t di_type,
|
||||
int height, int width, int padding, int channel, int out_channel,
|
||||
int kernel_width, int kernel_height) {
|
||||
// 使用多重循环卷积(BUF_HEIGHT - KERNEL_SIZE + PADDING * 2) / STRIDE + 1
|
||||
int16_t* d_16 = (int16_t*)d_i;
|
||||
int32_t* d_32 = (int32_t*)d_i;
|
||||
int height_o = (height - kernel_height + padding * 2) + 1;
|
||||
int width_o = (width - kernel_width + padding * 2) + 1;
|
||||
for (int c = 0; c < out_channel; c++) {
|
||||
for (int h = -padding; h < (height - kernel_height + padding) + 1; h++) {
|
||||
for (int w = -padding; w < (width - kernel_width + padding) + 1; w++) {
|
||||
int32_t sum = 0;
|
||||
for(int k = 0; k < channel; k++) {
|
||||
for (int m = 0; m < kernel_height; m++) {
|
||||
for (int n = 0; n < kernel_width; n++) {
|
||||
int h_m = h + m;
|
||||
int w_n = w + n;
|
||||
if (h_m >= 0 && h_m < height && w_n >= 0 && w_n < width) {
|
||||
if(di_type == 0){
|
||||
sum += d_i[(k * height + h_m) * width + w_n] *
|
||||
weight[((c * channel + k) * kernel_height + m) * kernel_width + n];
|
||||
} else if (di_type == 1) {
|
||||
sum += d_16[(k * height + h_m) * width + w_n] *
|
||||
weight[((c * channel + k) * kernel_height + m) * kernel_width + n];
|
||||
} else if (di_type == 2) {
|
||||
sum += d_32[(k * height + h_m) * width + w_n] *
|
||||
weight[((c * channel + k) * kernel_height + m) * kernel_width + n];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
d_o[c * height_o * width_o + (h+padding) * width_o + w + padding] = sum + bias[c];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void pool_func(int32_t* d_i, int32_t* d_o, int channel, int height, int width) {
|
||||
for (int c = 0; c < channel; c++) {
|
||||
for (int h = 0; h < height / 2; h++) {
|
||||
for (int w = 0; w < width / 2; w++) {
|
||||
int32_t sum = d_i[(c * height + (h << 1)) * width + (w << 1)] +
|
||||
d_i[(c * height + (h << 1) + 1) * width + (w << 1)] +
|
||||
d_i[(c * height + (h << 1)) * width + (w << 1) + 1] +
|
||||
d_i[(c * height + (h << 1) + 1) * width + (w << 1) + 1];
|
||||
if(sum > 0) d_o[(c * height / 2 + h) * (width / 2) + w] = sum >> 2;
|
||||
else d_o[(c * height / 2 + h) * (width / 2) + w] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void linear_func(
|
||||
int32_t* d_i,
|
||||
int8_t* weight,
|
||||
int32_t* bias,
|
||||
int32_t* output,
|
||||
int input_size,
|
||||
int output_size) {
|
||||
|
||||
for (int i = 0; i < output_size; i++) {
|
||||
output[i] = bias[i];
|
||||
for (int j = 0; j < input_size; j++) {
|
||||
output[i] += d_i[j] * weight[i * input_size + j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void relu_int(int32_t *x, int size) {
|
||||
for (int i = 0; i < size; i++) {
|
||||
if (x[i] < 0) {
|
||||
x[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void softmax(int32_t *x, float *output, int size) {
|
||||
int32_t max = x[0];
|
||||
for (int i = 1; i < size; i++) {
|
||||
if (x[i] > max) {
|
||||
max = x[i];
|
||||
}
|
||||
}
|
||||
|
||||
float sum = 0;
|
||||
for (int i = 0; i < size; i++) {
|
||||
output[i] = exp((float)(x[i] - max)) ;
|
||||
sum += output[i];
|
||||
}
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
output[i] /= sum;
|
||||
}
|
||||
}
|
||||
16
sdk/software/examples/lenet/ConvFuncs.h
Normal file
16
sdk/software/examples/lenet/ConvFuncs.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef __CONV_FUNCS_H__
|
||||
#define __CONV_FUNCS_H__
|
||||
#include <stdint.h>
|
||||
|
||||
void conv_func(int8_t* d_i, int8_t* weight, int32_t* bias, int32_t* d_o, int8_t di_type,
|
||||
int height, int width, int padding, int channel, int out_channel,
|
||||
int kernel_width, int kernel_height);
|
||||
|
||||
void pool_func(int32_t* d_i, int32_t* d_o, int channel, int height, int width);
|
||||
|
||||
void linear_func(int32_t* d_i, int8_t* weight, int32_t* bias, int32_t* output, int input_size, int output_size);
|
||||
|
||||
void relu_int(int32_t *x, int size);
|
||||
|
||||
void softmax(int32_t *x, float *output, int size);
|
||||
#endif
|
||||
11
sdk/software/examples/lenet/Makefile
Normal file
11
sdk/software/examples/lenet/Makefile
Normal file
@@ -0,0 +1,11 @@
|
||||
TARGET = lenet
|
||||
|
||||
CFLAGS += -O3 -g
|
||||
|
||||
C_SRCS := $(wildcard ./*.c )
|
||||
|
||||
OBJDIR = obj
|
||||
COMMON_DIR = ../../bsp
|
||||
GCC_DIR=../../../toolchains/loongson-gnu-toolchain-8.3-x86_64-loongarch32r-linux-gnusf-v2.0
|
||||
PICOLIBC_DIR=../../../toolchains/picolibc
|
||||
include ../../bsp/common.mk
|
||||
160
sdk/software/examples/lenet/main.c
Normal file
160
sdk/software/examples/lenet/main.c
Normal file
@@ -0,0 +1,160 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
#include <time.h>
|
||||
#include "ConvFuncs.h"
|
||||
#include "weights.h"
|
||||
#include "test_image.h"
|
||||
#include "common_func.h"
|
||||
|
||||
|
||||
//BSP板级支持包所需全局变量
|
||||
unsigned long UART_BASE = 0xbf000000; //UART16550的虚地址
|
||||
unsigned long CONFREG_TIMER_BASE = 0xbf20f100; //CONFREG计数器的虚地址
|
||||
unsigned long CONFREG_CLOCKS_PER_SEC = 50000000L; //CONFREG时钟频率
|
||||
unsigned long CORE_CLOCKS_PER_SEC = 33000000L; //处理器核时钟频率
|
||||
|
||||
int start = 0;
|
||||
|
||||
|
||||
void InterruptInit(void)
|
||||
{
|
||||
// Enable button and timer Interrupt
|
||||
RegWrite(0xbf20f004,0x0f);//edge
|
||||
RegWrite(0xbf20f008,0x1f);//pol
|
||||
RegWrite(0xbf20f00c,0x1f);//clr
|
||||
RegWrite(0xbf20f000,0x1f);//en
|
||||
}
|
||||
|
||||
void HWI0_IntrHandler(void)
|
||||
{
|
||||
unsigned int int_state;
|
||||
int_state = RegRead(0xbf20f014);
|
||||
|
||||
if(int_state & 0xf){
|
||||
Button_IntrHandler(int_state & 0xf);
|
||||
}
|
||||
}
|
||||
|
||||
void Button_IntrHandler(unsigned char button_state)
|
||||
{
|
||||
if((button_state & 0b0001) == 0b0001){
|
||||
start = 1;
|
||||
RegWrite(0xbf20f00c,0x1);//clr
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int compare(int32_t* dut, int32_t* ref, int size) {
|
||||
for (int i = 0; i < size; i++) {
|
||||
if (dut[i] != ref[i]) {
|
||||
printf("Error at index %d: expected %d, got %d, %x\n", i, ref[i], dut[i], (uint32_t)&dut[i]);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void printImage(int8_t* image, int height, int width) {
|
||||
for (int i = 0; i < height; i++) {
|
||||
for (int j = 0; j < width; j++) {
|
||||
printf("%d ", image[i * width + j] != -1);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void flush_dcache(int size) {
|
||||
for (int i = 0; i < size; i++) {
|
||||
int index = size << 4;
|
||||
init_dcache_line(index);
|
||||
}
|
||||
}
|
||||
|
||||
int simu_flag;
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
InterruptInit();
|
||||
simu_flag = RegRead(0xbf20f500);
|
||||
|
||||
int32_t conv1_out[6][28][28] = { 0 };
|
||||
int32_t pool1_out[6][14][14] = { 0 };
|
||||
int32_t conv2_out[16][12][12] = { 0 };
|
||||
int32_t pool2_out[16][6][6] = { 0 };
|
||||
int32_t fc1_out[10] = { 0 };
|
||||
int acc = 0;
|
||||
int begin_clk, end_clk;
|
||||
|
||||
int32_t accel_conv1_out[6][28][28];
|
||||
int32_t accel_pool1_out[6][14][14] = { 0 };
|
||||
int32_t accel_conv2_out[16][12][12] = { 0 };
|
||||
int32_t accel_pool2_out[16][6][6] = { 0 };
|
||||
int32_t accel_fc1_out[10] = { 0 };
|
||||
|
||||
int test_idx = 0;
|
||||
int test_num = 0;
|
||||
|
||||
printf("image num: %d\n", TEST_IMAGE_SIZE);
|
||||
|
||||
int clk, ret;
|
||||
while (1) {
|
||||
if(!simu_flag) delay_ms(200);
|
||||
if (start | simu_flag) {
|
||||
start = 0;
|
||||
printf("start\n");
|
||||
int gold_clk = 0;
|
||||
if (!simu_flag) {
|
||||
printImage(test_image[test_idx], 28, 28);
|
||||
|
||||
flush_dcache(256);
|
||||
|
||||
gold_clk = clock();
|
||||
conv_func(test_image[test_idx], w_conv1, b_conv1, conv1_out, 0, 28, 28, 1, 1, 6, 3, 3);
|
||||
relu_int(&conv1_out, 6 * 28 * 28);
|
||||
pool_func(conv1_out, pool1_out, 6, 28, 28);
|
||||
conv_func(pool1_out, w_conv2, b_conv2, conv2_out, 2, 14, 14, 0, 6, 16, 3, 3);
|
||||
relu_int(&conv2_out, 16 * 12 * 12);
|
||||
pool_func(conv2_out, pool2_out, 16, 12, 12);
|
||||
linear_func(pool2_out, w_fc1, b_fc1, fc1_out, 576, 10);
|
||||
gold_clk = clock() - gold_clk;
|
||||
|
||||
flush_dcache(256);
|
||||
|
||||
}
|
||||
|
||||
clk = clock();
|
||||
accel_conv_func(test_image[test_idx], w_conv1, b_conv1, accel_conv1_out, 0, 28, 28, 1, 1, 6, 3, 3, 1);
|
||||
accel_pool_func(accel_conv1_out, accel_pool1_out, 2, 6, 28, 28);
|
||||
accel_conv_func(accel_pool1_out, w_conv2_rev, b_conv2, accel_conv2_out, 2, 14, 14, 0, 6, 16, 3, 3, 1);
|
||||
accel_pool_func(accel_conv2_out, accel_pool2_out, 2, 16, 12, 12);
|
||||
accel_linear_func(accel_pool2_out, w_fc1, b_fc1, accel_fc1_out, 576, 10);
|
||||
clk = clock() - clk;
|
||||
|
||||
int index = 0;
|
||||
float max = accel_fc1_out[0];
|
||||
for (int j = 1; j < 10; j++) {
|
||||
if (accel_fc1_out[j] > max) {
|
||||
index = j;
|
||||
max = accel_fc1_out[j];
|
||||
}
|
||||
}
|
||||
printf("recognized number: %d\n", index);
|
||||
if (index == test_target[test_idx]) acc++;
|
||||
test_num++;
|
||||
test_idx = (test_idx + 1) % TEST_IMAGE_SIZE;
|
||||
if (simu_flag) {
|
||||
printf("Accuracy: %d/%d, clk: %d\n",
|
||||
acc, test_num, clk);
|
||||
} else {
|
||||
printf("Accuracy: %d/%d, gold_clk: %d, clk: %d speedup: %f\n",
|
||||
acc, test_num, gold_clk, clk, (float)gold_clk/(float)clk);
|
||||
}
|
||||
if (simu_flag) break;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
23
sdk/software/examples/lenet/test_image.h
Normal file
23
sdk/software/examples/lenet/test_image.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef __TEST_IMAGE__H__
|
||||
#define __TEST_IMAGE__H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define TEST_IMAGE_SIZE 10
|
||||
|
||||
int8_t test_image[TEST_IMAGE_SIZE][28][28] = {
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 6, 4, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 7, 0, -1, -1, -1, -1, 0, 7, 5, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 5, -1, -1, -1, -1, -1, 5, 8, 2, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 8, 8, 3, -1, -1, -1, -1, 0, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 8, 7, 0, -1, -1, -1, -1, 2, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 7, -1, -1, -1, -1, 0, 8, 8, 2, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 4, -1, -1, -1, -1, 1, 8, 8, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 7, 0, -1, -1, -1, 3, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 4, -1, -1, -1, 4, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 6, 8, 8, 6, 6, 7, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 7, 8, 8, 8, 8, 8, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 2, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 8, 8, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 7, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}},
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 6, 8, 8, 7, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 8, 8, 8, 8, 8, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 7, 6, 5, 3, 7, 8, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0, 5, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 2, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 7, 7, 8, 7, 7, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 6, 8, 8, 6, 4, 5, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 5, 2, -1, -1, -1, 6, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 6, 0, -1, -1, -1, 0, 7, 8, 8, 8, 5, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 1, -1, -1, -1, -1, 4, 8, 4, 2, 8, 7, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 1, -1, -1, -1, 2, 8, 8, 0, 0, 7, 8, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 4, 8, 2, -1, -1, 0, 7, 8, 3, -1, -1, 4, 8, 6, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 8, 7, 1, 1, 5, 8, 7, 0, -1, -1, 0, 3, 3, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 8, 8, 8, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 8, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 7, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}},
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 8, 3, 3, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 7, 8, 8, 8, 8, 8, 7, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 7, 5, 2, 2, 5, 7, 7, 1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 6, 2, 0, -1, -1, -1, -1, 1, 7, 7, 1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 5, 6, 0, -1, -1, -1, -1, -1, -1, -1, 4, 8, 7, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 0, 4, 1, 0, 0, -1, -1, -1, -1, -1, -1, 0, 4, 8, 4, 0, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 0, 0, 2, 7, 7, 1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 0, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 4, 8, 8, 8, 2, -1, -1, -1, -1, -1, -1, 0, 7, 8, 0, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 4, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 0, 8, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 4, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 0, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 4, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 2, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 2, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, 0, 7, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 6, 0, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, 0, 8, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 8, 4, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 5, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, 3, 7, 8, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 1, 8, 6, 0, -1, -1, -1, -1, -1, -1, 4, 7, 8, 4, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 3, 0, -1, -1, -1, 0, 4, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 8, 5, 2, 2, 4, 5, 8, 8, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 8, 8, 8, 8, 8, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 5, 4, 3, 3, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}},
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3, 8, 5, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 6, 8, 5, 1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 6, 8, 5, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 6, 7, 3, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 6, 7, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 8, 6, 5, 4, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 5, 8, 6, 1, 2, 3, 6, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 7, 1, -1, -1, -1, 0, 6, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 1, -1, -1, -1, -1, -1, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 7, 8, 6, 0, -1, -1, -1, -1, 0, 7, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 1, -1, -1, -1, -1, 0, 7, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 5, 8, 4, -1, -1, -1, -1, 0, 6, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 7, 8, 4, -1, -1, 0, 0, 7, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 5, 8, 8, 4, 3, 7, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 3, 7, 8, 8, 6, 3, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}},
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 0, 2, 2, 6, 8, 8, 8, 8, 8, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, 0, 1, 4, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, 5, 8, 8, 8, 8, 7, 6, 7, 6, 6, 6, 7, 8, 8, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, 1, 7, 8, 8, 2, 2, 0, -1, -1, -1, -1, -1, 2, 8, 8, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 5, 7, 8, 7, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 5, 8, 8, 7, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 8, 8, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 7, 2, 1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 2, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 8, 8, 7, 6, 6, 7, 6, 7, 8, 8, 8, 2, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 2, 2, 0, -1, -1, -1, -1, 0, 2, 8, 8, 7, 1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 2, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 2, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 6, 0, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 7, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 5, 8, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 3, 7, 7, 8, 8, 7, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 5, 8, 8, 8, 8, 8, 5, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 8, 8, 8, 5, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}},
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 4, 5, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 6, 8, 8, 8, 8, 8, 8, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 8, 8, 8, 8, 4, 6, 8, 8, 1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 8, 7, 1, -1, -1, 5, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 8, 4, -1, -1, 0, 7, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 7, -1, -1, 7, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 3, 3, 8, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 7, 7, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 8, 8, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, 8, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 8, 8, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 8, 8, 7, 4, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 7, 2, -1, 3, 7, 8, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 3, -1, -1, -1, 5, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 6, 0, -1, -1, -1, 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 2, -1, -1, -1, -1, 2, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 0, -1, -1, -1, 2, 7, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 4, 4, 5, 8, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 8, 8, 8, 6, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3, 4, 8, 5, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}},
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 3, 8, 8, 8, 8, 4, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 5, 6, 8, 8, 8, 8, 8, 8, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 0, 8, 8, 8, 8, 8, 8, 8, 8, 6, 7, 8, 8, 8, 6, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 8, 8, 8, 8, 4, 0, 0, 1, 8, 8, 8, 6, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3, 3, 6, 1, -1, -1, -1, 6, 8, 8, 8, 6, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, 8, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 7, 8, 8, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 5, 8, 8, 8, 8, 4, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 8, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 8, 8, 5, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 8, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 8, 8, 8, 8, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 5, 8, 8, 8, 8, 8, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 8, 8, 8, 8, 8, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 8, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 1, 7, 8, 3, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}},
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 4, 7, 6, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 6, 8, 8, 8, 8, 8, 4, 1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 8, 5, 5, 7, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 7, 8, 8, 6, 1, -1, -1, 0, 6, 8, 8, 7, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 7, 8, 8, 0, -1, -1, -1, 1, 8, 8, 8, 7, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 8, 7, 3, 0, 0, 7, 8, 8, 8, 2, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 7, 8, 8, 8, 8, 8, 8, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 6, 8, 8, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 8, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 8, 7, 7, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 7, 0, 4, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, 8, 8, 3, -1, 4, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, -1, -1, 4, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 8, 6, 0, 2, 7, 8, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 8, 8, 8, 8, 8, 8, 8, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 8, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 7, 8, 8, 8, 7, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}},
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 6, 8, 8, 8, 8, 1, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 5, 7, 8, 8, 8, 8, 8, 8, 8, 1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 7, 8, 8, 8, 8, 8, 8, 6, 7, 8, 8, 1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 8, 8, 8, 4, 4, 1, 0, 4, 8, 7, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 4, 8, 8, 8, 8, 7, 1, -1, -1, -1, 5, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 6, 7, 6, 4, 0, -1, -1, 0, 5, 8, 8, 4, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 6, 6, 4, 6, 7, 8, 8, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 8, 8, 8, 8, 8, 7, 7, 8, 8, 8, 7, 0, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 8, 8, 8, 6, 3, -1, 0, 4, 6, 8, 8, 1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3, 8, 0, 0, 0, -1, -1, -1, 0, 6, 8, 5, 0, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 1, 6, 8, 4, 0, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 8, 6, 0, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 2, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, 0, 5, 8, 7, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 7, 0, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, 0, 6, 8, 8, 8, 6, 1, -1, -1, -1, -1, -1, -1, 0, 7, 8, 8, 6, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, 1, 8, 8, 7, 8, 8, 8, 8, 3, 0, 0, 0, 4, 8, 8, 7, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, 0, 6, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, 3, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, 0, 3, 8, 8, 8, 8, 4, 4, 4, 2, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}},
|
||||
{{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 3, 3, 1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 2, 3, 3, 3, 7, 8, 8, 8, 8, 8, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 0, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 5, 0, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 5, 1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 0, 6, 8, 8, 8, 8, 8, 6, 6, 6, 6, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 6, 8, 8, 8, 8, 3, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 8, 8, 8, 8, 7, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 8, 8, 8, 8, 8, 8, 7, 5, 5, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 5, 5, 5, 7, 8, 8, 8, 8, 6, 0, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 5, 8, 8, 8, 5, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 0, -1, -1, -1, 0, 7, 8, 8, 8, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 3, 7, 8, 7, 3, 0, -1, -1, 1, 8, 8, 8, 2, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 8, 8, 8, 6, 2, 3, 7, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 3, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 0, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, 0, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 4, 8, 8, 8, 8, 8, 8, 4, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3, 3, 3, 3, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}}
|
||||
};
|
||||
|
||||
int test_target[TEST_IMAGE_SIZE] = {4, 2, 0, 6, 3, 8, 7, 8, 3, 5};
|
||||
|
||||
#endif // __TEST_IMAGE__H__
|
||||
62
sdk/software/examples/lenet/weights.h
Normal file
62
sdk/software/examples/lenet/weights.h
Normal file
@@ -0,0 +1,62 @@
|
||||
#ifndef __WEIGHTS__H__
|
||||
#define __WEIGHTS__H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
int8_t w_conv1[6][3][3] = {
|
||||
{{-43, -52, -8}, {15, -8, 91}, {32, 101, 91}},
|
||||
{{-17, 33, -10}, {109, 106, 69}, {64, 89, 14}},
|
||||
{{0, -51, -93}, {-80, -43, -26}, {40, 78, 114}},
|
||||
{{75, 6, 83}, {34, 75, 65}, {-114, -120, -74}},
|
||||
{{60, 36, 44}, {34, 127, 9}, {75, 40, -49}},
|
||||
{{4, 7, 25}, {-91, -44, -109}, {-79, -28, -87}}
|
||||
};
|
||||
|
||||
int8_t w_conv2[16][6][3][3] = {
|
||||
{{{12, 13, -12}, {46, -29, -42}, {15, -25, -25}}, {{-8, 40, -29}, {27, 25, -42}, {15, 18, -23}}, {{-66, -41, -10}, {-58, -45, 6}, {-38, -50, -2}}, {{-9, -41, 1}, {-10, -72, -30}, {-26, -81, -65}}, {{27, 45, -23}, {13, 58, -45}, {23, 26, -57}}, {{-61, 15, 29}, {-39, 9, 44}, {0, 42, 13}}},
|
||||
{{{18, -67, -47}, {-49, -30, 46}, {-34, 33, 56}}, {{29, 14, -83}, {-79, -85, 9}, {-39, -14, 33}}, {{-2, -6, 58}, {23, 79, 108}, {8, 5, 3}}, {{58, 41, 45}, {45, -66, -13}, {-49, -2, 88}}, {{43, 41, -50}, {-37, -127, -40}, {-93, -16, 58}}, {{-20, -7, 31}, {22, 27, -32}, {15, -27, -46}}},
|
||||
{{{-69, -37, -1}, {13, -20, -71}, {64, 56, 34}}, {{-26, -19, 46}, {-15, -64, -87}, {50, 12, 42}}, {{-51, -52, -26}, {8, 18, -29}, {-18, -19, 14}}, {{20, 65, 75}, {-44, -11, 3}, {-7, 28, -84}}, {{-4, 7, 27}, {-23, -67, -47}, {55, 21, -27}}, {{38, 26, 28}, {28, -1, 28}, {-8, -30, 29}}},
|
||||
{{{-2, -1, 9}, {-32, -5, 15}, {30, -1, -20}}, {{-15, 21, -24}, {-18, 9, -19}, {18, -5, -46}}, {{-10, 16, 42}, {-11, -20, 5}, {-17, -13, 1}}, {{71, 49, -18}, {54, 63, 45}, {-81, -21, -14}}, {{9, 1, 10}, {21, 0, 34}, {-3, -40, -9}}, {{-45, 3, -20}, {13, 7, -1}, {30, 3, -2}}},
|
||||
{{{-42, -10, 0}, {-3, 26, -9}, {46, -26, -73}}, {{27, -44, 21}, {-19, 20, 10}, {-3, 20, -27}}, {{-17, 9, 5}, {55, 29, -61}, {43, -41, 9}}, {{49, 12, -34}, {-19, -28, 6}, {19, 21, -7}}, {{8, -28, 26}, {-46, 10, 41}, {29, 34, -30}}, {{-2, -14, -84}, {19, -46, -74}, {-33, -50, 18}}},
|
||||
{{{-22, -12, 50}, {-61, -3, 4}, {-35, -7, 6}}, {{48, -50, 9}, {11, -15, 18}, {-18, -22, 3}}, {{-41, -34, -26}, {0, -31, -69}, {25, 0, -40}}, {{11, -2, 7}, {-48, -92, -8}, {-74, -65, -38}}, {{20, -55, 54}, {13, -75, 50}, {-22, -14, 35}}, {{19, 13, -12}, {30, 29, -42}, {3, 32, -43}}},
|
||||
{{{9, 41, 25}, {-18, -26, -6}, {4, 7, 14}}, {{0, 32, 3}, {7, -1, 27}, {-10, -48, -4}}, {{1, -16, 4}, {-46, -24, -21}, {66, 51, 59}}, {{40, 53, -3}, {62, 72, 50}, {-50, -66, -35}}, {{-20, 19, 3}, {7, -3, 25}, {-47, -58, -15}}, {{-29, -31, -28}, {9, 10, 0}, {-3, 33, 13}}},
|
||||
{{{24, -14, -41}, {14, -12, 3}, {-2, 24, 27}}, {{20, -37, -70}, {-10, 19, -6}, {-27, 39, 32}}, {{-41, -30, 2}, {-31, 4, -23}, {16, -6, 19}}, {{-8, -68, -13}, {49, -14, -26}, {21, 94, 62}}, {{45, 7, -67}, {11, 21, -52}, {-18, -1, 10}}, {{-43, 21, 15}, {-75, -16, 8}, {12, -23, -53}}},
|
||||
{{{2, -9, 32}, {-23, 29, -9}, {-55, 26, -9}}, {{0, -43, 25}, {7, -33, 23}, {-55, 4, 27}}, {{1, 3, -61}, {17, -14, -120}, {-15, -63, -124}}, {{18, -46, -47}, {-2, -32, -58}, {-51, -28, -65}}, {{0, -49, 68}, {12, -14, 66}, {-36, -29, 62}}, {{21, 9, -19}, {48, 9, -70}, {32, -4, -57}}},
|
||||
{{{-38, 41, -14}, {38, 33, -58}, {23, -72, -33}}, {{-16, 20, -4}, {-36, 17, -30}, {2, -11, -49}}, {{11, 11, -35}, {54, 18, -21}, {33, -21, 9}}, {{-3, -34, -20}, {-32, -24, 27}, {3, 50, -8}}, {{-18, 33, 27}, {-27, 33, 18}, {38, 38, -37}}, {{15, -42, -52}, {-29, -55, -25}, {-60, -17, 45}}},
|
||||
{{{0, -33, -29}, {16, -7, -20}, {8, 22, -21}}, {{-6, -43, -36}, {2, -10, -7}, {8, 0, 9}}, {{52, 16, -14}, {-1, 30, 20}, {17, 16, 0}}, {{22, 60, 93}, {107, 51, -2}, {62, 41, 46}}, {{-24, -49, -29}, {-4, -23, -27}, {26, 18, 22}}, {{27, 9, 50}, {-37, -7, -9}, {-3, -23, -12}}},
|
||||
{{{-28, -79, -65}, {-18, 15, 36}, {-4, 55, 20}}, {{17, -12, -64}, {-32, -56, -15}, {-26, 26, 27}}, {{-45, 6, 27}, {40, 45, 46}, {56, 9, 48}}, {{93, 6, -28}, {14, -76, -29}, {-67, -12, 43}}, {{60, -33, -69}, {-48, -79, -12}, {-7, 7, 68}}, {{-6, -12, 9}, {-2, 14, -1}, {-24, -18, -5}}},
|
||||
{{{15, -4, -30}, {-3, 36, -29}, {-3, 23, 14}}, {{-5, 11, -30}, {-5, 36, -3}, {-30, 36, 29}}, {{-22, -35, -23}, {-38, -41, 1}, {-27, -63, 23}}, {{0, -50, -83}, {-25, -75, -111}, {-50, -26, -29}}, {{-37, 20, 4}, {1, 38, -8}, {9, 49, 27}}, {{-48, -80, -20}, {6, -33, -30}, {1, -51, -39}}},
|
||||
{{{15, -22, -26}, {21, -1, 11}, {-23, 6, -13}}, {{-10, -41, -15}, {25, -5, -4}, {-31, -26, -19}}, {{-17, 7, 10}, {0, -21, -8}, {-5, 10, 47}}, {{5, -55, -38}, {55, 62, 45}, {54, 55, 14}}, {{-17, -28, -12}, {31, 35, 30}, {-17, -6, 2}}, {{2, -20, -6}, {-10, -22, 12}, {27, 14, 25}}},
|
||||
{{{-8, -27, 36}, {-31, 37, 50}, {-57, 28, 12}}, {{24, -67, -46}, {-18, -24, 30}, {-41, 1, -4}}, {{12, 18, 92}, {-27, 12, 33}, {7, -11, -27}}, {{29, -33, -123}, {-61, -85, 4}, {-44, -75, -35}}, {{21, -68, -77}, {1, -60, 14}, {-77, -22, 52}}, {{5, 0, 31}, {7, 20, -13}, {-2, 5, 5}}},
|
||||
{{{-28, -15, -5}, {16, 16, 14}, {-25, -8, -37}}, {{-18, -30, -30}, {28, 23, 30}, {-14, 16, 8}}, {{0, 3, 6}, {-7, 4, -5}, {-27, -44, -41}}, {{5, 23, 16}, {11, -5, 9}, {50, 71, 40}}, {{-7, -22, -36}, {37, 0, 20}, {27, 39, 10}}, {{10, 30, 3}, {-24, -17, -16}, {2, -29, 3}}}
|
||||
};
|
||||
|
||||
int8_t w_conv2_rev[6][16][3][3] = {
|
||||
{{{12, 13, -12}, {46, -29, -42}, {15, -25, -25}}, {{18, -67, -47}, {-49, -30, 46}, {-34, 33, 56}}, {{-69, -37, -1}, {13, -20, -71}, {64, 56, 34}}, {{-2, -1, 9}, {-32, -5, 15}, {30, -1, -20}}, {{-42, -10, 0}, {-3, 26, -9}, {46, -26, -73}}, {{-22, -12, 50}, {-61, -3, 4}, {-35, -7, 6}}, {{9, 41, 25}, {-18, -26, -6}, {4, 7, 14}}, {{24, -14, -41}, {14, -12, 3}, {-2, 24, 27}}, {{2, -9, 32}, {-23, 29, -9}, {-55, 26, -9}}, {{-38, 41, -14}, {38, 33, -58}, {23, -72, -33}}, {{0, -33, -29}, {16, -7, -20}, {8, 22, -21}}, {{-28, -79, -65}, {-18, 15, 36}, {-4, 55, 20}}, {{15, -4, -30}, {-3, 36, -29}, {-3, 23, 14}}, {{15, -22, -26}, {21, -1, 11}, {-23, 6, -13}}, {{-8, -27, 36}, {-31, 37, 50}, {-57, 28, 12}}, {{-28, -15, -5}, {16, 16, 14}, {-25, -8, -37}}},
|
||||
{{{-8, 40, -29}, {27, 25, -42}, {15, 18, -23}}, {{29, 14, -83}, {-79, -85, 9}, {-39, -14, 33}}, {{-26, -19, 46}, {-15, -64, -87}, {50, 12, 42}}, {{-15, 21, -24}, {-18, 9, -19}, {18, -5, -46}}, {{27, -44, 21}, {-19, 20, 10}, {-3, 20, -27}}, {{48, -50, 9}, {11, -15, 18}, {-18, -22, 3}}, {{0, 32, 3}, {7, -1, 27}, {-10, -48, -4}}, {{20, -37, -70}, {-10, 19, -6}, {-27, 39, 32}}, {{0, -43, 25}, {7, -33, 23}, {-55, 4, 27}}, {{-16, 20, -4}, {-36, 17, -30}, {2, -11, -49}}, {{-6, -43, -36}, {2, -10, -7}, {8, 0, 9}}, {{17, -12, -64}, {-32, -56, -15}, {-26, 26, 27}}, {{-5, 11, -30}, {-5, 36, -3}, {-30, 36, 29}}, {{-10, -41, -15}, {25, -5, -4}, {-31, -26, -19}}, {{24, -67, -46}, {-18, -24, 30}, {-41, 1, -4}}, {{-18, -30, -30}, {28, 23, 30}, {-14, 16, 8}}},
|
||||
{{{-66, -41, -10}, {-58, -45, 6}, {-38, -50, -2}}, {{-2, -6, 58}, {23, 79, 108}, {8, 5, 3}}, {{-51, -52, -26}, {8, 18, -29}, {-18, -19, 14}}, {{-10, 16, 42}, {-11, -20, 5}, {-17, -13, 1}}, {{-17, 9, 5}, {55, 29, -61}, {43, -41, 9}}, {{-41, -34, -26}, {0, -31, -69}, {25, 0, -40}}, {{1, -16, 4}, {-46, -24, -21}, {66, 51, 59}}, {{-41, -30, 2}, {-31, 4, -23}, {16, -6, 19}}, {{1, 3, -61}, {17, -14, -120}, {-15, -63, -124}}, {{11, 11, -35}, {54, 18, -21}, {33, -21, 9}}, {{52, 16, -14}, {-1, 30, 20}, {17, 16, 0}}, {{-45, 6, 27}, {40, 45, 46}, {56, 9, 48}}, {{-22, -35, -23}, {-38, -41, 1}, {-27, -63, 23}}, {{-17, 7, 10}, {0, -21, -8}, {-5, 10, 47}}, {{12, 18, 92}, {-27, 12, 33}, {7, -11, -27}}, {{0, 3, 6}, {-7, 4, -5}, {-27, -44, -41}}},
|
||||
{{{-9, -41, 1}, {-10, -72, -30}, {-26, -81, -65}}, {{58, 41, 45}, {45, -66, -13}, {-49, -2, 88}}, {{20, 65, 75}, {-44, -11, 3}, {-7, 28, -84}}, {{71, 49, -18}, {54, 63, 45}, {-81, -21, -14}}, {{49, 12, -34}, {-19, -28, 6}, {19, 21, -7}}, {{11, -2, 7}, {-48, -92, -8}, {-74, -65, -38}}, {{40, 53, -3}, {62, 72, 50}, {-50, -66, -35}}, {{-8, -68, -13}, {49, -14, -26}, {21, 94, 62}}, {{18, -46, -47}, {-2, -32, -58}, {-51, -28, -65}}, {{-3, -34, -20}, {-32, -24, 27}, {3, 50, -8}}, {{22, 60, 93}, {107, 51, -2}, {62, 41, 46}}, {{93, 6, -28}, {14, -76, -29}, {-67, -12, 43}}, {{0, -50, -83}, {-25, -75, -111}, {-50, -26, -29}}, {{5, -55, -38}, {55, 62, 45}, {54, 55, 14}}, {{29, -33, -123}, {-61, -85, 4}, {-44, -75, -35}}, {{5, 23, 16}, {11, -5, 9}, {50, 71, 40}}},
|
||||
{{{27, 45, -23}, {13, 58, -45}, {23, 26, -57}}, {{43, 41, -50}, {-37, -127, -40}, {-93, -16, 58}}, {{-4, 7, 27}, {-23, -67, -47}, {55, 21, -27}}, {{9, 1, 10}, {21, 0, 34}, {-3, -40, -9}}, {{8, -28, 26}, {-46, 10, 41}, {29, 34, -30}}, {{20, -55, 54}, {13, -75, 50}, {-22, -14, 35}}, {{-20, 19, 3}, {7, -3, 25}, {-47, -58, -15}}, {{45, 7, -67}, {11, 21, -52}, {-18, -1, 10}}, {{0, -49, 68}, {12, -14, 66}, {-36, -29, 62}}, {{-18, 33, 27}, {-27, 33, 18}, {38, 38, -37}}, {{-24, -49, -29}, {-4, -23, -27}, {26, 18, 22}}, {{60, -33, -69}, {-48, -79, -12}, {-7, 7, 68}}, {{-37, 20, 4}, {1, 38, -8}, {9, 49, 27}}, {{-17, -28, -12}, {31, 35, 30}, {-17, -6, 2}}, {{21, -68, -77}, {1, -60, 14}, {-77, -22, 52}}, {{-7, -22, -36}, {37, 0, 20}, {27, 39, 10}}},
|
||||
{{{-61, 15, 29}, {-39, 9, 44}, {0, 42, 13}}, {{-20, -7, 31}, {22, 27, -32}, {15, -27, -46}}, {{38, 26, 28}, {28, -1, 28}, {-8, -30, 29}}, {{-45, 3, -20}, {13, 7, -1}, {30, 3, -2}}, {{-2, -14, -84}, {19, -46, -74}, {-33, -50, 18}}, {{19, 13, -12}, {30, 29, -42}, {3, 32, -43}}, {{-29, -31, -28}, {9, 10, 0}, {-3, 33, 13}}, {{-43, 21, 15}, {-75, -16, 8}, {12, -23, -53}}, {{21, 9, -19}, {48, 9, -70}, {32, -4, -57}}, {{15, -42, -52}, {-29, -55, -25}, {-60, -17, 45}}, {{27, 9, 50}, {-37, -7, -9}, {-3, -23, -12}}, {{-6, -12, 9}, {-2, 14, -1}, {-24, -18, -5}}, {{-48, -80, -20}, {6, -33, -30}, {1, -51, -39}}, {{2, -20, -6}, {-10, -22, 12}, {27, 14, 25}}, {{5, 0, 31}, {7, 20, -13}, {-2, 5, 5}}, {{10, 30, 3}, {-24, -17, -16}, {2, -29, 3}}}
|
||||
};
|
||||
|
||||
int8_t w_fc1[10][576] = {
|
||||
{-6, -4, -15, -14, -18, 2, -7, -15, 0, -10, -5, -2, -6, 21, 14, -15, 11, 11, -1, 13, 21, -61, -12, -4, 3, 21, -18, -26, -15, -12, 4, 0, -13, -25, -30, -27, -12, -10, -15, -15, -7, -4, 0, -6, -8, -13, -34, -3, -7, 5, -8, -31, -6, -15, -24, -3, -4, -12, 4, 0, -23, -51, -28, -3, 20, 6, -13, -28, -17, 0, 5, 1, 4, 4, -8, 0, -7, -6, -3, -18, -10, -2, -1, -12, -9, -28, -21, -32, -39, -16, -24, -58, -24, -10, -30, -22, -14, -13, -25, 0, -5, 1, -10, -1, 5, 4, 5, 1, -1, -10, -10, -5, 4, -1, -4, -16, 2, 11, -8, -10, -5, -11, -28, -5, -18, -24, -3, -23, -73, -69, -2, 9, -18, -13, -23, -16, 0, -1, 5, -8, 11, -6, -18, -10, 4, -15, -16, -18, -21, 2, -4, -1, -12, -25, -37, -26, -6, 10, 0, -51, -2, 1, 14, 7, -34, 4, 12, 14, 5, -9, -14, 3, 5, 1, 7, 2, -18, -45, -16, -1, -4, -5, -9, -2, -7, -5, -11, -11, -19, -3, -3, -2, -5, -1, -20, 7, 39, 0, 1, 17, -29, 24, 41, -4, -10, 15, -35, -20, -6, -14, -16, -4, -28, -61, -26, -8, 4, -11, -21, -16, -13, -1, -2, -24, -24, 8, -5, -22, -11, -22, -24, -7, -5, -35, -8, -16, -43, -57, -3, 0, -21, -9, -9, -7, -6, -5, 7, -8, 7, -12, -18, -10, -2, -11, -12, -9, -8, -3, -5, -12, -11, 20, -6, 7, -6, -21, -13, -13, -1, 1, -10, 8, 16, -32, -10, 2, -8, 8, 11, -24, -20, -16, -6, 11, 14, -19, -26, -20, -6, -14, -8, -4, 4, -7, 0, -6, -13, -12, 4, -5, 8, -9, 3, -2, 14, 7, 18, 20, -13, 6, 23, 6, 5, -3, -23, -26, -10, -4, 10, -13, -24, -43, -19, -6, 6, -15, -12, -11, -30, -2, -6, -4, 4, -15, -44, -15, -11, 8, 5, -41, -6, 16, 7, 10, -2, -3, 10, 14, 4, -18, 4, 0, 1, 1, 5, -10, -16, -21, -12, -7, -8, -16, -5, -1, -9, -3, -4, -3, -8, 8, -3, -13, 2, 3, -18, -74, -25, -3, -10, -39, -31, -12, -23, -26, -24, -14, -8, 1, -19, -28, -12, -18, 3, 11, -5, 4, -9, -7, -16, -15, -20, -5, -6, -8, -8, -16, -56, -17, -1, 3, -3, -51, -37, -27, -11, -24, -22, 9, -2, -6, -18, -47, -14, 12, 36, 0, -3, -11, 3, 12, -3, -6, -8, -8, 12, -5, 3, 4, -6, 1, -9, 4, -5, 16, -8, -9, -4, -18, 8, 20, -3, -13, -1, -29, -18, 14, 3, -3, 13, -15, -23, -9, -5, -6, -20, -22, -10, -8, -8, -13, -28, -12, -22, -19, -11, -14, -3, -1, -14, -25, -1, -17, -23, -44, -5, 4, -2, 7, -55, -39, 8, -9, 2, -5, 0, -3, -8, -17, 2, 2, 20, 12, -18, -21, -16, -2, -12, -6, -5, -7, -2, 2, 7, -12, -36, -4, 7, -4, -9, -27, -10, -16, -5, -4, -7, 14, -1, -10, -16, -57, -30, -4, 14, 2, -8, -40, -26, 8, 9, 3, -6, -16, -2, -12, -8, -4, -7, -7, -5, 6, -4, 0, -3, -2, -17, -80, -21, -7, -12, -22, -31, -35, -25, -20, -17, -21, 3, 5, -13, -19, -14, -23, -6, 12, -7, -10},
|
||||
{7, 12, 25, 18, 2, -6, -5, -13, 6, 35, -3, -6, 9, -11, -14, 15, -10, -20, 4, -3, -6, 10, -32, -6, 5, 8, 35, -24, -28, 0, -5, 5, -9, -9, -8, 2, -18, -16, -5, 2, 7, 5, -9, -30, -25, 30, 1, 2, -3, -16, 9, 5, -8, -4, -20, -23, -1, -11, -7, 8, 7, 3, 18, -7, -23, -7, -6, -18, -35, -23, -13, -7, -4, -2, -14, -13, -10, -11, -8, 6, -9, 14, -11, -12, -10, 3, -33, -12, -27, -18, -5, 3, -40, -15, 13, -4, -5, 6, 21, 16, 3, -12, -9, -11, 4, 7, 1, -5, -1, -9, -13, -4, 2, 7, -5, -27, -26, -40, -44, -16, -7, -10, 0, -24, -39, -16, 5, -22, -10, -40, -26, -3, -10, -16, -17, -5, -22, 3, 0, -4, -21, -9, 1, 1, -7, -14, 7, -5, -2, -14, -11, -28, 0, -5, -7, -16, -13, -15, 0, -13, -30, 2, -14, -25, -16, -34, -13, 4, -19, 6, -8, -49, -26, -5, -5, -5, -19, -13, -5, -2, -6, -11, 3, 0, 11, -5, -7, -20, 0, 35, 27, 2, -8, -19, -3, 23, 14, 6, -17, -28, 25, -11, 10, 7, -7, -14, 31, -13, 4, -2, -4, -10, -12, 4, -12, 0, -1, -7, -22, -21, -5, -8, -4, -14, -20, -66, -59, -15, -11, -9, 13, -17, -39, -12, 4, -22, -5, -33, -26, -4, -22, -21, -26, -6, -4, 4, -7, 8, -26, 2, 5, 3, 3, -1, -29, -24, -19, -1, -3, 5, 4, -15, -3, -8, 4, -9, -49, 26, 2, -21, -3, -11, -55, -6, -23, -5, 1, 5, 1, 1, -5, -5, 7, 4, 26, -6, -6, -2, -6, -2, 22, 13, 16, 1, -17, -9, 9, 36, 13, -7, -13, -19, 1, 19, -8, 0, -24, -12, 12, -9, -16, 5, -16, -13, 16, -6, -8, 7, -9, -11, -14, 2, -4, -5, 1, -15, -2, 0, -6, -5, -8, -27, -14, -13, 5, -23, 1, -7, -11, -3, -21, -7, 1, -6, -15, -4, -29, -12, -3, 5, -21, -25, -21, -10, -2, -17, -23, -9, -5, 4, 7, -19, -17, -27, -13, -11, -3, -11, -35, -20, -57, -30, 0, -3, -30, -16, -58, -5, -9, -18, -27, -32, -36, 4, 14, 15, 1, 2, 12, 8, -1, -14, -24, -6, -13, 8, -6, -13, -13, -1, 2, -13, -1, -15, -35, 7, -10, -3, -1, -3, 2, -2, -23, -2, -18, -8, -10, -8, -1, 10, 14, 10, 9, -27, -45, -9, -9, -4, -13, -39, -21, -4, 5, -12, -8, 4, -6, -4, -10, -19, 14, 16, 9, -6, -3, -21, -32, 5, -5, -10, -7, -13, -11, 12, -26, -12, -4, -14, -6, 12, 2, -2, 0, 1, -12, -23, 1, -8, -1, -19, -33, -40, -27, -4, -3, -13, -9, -32, -46, -12, -2, -15, -16, -31, -55, -15, 1, -25, -28, -42, -87, -7, -9, 7, 0, -19, 5, -6, 7, -10, -32, -12, 3, -7, -9, -12, 5, 19, 24, -10, -15, -24, -7, 39, 50, 6, -9, -8, 19, 18, 30, 4, -9, -5, 1, -8, 13, -16, 3, -3, -19, 15, -8, -20, -6, 0, 3, -12, -25, -19, 5, -16, -19, -19, -22, -20, -9, -17, -24, -7, -28, -25, -2, -10, -42, -14, -55, -2, -12, -13, -42, -37, -50, -5, 1, 13, -22, 18, 17, 12, 4, -29, -42, -36, -16, -5},
|
||||
{-6, -5, -8, -6, 2, 6, -2, -16, -9, 5, -5, 6, -5, -50, -33, -5, -2, -8, -5, -63, -35, -10, -15, -34, 5, 6, -11, -30, -15, -28, 9, 4, -43, -33, -4, -21, -11, -21, -32, -31, -33, -6, -3, 6, -25, -45, -23, -6, 14, 13, -11, -8, 8, 30, 12, 26, 19, 8, 22, -3, -18, -9, 8, -15, -32, 5, -28, -37, -17, -28, -13, -13, -11, -8, -9, -2, -11, -9, 4, 15, -1, -16, 7, -11, 6, 34, 39, 19, -30, -7, 2, -20, -42, -43, -17, -8, -19, -59, -26, 3, 43, 17, -8, -13, -2, 21, 12, -9, -2, 25, 29, 5, -7, -14, -11, -2, 17, -3, -31, -42, 6, 0, -19, -17, -42, -18, -25, -35, -30, -26, -11, 32, -1, -16, -3, 3, 18, 28, 14, -2, -7, 11, 11, 8, 5, 3, -3, -12, -28, -2, 0, -3, -7, -33, -36, -30, -17, -26, -33, -7, 15, 18, -1, 4, 14, 7, 5, 14, 13, 8, -3, -13, -54, 3, 6, -22, -46, -53, -25, -6, -2, 8, -15, -27, -29, 12, -12, -17, -19, 8, 7, 8, -29, -36, -32, 23, 20, 11, -8, -21, -11, -7, -41, -10, 0, 11, -13, -49, -28, -23, -7, -20, -56, -12, 12, -8, -8, 17, 16, 21, -15, -14, -10, 4, 3, 18, -11, -40, 0, 11, -5, 1, -31, -24, -21, -55, -36, -29, -27, 33, -10, -26, -14, 5, 25, 26, 3, -2, -5, 4, 4, -1, 5, -7, 16, 14, 11, -14, 8, -23, 5, 13, -2, -8, 13, -33, -24, -14, -7, 3, 3, -74, -53, -8, -22, -12, -5, -43, -26, 24, 0, -18, -4, -8, -49, -15, 18, -14, -14, -11, -23, -19, -24, -8, -7, -19, -26, -14, 13, -7, -45, -48, -45, 1, 16, 2, -15, -13, -18, 15, -26, 0, 16, 19, -10, -38, -39, -6, -2, -20, -44, -46, -10, 1, -3, 7, -13, -24, -26, -5, 1, 8, 5, -21, -37, -19, 0, -23, -50, -19, 14, 8, 1, -11, 12, 11, 7, -4, 16, 9, -7, -10, -33, -19, 9, -25, -23, -44, -33, -5, -13, -5, -7, 3, -5, -24, -4, -17, -20, -12, -31, -28, 13, 30, 21, -12, -32, -1, 18, 8, -8, -1, -16, 7, -19, -36, -23, 4, 54, 49, -35, -36, -28, 10, 35, 2, -9, -10, -26, -22, -32, -15, 0, 10, -16, -69, -68, -13, 19, 26, 3, -9, -5, 24, 10, 22, 3, 25, 30, 5, -18, -11, 0, 4, -21, -9, -26, -10, -7, -33, -19, -18, 3, 1, 10, -4, 1, -4, 1, -28, 7, 1, 4, -21, -16, -51, -28, -28, 8, -17, 5, -39, 10, -15, 3, -19, 12, 1, 26, -7, -12, -10, -1, -6, -27, -22, -12, -1, 0, 16, 19, 4, -3, -27, -8, -7, -9, -10, -39, -33, -10, -10, -27, -47, -45, -8, -9, -9, 6, 6, 4, 31, 17, -19, -17, -15, 20, 18, -11, -14, -10, -8, 6, 1, -7, -9, -16, -29, -15, -1, -4, 1, -20, -53, -18, 13, 5, -15, -13, -5, 15, 6, 8, 25, 28, 0, 38, -19, -10, 5, 17, -21, -76, -27, -28, -34, 10, -20, -37, -8, -4, 6, -1, -8, -5, -11, 8, -4, -2, -13, -33, -31, 15, 11, 13, -32, -43, -10, 18, 7, -4, -8, 5, 17, -12, -25, -2, 7, 30, 24, -25, -50, -15, -2, 16, 10},
|
||||
{2, -9, 4, 6, 7, -7, -2, -36, -29, 12, 7, 13, 5, -31, -39, -36, 8, -20, 0, -35, -45, -27, 4, -13, 5, -59, -86, -1, 14, 6, -1, -22, -27, 1, 5, -16, 3, -3, -12, -34, -47, -3, -4, -11, -8, -55, -39, -16, -13, 28, 58, -3, -28, -5, -19, -32, -31, -26, -18, -5, -16, -20, 3, 10, 5, -11, 5, 22, 35, 40, -9, -8, -9, -3, 6, 7, -4, -4, -1, 8, 6, -10, -23, -21, 2, -16, -32, -37, -7, -6, 5, 19, 38, 3, -11, -13, -3, 19, 23, -13, -46, -16, -9, -13, -25, -35, -43, -6, 5, 24, 37, 12, -10, 0, 16, 2, -14, -19, -54, -44, 5, -5, -6, 0, -10, -4, -34, -25, -10, 10, 2, -44, 15, -9, -8, -22, -30, -36, -1, 10, 1, -3, -11, -24, 4, -9, -30, -17, -9, -18, 8, -6, -3, 3, 8, -19, -17, -31, 23, 31, -10, -12, -39, -53, -15, -29, -23, -20, -9, -48, -19, 6, 15, -5, -17, -8, 0, 16, -4, 6, 4, -10, -25, -39, -24, 2, -11, -33, -48, -53, -5, 18, -30, -22, -12, -44, -56, 3, -37, -19, 3, -50, -23, 4, -9, -44, -50, -18, -4, 4, -1, -13, -52, -26, -22, 10, 10, 16, 32, 14, -4, -7, 4, 15, 17, -11, -59, -48, -7, 6, 13, -13, -11, -23, -28, -9, 0, 4, -19, -47, 10, -9, 15, -11, -34, -42, -8, -7, -12, -6, -13, -17, 0, 6, 14, -4, 10, 2, 4, -6, 0, 8, 5, 1, 0, -73, -93, 2, 7, 4, 9, -26, -45, -7, 4, -9, 21, -10, -35, -8, 7, 4, 9, 4, -42, -22, -18, -16, -2, -27, -28, -10, -16, -7, -26, -50, -44, -49, -6, -4, -57, -31, -5, -39, -47, -6, -35, -31, -18, -64, -26, 1, -25, -35, -67, -36, -14, -3, -20, -20, -25, -14, -10, -6, 6, 11, -39, -44, -17, -7, 16, -16, -18, 13, 26, -8, -8, -32, -13, 11, 1, -16, -25, -70, -36, -28, -17, -14, -3, -46, -48, 11, 10, -6, -8, 4, 6, 6, 7, 0, 3, 2, -3, 8, 8, -19, -3, -5, 4, -1, -21, -37, -3, -17, -26, -1, -12, -35, -4, -1, -7, -10, 3, 1, 6, 21, 11, 2, -24, -38, 17, 40, 38, 3, -26, -16, -2, -12, -2, -12, -27, -17, -7, -5, -9, -53, -44, -18, -12, -1, 38, 14, 2, 6, -21, -35, -15, -27, -24, -2, -11, -13, -13, -7, -3, -13, 12, 28, 38, 20, -1, 3, 1, 3, 2, 14, 13, 0, 9, -23, 6, 5, 10, 3, -9, -66, -13, -14, -16, -29, 13, -9, -8, -16, -5, -1, 9, -8, -23, -12, -2, 4, 11, 1, -23, -15, 4, -6, 9, 11, 22, -5, -18, -24, 20, 16, 7, 8, -22, -26, -8, -20, -2, 25, 19, -14, -15, -26, -15, 4, -10, -41, 1, -6, -26, 6, -21, -32, 8, 17, 10, -12, -17, -21, -4, -10, -27, -40, -30, -6, -9, -27, -78, -87, -12, -9, -15, -6, 27, -27, -40, -8, -21, -31, -17, -36, -39, 0, -19, -18, 7, -12, -21, -1, 4, 1, 24, 7, 7, 2, -2, 2, -11, 4, 3, -17, 1, 10, 11, 11, -7, -16, -9, 0, -12, 5, -7, -44, -11, -17, 4, -2, -4, 3, 4, 14, 18, -4, -23, -26, 11, 31, 29, -3, -21, -7},
|
||||
{-5, 1, -7, 1, -28, -15, -3, 30, 44, 9, -4, -13, -3, 11, 3, -20, 0, -23, -2, 1, -21, -9, -5, -20, 5, -5, -2, 5, -7, -17, 0, 0, 0, -12, -16, -2, 1, 3, 1, 3, 19, 15, -11, -2, -9, -4, 28, 0, -6, 0, -68, -18, -8, -19, -18, -18, -40, -15, 1, -1, -12, 5, -11, -25, -12, -2, -17, -23, -25, -37, -19, -3, -7, 5, -12, -13, -13, -9, -16, -15, -44, -77, -34, -9, -6, -51, -33, -39, -11, 8, -1, 7, 22, -14, -11, 6, -6, -11, -8, -36, 2, -8, 1, -22, -41, -31, -19, -10, 3, -14, -19, -15, -7, 2, -1, -22, -77, -76, -65, 9, -7, -15, -24, -24, -60, -11, 1, 5, 28, 27, 11, -15, -16, -9, -9, 18, 10, -10, -11, -26, -38, -23, 4, 1, 0, -13, -18, -15, -17, 14, -11, -15, -4, 7, 24, 6, -13, 30, -6, 7, 3, -7, 8, 0, -47, 10, -26, -9, -8, -17, -8, -10, -32, -1, -8, -1, -1, 11, 0, -3, -7, -8, 6, 5, 17, -4, -2, 1, 31, 58, 56, 1, 6, 16, -25, 6, 23, -7, -5, -7, -27, -5, -27, -8, -22, -29, 16, 11, -9, -3, -9, -11, 4, 9, 6, -4, -6, -10, -15, -20, -14, -7, -1, -4, -79, -94, -76, 3, -18, -26, -35, -20, -45, -12, 1, -5, 20, 14, 11, -12, -14, -3, -19, 8, -9, -19, -20, -20, -21, -2, 4, 9, -3, -24, -66, -64, -34, -8, -10, -1, -8, -11, -26, -22, 0, 11, 36, -26, 8, -38, -3, 16, 32, -27, 12, -10, -7, -31, -34, -27, -17, -14, 5, -15, 3, 7, -4, -5, -1, -15, 16, 25, 22, 1, -7, 1, 29, 68, 51, 9, -5, -2, -11, 23, 25, 4, 4, -13, -24, 22, 5, 4, -19, -14, 3, 16, 6, -5, -16, -2, -17, -6, 9, -7, -6, -11, -17, -16, -4, 6, -4, -12, -4, 12, 16, 4, -20, 23, 8, -6, -4, -10, 17, 8, -12, 4, -15, -8, -18, -7, -7, -8, -28, -5, -2, -12, -22, -6, -1, -8, 2, -1, -25, -19, -24, 8, -15, -10, -9, -36, -20, -24, -8, -7, -2, -20, 5, -8, -12, -21, 3, 6, -1, -2, -1, -8, -30, -59, -13, -8, 4, -30, -52, -21, -15, -1, -3, -6, -5, -9, 4, 9, -7, -12, -23, 1, 27, 0, -8, -4, -35, -8, -9, -11, -5, -19, -26, -10, 10, 1, -11, 11, -40, -30, -20, -7, -11, -14, -28, -35, -17, -5, -2, -24, -43, -29, -29, 8, -3, 10, 1, -4, -35, -18, 5, 22, 11, 9, -4, -15, -1, 14, -15, -6, -1, -9, -5, -37, -58, -8, -8, -12, -2, -8, -8, -22, -13, 7, -2, -11, -26, -52, -30, -1, -4, -29, -58, -68, -53, -9, -16, -11, -6, -15, 5, -16, 11, 22, 25, 40, 19, 0, -11, -25, -18, -20, -21, -4, -11, -16, -25, -38, -3, 5, -13, -6, 3, 9, 5, -2, -10, -3, 1, 37, 26, -1, 8, 9, -54, -10, -5, -19, -11, -16, -57, -25, -25, -16, 3, 14, -15, -23, -13, -13, -8, -2, -13, -50, -25, -9, 2, 2, -19, -32, -30, 4, -14, -21, -21, -32, -21, -27, -7, 10, 9, -16, 2, -12, -4, -5, 4, 10, 10, -9, -8, -15, -34, -48, -15, -9, 6, -23, -57, -51, -25, -2},
|
||||
{5, -4, -37, -55, -7, -30, -6, -2, 10, -53, -29, -53, 6, -23, 7, -28, -29, -49, -5, -50, -15, -22, -9, -21, -5, -33, -25, -6, -1, 0, 1, -19, -9, 2, -14, 5, -23, -6, -4, -3, 6, 4, -12, -24, -16, 8, 43, 24, -28, -42, -29, -49, -34, -8, -8, -35, -27, -23, -40, -8, 0, 14, 3, 4, -7, -8, -7, -5, 16, 14, 13, -9, -7, -5, 0, -8, -19, -17, -14, -38, -10, 14, -2, -2, -12, -5, 18, 57, 36, 21, 17, 29, 2, 10, 8, -2, -10, 10, 11, -4, -14, -19, -3, -1, -12, -24, -12, -6, -13, -16, -22, 7, 14, 1, -22, -33, 0, 22, 37, 33, -17, -7, -5, 8, 17, 20, -4, 16, 2, -18, -40, -30, -1, 4, -4, -43, -28, -20, -25, -4, 5, -5, -5, 0, -6, -2, -8, 8, 21, 19, -10, -19, -17, -27, -6, 52, -12, -7, -12, -102, -127, -23, -16, -27, -39, -37, -34, -19, 5, -16, -11, 0, 3, 8, -20, -6, 1, 9, 11, 3, -2, -14, -11, -2, 1, -4, -6, 4, 16, -32, -35, -6, -5, 6, -5, -78, -65, -14, -21, -25, -37, 5, -11, -2, -6, -32, -46, -2, 7, 2, -11, -1, -43, -39, 2, 0, -5, -16, -38, -2, 17, 3, -13, -29, -26, 7, 31, 34, -14, 3, -13, 16, 19, 36, -13, 25, -2, -22, -17, -42, -4, 13, -5, -28, -37, -22, -32, -8, -3, -17, -13, 1, -1, -14, -12, -8, -7, -2, -14, -22, -19, -36, -27, -14, -1, 11, 10, -22, -26, -51, 6, -26, -10, -1, -8, -16, 8, -7, -22, -3, 4, 9, 0, -3, -9, 1, -11, 1, -8, -9, 2, -1, -23, -5, 3, 19, 16, -38, -57, 5, -6, -1, 7, -67, -61, -15, -24, -29, -54, -16, -19, 1, -26, -30, -44, -10, 11, 9, -26, -29, -30, -35, 3, 5, -9, -14, -9, 11, 36, 5, -7, -10, -20, -26, -17, 14, -4, -9, 2, -56, -115, -41, -13, -26, -26, -43, -29, -24, 3, -10, -11, 4, 9, 13, -13, -10, 12, 0, 1, 7, -10, -18, -13, -1, 2, 2, -28, -21, -12, -6, -1, 7, -22, -39, 0, 8, 15, 7, 3, 13, -6, -4, -17, -13, -5, 13, 3, -7, -12, -14, -2, 11, 48, 8, -2, -11, -12, -2, -2, 10, 4, 11, -22, -30, -11, 31, 52, 36, -26, -39, -24, -41, -25, -8, -9, -18, -16, -32, -49, -30, -2, -2, 0, 9, -19, -13, -5, -3, 22, 11, 9, -10, -3, -8, -13, 4, -17, -1, -16, 16, 1, -25, -45, -10, -3, 7, 11, -33, -15, -30, -6, -18, -11, -13, -2, -6, -10, -15, 10, 9, -9, 11, 4, -10, -2, 3, -3, 7, -15, -27, -21, -4, 5, 9, -18, -13, 11, 22, 33, 23, -10, 2, 9, -10, -16, -1, -12, 4, -20, -31, -28, -19, 0, 14, -7, -8, -2, -11, -14, -17, -2, -5, -14, 1, -3, -5, -13, 6, -19, -10, -5, 2, 17, 13, -14, -15, -22, -27, -25, -50, 5, -11, -15, -38, -29, -31, -6, 2, -10, -13, -11, 14, 7, -4, -10, -8, 16, 25, 5, 0, -15, -19, -26, -17, -9, -4, -28, -30, 4, 13, 11, 2, -20, -17, -8, -6, 23, 9, -8, -6, -17, -14, -11, -9, 0, 14, 14, 3, -22, -1, 0, 1, 18, 15, -23, -12},
|
||||
{-6, 23, 41, 19, 0, 3, 7, 18, 18, -23, -50, -11, 5, 16, -6, -40, -55, -16, 1, 11, 6, -39, -14, 4, 0, -8, -9, -10, 6, -10, -7, -13, -16, -11, -3, -10, -2, -5, 0, 13, -10, -6, -2, -6, 9, 18, -22, -5, -6, -6, 22, 11, -17, -9, -23, -34, -4, -24, -31, -9, -42, -80, -48, -23, 13, -2, -12, -23, -24, -7, -4, -4, -14, -16, -27, -40, -29, -12, -15, -22, -30, -5, 19, -2, -23, -51, -27, 37, 29, 5, -29, -70, -43, -7, -10, -22, -7, -45, -30, -25, -35, -4, -1, 0, 22, -1, -14, -5, -1, 1, -3, 1, 17, 1, -3, -21, -36, -17, 9, 3, -17, -41, -51, -16, 3, -31, -16, -28, -41, -17, -25, -15, -10, 4, -1, 2, 1, -17, -24, -13, 8, 20, -11, -24, 5, 23, 8, 2, 5, 0, -8, 8, 6, 1, -13, -27, 2, 4, 5, -37, -38, -13, -1, 6, -16, -20, 0, -5, -20, 3, -12, -14, 9, -5, -22, -21, -34, -50, -16, -3, 10, 8, 11, 24, 13, -1, 8, 6, 3, -6, -35, -12, 14, 10, 4, -25, -40, -10, -1, 11, -2, -26, -1, -5, -13, 10, -23, -41, -15, -7, -10, -4, -10, -49, -18, -1, 8, 4, -27, -27, 10, 15, -1, -30, -65, -30, 17, 15, -6, -37, -79, -28, 15, -26, -7, -18, -45, -24, -34, -11, -11, -1, -6, 3, -8, -15, -14, -7, 18, -3, -12, -13, -9, -15, -13, -8, 11, 20, -12, -7, -13, -23, -21, -9, 0, 8, -8, -8, -48, -17, -6, 7, -13, 8, -11, 15, -6, -7, 13, 8, 12, -8, -6, -20, -21, -19, -23, -17, 3, 14, 25, 21, 10, 4, 2, 5, 6, -32, -55, -2, 11, 17, 2, -34, -43, -3, 6, 11, 11, -27, -11, 2, -11, 7, -14, -40, -18, 1, -12, -23, -51, -39, -6, -3, 5, 18, 22, 10, 12, -4, 6, 15, 6, -7, -32, -25, -7, 1, -2, -32, -53, -18, -13, 2, -11, -39, -4, 5, -15, -2, 3, 9, 0, 0, -2, -5, -41, -39, -13, -6, 1, -3, -27, -19, -18, -9, -19, -26, -32, -33, -11, -14, -4, -35, -13, 32, 21, 15, -32, -41, -21, 24, 10, -25, -24, -56, -16, 10, -11, -16, -3, -15, -11, -3, -11, 3, 2, -18, -7, -3, -6, -8, -14, -10, 22, 28, 4, -15, -11, -17, 16, 27, -9, -1, -26, -44, -9, -21, -46, -24, -26, -60, -24, -17, 20, -6, -4, -20, -26, -5, -10, -1, 0, 7, 0, -3, 10, 15, -7, -1, -20, -50, -44, -27, 3, 8, 4, -42, -20, 1, -8, 1, 10, -4, -8, 11, -15, 9, 19, 4, -4, -14, 0, -13, -29, -21, -16, 1, 2, -3, -13, -3, 17, 11, -14, -24, -37, -33, -21, -10, -16, -29, -25, -28, -16, -19, -8, -13, -25, -4, 21, -5, -19, -12, 14, 21, 6, -22, -14, -47, -39, -21, -18, -6, -3, -2, 2, 11, 0, -13, -8, -4, 16, 33, 11, -4, 0, -2, 19, 14, -7, -5, -7, -17, 16, -17, -32, -12, -21, -70, -44, -32, -20, -7, -10, -41, -42, -12, -3, -2, -3, 1, -19, -22, -4, 4, -8, -27, -38, -39, -36, -18, -11, -33, 0, 17, 3, 12, -34, -42, -17, 13, -6, -29, -20, -55, -1, 13, -8, -13, 1, -17, -20, -3, -2, -1},
|
||||
{-6, 0, -21, -20, -10, -15, -10, -20, -20, -4, -6, -3, -8, 0, 60, 3, -6, -1, 7, 53, 12, -24, -10, -7, 9, 11, 5, 0, -7, -12, 1, 22, 15, -3, -9, -12, -7, -4, -1, -37, -41, -14, -13, -29, -43, -30, -6, -11, -19, 12, 16, -6, -16, -19, -11, 43, 3, 25, -3, -19, -3, -4, -7, -3, -8, 6, 19, 3, -29, -23, -17, -10, -11, -1, 1, 7, -2, -5, 5, 27, 46, 13, -24, -2, 6, 31, -4, -40, -6, -10, -18, -16, -17, 8, -9, -20, -2, -14, -42, 8, -6, -26, -26, -45, -37, -17, -12, -10, 6, -1, -7, -14, -10, 0, 2, 33, 34, 27, -11, -22, 7, 5, -12, 21, 11, -12, -8, -13, -29, -25, 0, -19, -28, -34, -27, -17, 7, -2, 8, -37, -43, -27, -43, -18, 1, 0, -34, -19, -11, -9, -12, -46, -28, 9, 20, -12, -8, -16, -26, -8, -16, -5, -10, -8, -16, -2, 6, -12, -20, -32, -5, -9, -21, -5, 11, 14, 3, 11, -25, -7, -7, -6, -29, -38, -18, -10, -12, 2, -34, -52, -18, -1, -13, -22, -34, 45, 0, -8, -20, -9, -18, 52, 19, -3, -24, -23, 1, 16, -11, 6, 7, -8, 24, 23, -18, 4, 3, -7, -4, -8, 7, 6, 0, 22, 26, 24, -16, -25, 8, 12, 1, 12, -17, -29, -9, 11, -27, -29, 11, -22, -20, -28, -31, -18, -20, -18, -7, -35, -44, -23, -31, -22, -1, 1, -8, -9, -17, -3, 19, 36, 5, -23, -18, -18, -3, 1, -3, 5, 0, 6, 1, -11, -44, -45, 3, -4, -5, -15, -35, -31, -29, -20, 8, -3, 12, -3, -13, -17, 0, -20, -18, -47, -24, -7, -11, -13, -15, -2, -3, -8, -20, -17, -32, 21, 5, -6, -27, -25, -4, 24, 20, -1, -22, -35, 14, 30, -16, 4, 21, 10, 20, 20, -15, 0, -3, -4, -24, -14, -8, -12, 0, -38, -15, -6, 15, 1, 10, 5, 0, -8, 1, -6, 1, -2, -42, -2, 0, 0, -8, -19, -3, -30, -18, -17, 17, 18, -8, 12, -15, -3, -4, 4, -16, -7, -15, -31, 1, 8, 10, 2, 5, -13, 8, 23, -2, -34, -6, -11, -7, 6, -28, -43, 7, -12, -1, -8, -33, -46, -49, -22, 17, -11, -56, -20, -21, -8, -11, -10, -8, -9, -19, -13, -8, -29, -14, -2, 5, -13, -16, 14, 11, -22, 1, -15, -10, 29, 16, -11, -9, -9, 3, -7, -6, -10, -7, 9, 9, 5, -31, -22, -24, -6, 1, -10, -15, -11, -28, -13, 28, 36, 37, 19, 8, -3, 13, -12, -30, 12, -6, -6, -12, -30, -40, 5, -4, -2, -9, -33, -19, -20, -26, -25, 6, 9, 11, 8, -8, -5, 1, 0, -16, -25, -31, -6, 14, 11, 7, 17, -3, -16, 12, 21, -10, 0, -13, -20, -1, -20, -52, -14, 22, -2, -27, -62, -31, -26, -28, -17, 9, 2, -49, -32, -36, -21, -7, -8, -20, -28, -29, -18, -15, -32, -46, -48, -3, -12, -30, -16, -4, 14, -18, -20, -8, 22, 20, 48, -17, -24, -13, 3, 16, 31, 5, 3, 3, 10, -6, -5, 1, -5, -7, -7, -20, -35, -31, -27, -6, 6, 16, 19, -2, -11, -8, 17, -22, -34, -15, -8, -3, -13, -25, -13, 12, -12, -16, -21, -47, -36, -33, -22, 27, -4, -53, -33, -22, -13},
|
||||
{-5, -3, -24, -22, -25, -25, -7, -8, -50, -37, -9, -19, 6, -7, -19, -21, 4, -5, 4, -28, -3, -7, -11, -8, -1, 4, -28, -9, 6, -3, 4, -42, -34, -8, -7, -7, 1, -2, 4, -1, 10, 9, 11, 13, -17, -43, -18, 1, -10, -44, -80, -12, 10, -12, -10, -10, -21, -15, -29, 14, -4, -14, -61, -24, -6, 5, -26, -56, -40, 23, -6, 2, 19, 2, 0, -10, -2, 0, 12, -18, -20, -31, -15, 8, 14, 1, 4, -33, -42, -10, 3, -27, -92, -20, 17, 11, 1, -64, -50, -26, -28, 14, 17, 10, -1, -12, 3, 17, 2, -17, -5, -10, 0, 5, -1, -9, -5, -7, -5, 5, -4, -9, 1, -11, 10, -3, -6, -8, -8, 14, 4, 4, -21, -30, -32, -21, -27, -24, -11, 7, 10, 2, -18, -5, 1, -2, 12, -8, -6, -13, 3, 6, -14, -8, -10, -3, -2, -14, -4, 17, 44, 9, -16, 18, 37, -7, -50, -18, -13, 2, -11, -7, -3, -7, -6, -45, -9, 20, 8, -8, 1, 5, 1, 0, 5, 6, -8, 4, -14, -24, -16, -7, -2, -7, -12, -38, -9, -12, -10, 2, 9, -58, -46, 2, 3, 4, -4, -34, -8, -2, 0, -11, -7, -43, -18, 2, 5, -14, -8, 1, -9, -2, 0, -30, -6, -9, -7, -11, -2, -9, -13, -15, 5, -6, -6, 2, -4, 16, 14, -4, -13, -38, -24, -11, -27, -27, -9, -8, 5, 8, -4, -9, -2, -5, 1, 4, -17, -7, -6, -26, -9, 11, 12, -5, 2, 34, 22, -8, -10, 1, -18, -17, 28, 13, -9, -15, -20, -17, -1, 4, -8, -15, -3, 8, 3, -26, -9, 1, -5, -4, -26, -19, 8, -5, -2, -7, -28, -29, -11, 8, -11, -7, -22, -32, -21, -3, -13, -11, 6, -59, -44, -4, 4, -7, -1, -43, -3, -4, -7, -24, -37, -36, -12, -1, 1, 3, 17, 5, -8, -10, -10, 6, -18, -11, 6, -9, -8, -26, -15, 19, 30, 14, -7, 24, 39, -23, -41, -30, -20, 5, -10, -12, 2, -3, -6, -31, -25, -3, 15, -8, -1, 4, 5, 13, 12, -2, -6, 5, -6, 0, 18, 18, -15, -8, 4, -3, -16, -25, -15, -12, -20, -10, 1, -1, -20, -40, -37, -19, -14, -21, -17, -38, 4, -20, -38, -7, -4, 3, -6, -3, 11, 5, 0, 0, -20, -23, -13, -4, -9, -32, -60, -8, 10, -4, -2, 2, -27, -37, -24, 12, 0, -38, -36, -35, -25, -12, -13, -63, -44, 16, 18, 3, 1, -17, -10, -29, -31, -11, -12, -14, -37, -37, -17, -2, 5, 8, -9, -11, -26, 3, -17, -33, -16, -10, -25, -16, -10, -5, -30, -12, 1, 0, -7, 13, 8, -9, 15, 4, -1, -12, 9, 16, 5, 9, -4, -23, -15, 4, 13, 7, -8, -27, -24, -3, 16, 19, -29, -31, -12, -12, 1, -35, -14, -22, -5, 17, -12, -23, -17, 2, 24, 20, 7, -1, 9, 5, -1, -10, -9, 7, 9, 12, -25, -43, -42, -6, 5, -29, -68, -28, -39, 2, 4, -2, -43, -43, -46, 24, 15, 3, -59, -34, -20, 22, 2, -43, -113, -32, 9, 19, -7, -5, 16, 7, -8, -1, -7, 3, -10, -21, 2, 3, -5, -27, -3, 13, -13, -15, -10, -6, -15, 3, -1, -6, -10, -39, -38, -17, -11, -11, -28, -47, 17, 9, -5, -3},
|
||||
{-4, -10, -26, -36, -24, -10, -2, -28, -60, -26, -15, -2, 5, -15, -63, 15, 14, 3, 1, -28, -49, 22, 12, 7, -6, -26, -4, 6, -2, -5, 5, 1, 20, -8, -1, 4, -14, 1, -1, -7, -34, -1, 8, 11, 23, -12, -77, -12, -12, -30, -47, 1, 3, -15, -41, -78, -46, 2, -15, -7, -25, -6, 9, -6, -14, -7, 19, 23, 10, -36, -12, -17, -1, -6, -3, 8, 3, 2, -4, -39, -42, -18, 5, 3, -33, -57, -38, -35, -24, -15, 2, 8, 25, -66, -66, -4, -12, 17, 16, -9, -26, -6, -12, -10, -17, -11, 14, -3, -3, -6, -14, -9, -12, 11, -22, -20, -1, -11, -6, -22, 2, -5, 5, -23, -23, -31, -5, 1, 5, 22, -30, -28, -26, -7, 17, -12, -34, -21, -15, -16, -17, -24, -26, -6, -2, -18, 12, -18, -13, -16, -6, 9, 6, -7, -29, -38, 13, -10, -23, 18, -6, -23, -14, -26, -45, 12, 9, -30, -10, -14, -14, -10, -25, 0, 4, 6, 2, -9, 1, -3, -2, -8, -25, -17, -11, -4, -5, -10, -25, -61, -49, 3, 3, 0, -25, -43, -14, -5, -9, -8, -50, -25, -2, 2, -15, -15, -28, 3, 7, 6, -1, -2, 24, 21, 27, -9, 9, 5, -8, 9, -6, 3, -15, -64, -8, 6, 0, -17, -10, -41, -4, -8, -14, -45, -14, -13, 0, 10, -42, -30, -16, 15, 13, -22, -22, -24, -25, -17, -25, -29, -18, -5, -1, 3, 24, 9, -6, -3, -13, -47, -40, 9, 4, 0, -7, 3, -20, -8, -4, 8, -9, 23, -2, -5, 7, 1, -6, -8, -11, -28, -8, -14, 6, -15, 6, 0, -2, 8, -7, -1, -60, -70, -30, 0, 3, -5, -40, -56, -45, -9, 5, -1, -29, -19, -3, -5, -15, -15, -52, 0, 3, 2, -24, -40, -22, 11, 2, 4, 1, 1, 21, 33, 23, 5, -2, -13, 5, -19, -25, -13, 0, 21, -2, -26, -19, -34, 2, -17, -36, 22, -6, -15, -13, -31, -52, 13, 8, -30, -3, -5, -17, -10, -6, -14, -4, 8, -5, -11, -21, -1, -11, -19, 12, 10, -2, -25, -4, -5, -4, 7, 12, -7, -26, -36, -21, -11, -22, -31, -47, -27, 14, -7, -61, -48, -24, 5, 11, -22, -62, 4, 11, 4, -30, -12, 21, 10, -2, 0, 4, -12, -21, -13, 9, 5, 12, -28, -58, -17, -16, -31, -36, 6, -8, -17, -43, -57, -27, -13, -2, -10, -18, 7, 11, 4, 1, -11, 8, 20, 1, -18, -10, -20, -7, -16, -18, -31, -14, -9, -17, -49, -66, -4, 10, -8, 5, 0, -20, 25, 16, -2, 1, 11, -40, -5, 7, -18, -1, -17, -45, -19, -1, -14, 1, -4, 5, 22, 10, 11, 3, -17, -9, -4, -16, -9, -13, -15, 1, 0, 8, -21, -4, -13, 14, 15, -16, -18, -17, -1, 22, -7, -62, -38, -11, -5, 1, -46, -48, -20, -4, -6, -21, -19, -4, 5, -2, -3, -18, -20, -18, -11, 5, 16, 8, -61, -62, -3, 0, -8, -53, -8, -14, -1, -19, -79, -86, -29, 22, 5, -3, -12, -15, -24, 35, 1, 5, 15, 19, -2, -10, -14, -3, -17, 12, 13, -10, -26, -5, 2, -13, 4, 9, 2, -18, -27, -13, 27, 4, -19, -53, -29, 10, -31, -44, -37, -24, 9, 8, -48, -42, -8, 9, 9, -28, -28, 13, 22}
|
||||
};
|
||||
|
||||
int32_t b_conv1[6] = {101, 113, 26, 14, 127, 61};
|
||||
|
||||
int32_t b_conv2[16] = {70, -89, 4, 48, 24, 127, -12, -74, 77, 36, -15, 13, -45, 21, 30, -28};
|
||||
|
||||
int32_t b_fc1[10] = {-77, -48, -24, -90, -35, -48, -89, -44, 127, 10};
|
||||
|
||||
#endif // __WEIGHTS__H__
|
||||
Reference in New Issue
Block a user