// File: btbujiangjun[P]abcdl/example/sessionq.cpp
// Function: SessionQ::init(unsigned long, unsigned long)
void init(const size_t feature_dim, const size_t label_dim){
        fnn.set_alpha(0.05);
        fnn.set_batch_size(1024);
        /*
        std::vector<abcdl::fnn::Layer*> layers;
        layers.push_back(new abcdl::fnn::InputLayer(feature_dim));
        layers.push_back(new abcdl::fnn::FullConnLayer(feature_dim, 256, new abcdl::framework::ReluActivateFunc()));
        layers.push_back(new abcdl::fnn::FullConnLayer(256, 256, new abcdl::framework::ReluActivateFunc()));
        //layers.push_back(new abcdl::fnn::FullConnLayer(256, 256, new abcdl::framework::ReluActivateFunc()));
        //layers.push_back(new abcdl::fnn::FullConnLayer(256, 64, new abcdl::framework::ReluActivateFunc()));
        layers.push_back(new abcdl::fnn::FullConnLayer(256, 32, new abcdl::framework::ReluActivateFunc()));
        layers.push_back(new abcdl::fnn::OutputLayer(32, label_dim, new abcdl::framework::SigmoidActivateFunc(), new abcdl::framework::CrossEntropyCost()));
        fnn.set_layers(layers);
        */
        std::vector<abcdl::fnn::Layer*> layers;
        layers.push_back(new abcdl::fnn::InputLayer(feature_dim));
        layers.push_back(new abcdl::fnn::FullConnLayer(feature_dim, 256, new abcdl::framework::ReluActivateFunc()));
        layers.push_back(new abcdl::fnn::FullConnLayer(256, 64, new abcdl::framework::ReluActivateFunc()));
        layers.push_back(new abcdl::fnn::OutputLayer(64, label_dim, new abcdl::framework::SigmoidActivateFunc(), new abcdl::framework::CrossEntropyCost()));
        fnn.set_layers(layers);

        const std::string path = "./data/sessionq.model";
        fnn.load_model(path);
    }

// Assembly:
subq $0x108, %rsp            # imm = 0x108
movq %rdi, 0x100(%rsp)
movq %rsi, 0xf8(%rsp)
movq %rdx, 0xf0(%rsp)
movq 0x100(%rsp), %rdi
movq %rdi, 0x58(%rsp)
movss 0xa3250(%rip), %xmm0    # 0xbd004
callq 0x1b500
movq 0x58(%rsp), %rdi
movl $0x400, %esi            # imm = 0x400
callq 0x1b520
leaq 0xd8(%rsp), %rdi
callq 0x1b0d0
movl $0x168, %edi            # imm = 0x168
callq 0xc5a0
movq %rax, 0x60(%rsp)
jmp 0x19de6
movq 0x60(%rsp), %rdi
movq 0xf8(%rsp), %rsi
callq 0x1b570
jmp 0x19dfa
movq 0x60(%rsp), %rax
movq %rax, 0xd0(%rsp)
leaq 0xd8(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x1b540
jmp 0x19e1e
movl $0x170, %edi            # imm = 0x170
callq 0xc5a0
movq %rax, 0x50(%rsp)
jmp 0x19e2f
movq 0xf8(%rsp), %rax
movq %rax, 0x40(%rsp)
movl $0x18, %edi
callq 0xc5a0
movq %rax, 0x48(%rsp)
jmp 0x19e4d
movq 0x48(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
callq 0x1b5b0
jmp 0x19e67
movq 0x48(%rsp), %rcx
movq 0x40(%rsp), %rsi
movq 0x50(%rsp), %rdi
movl $0x0, 0xb4(%rsp)
movl $0x3f000000, 0xb0(%rsp) # imm = 0x3F000000
movl $0x100, %edx            # imm = 0x100
leaq 0xb4(%rsp), %r8
leaq 0xb0(%rsp), %r9
callq 0x1b5e0
jmp 0x19ea8
movq 0x50(%rsp), %rax
movq %rax, 0xb8(%rsp)
leaq 0xd8(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x1b540
jmp 0x19ecc
movl $0x170, %edi            # imm = 0x170
callq 0xc5a0
movq %rax, 0x38(%rsp)
jmp 0x19edd
movl $0x18, %edi
callq 0xc5a0
movq %rax, 0x30(%rsp)
jmp 0x19eee
movq 0x30(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
callq 0x1b5b0
jmp 0x19f08
movq 0x30(%rsp), %rcx
movq 0x38(%rsp), %rdi
movl $0x0, 0xa4(%rsp)
movl $0x3f000000, 0xa0(%rsp) # imm = 0x3F000000
movl $0x100, %esi            # imm = 0x100
movl $0x40, %edx
leaq 0xa4(%rsp), %r8
leaq 0xa0(%rsp), %r9
callq 0x1b5e0
jmp 0x19f49
movq 0x38(%rsp), %rax
movq %rax, 0xa8(%rsp)
leaq 0xd8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x1b540
jmp 0x19f6d
movl $0x1a0, %edi            # imm = 0x1A0
callq 0xc5a0
movq %rax, 0x28(%rsp)
jmp 0x19f7e
movq 0xf0(%rsp), %rax
movq %rax, 0x18(%rsp)
movl $0x18, %edi
callq 0xc5a0
movq %rax, 0x20(%rsp)
jmp 0x19f9c
movq 0x20(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
callq 0x1b6f0
jmp 0x19fb6
movl $0x18, %edi
callq 0xc5a0
movq %rax, 0x10(%rsp)
jmp 0x19fc7
movq 0x10(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
callq 0x1b720
jmp 0x19fe1
movq 0x10(%rsp), %r8
movq 0x20(%rsp), %rcx
movq 0x18(%rsp), %rdx
movq 0x28(%rsp), %rdi
movl $0x0, 0x94(%rsp)
movl $0x3f000000, 0x90(%rsp) # imm = 0x3F000000
movq %rsp, %rax
leaq 0x90(%rsp), %rsi
movq %rsi, (%rax)
movl $0x40, %esi
leaq 0x94(%rsp), %r9
callq 0x1b750
jmp 0x1a02d
movq 0x28(%rsp), %rax
movq %rax, 0x98(%rsp)
leaq 0xd8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x1b540
jmp 0x1a051
movq 0x58(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x1b8a0
jmp 0x1a065
leaq 0x6f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xc990
movq 0x8(%rsp), %rdx
leaq 0xa3339(%rip), %rsi     # 0xbd3b9
leaq 0x70(%rsp), %rdi
callq 0xc770
jmp 0x1a08c
leaq 0x6f(%rsp), %rdi
callq 0xc600
movq 0x58(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x5a170
jmp 0x1a0a7
leaq 0x70(%rsp), %rdi
callq 0xc340
leaq 0xd8(%rsp), %rdi
callq 0x1b130
addq $0x108, %rsp            # imm = 0x108
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x1a226
movq 0x60(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
callq 0xc570
jmp 0x1a226
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x1a136
movq 0x48(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
callq 0xc570
movq 0x50(%rsp), %rdi
callq 0xc570
jmp 0x1a226
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x1a179
movq 0x30(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
callq 0xc570
movq 0x38(%rsp), %rdi
callq 0xc570
jmp 0x1a226
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x1a1dc
movq 0x20(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
callq 0xc570
jmp 0x1a1dc
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
callq 0xc570
movq 0x28(%rsp), %rdi
callq 0xc570
jmp 0x1a226
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0x6f(%rsp), %rdi
callq 0xc600
jmp 0x1a226
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0x70(%rsp), %rdi
callq 0xc340
leaq 0xd8(%rsp), %rdi
callq 0x1b130
movq 0xc8(%rsp), %rdi
callq 0xc980