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);
}
`