Tiny-dnn подключить слои

В tiny-dnn. Мне надо подключить выход одного слоя с shape 1x3x3 на веса другого слоя с Шейп 3х3х1. Я не нашел способа это сделать штатными средствами. Эта сеть называется tnet, она учит преобразование для координат. Часть point net. Когда я подключаю, мне нужно чтобы веса fc слоя зависели от обученной сетки. Так как я учу tnet, мне желательно чтобы это все было в графе одной сети. Я могу задать веса вручную, но мне их нужно будет менять при каждой итерации. Я даже думаю править код tiny-dnn, уже не знаю что поможет.

`
#include <vector>
#include <stdexcept>
#include <assert.h>
#include <stdint.h>
#include <math.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <complex>
#include "tiny_dnn/tiny_dnn.h"
#include <list>
using namespace std;
using namespace tiny_dnn;
using namespace tiny_dnn::layers;
using namespace tiny_dnn::activation;

void build_tnet(int n,int k){
    layers::input i1(shape3d(n,1,k));
    layers::input i1_reshape(shape3d(1,k,n));
    layers::input i2_reshape(shape3d(1,k,k));
    layers::conv conv0(n,1,1,1,k,64,padding::same);
    layers::conv conv1(n,1,1,1,64,128,padding::same);
    layers::conv conv2(n,1,1,1,128,1024,padding::same);
    layers::max_pool mp(n,1,1024,n,1,1,1);
    layers::fc fc1(1024,512);
    layers::fc fc2(512,256);
    layers::fc fc3(256,k*k);
    layers::fc fc_mul(k,k,false);
    i1<<conv0<<conv1<<conv2<<mp<<fc1<<fc2<<fc3<<i2_reshape;
    i1<<fc_mul;
//    i2_reshape<<fc_mul; //I tried this but this didn't help me.
    network<graph> net;
    construct_graph(net, { &i1 },{&fc_mul});
    std::ofstream ofs("graph_net_example.txt");
    graph_visualizer viz(net, "graph");
    viz.generate(ofs);
    for (int     i = 0; i < net.depth(); i++) {
      cout     << "#layer:" << i << "\n";
      cout     << "layer type:" << net[i]->layer_type() << "\n";
      cout     << "input:" << net[i]->in_data_size() << "(" << net[i]->in_data_shape() << ")\n";
      cout     << "output:" << net[i]->out_data_size() << "(" << net[i]->out_data_shape() <<")\n";
    }
    system("dot -Tgif graph_net_example.txt -o graph.gif");
    system("gwenview graph.gif");
}


int main(){
    build_tnet(1,3);
}
`

Ответы (0 шт):