📄 ebm_gui.cpp
字号:
energy(energy) { add_box(new state_Idx_Gui(in, "in", this, mutex)); add_box(new module_1_1_GUI("layer 1", this, mutex)); add_box(new state_Idx_Gui(ebm1->fout, "out", this, mutex)); add_box(new module_1_1_GUI("layer 2", this, mutex)); add_box(new state_Idx_Gui(energy, "energy", this, mutex)); }fc_ebm1_GUI::fc_ebm1_GUI(fc_ebm1<state_idx, state_idx>* ebm1,const char* title, QWidget *parent, QMutex* mutex): ebbox(parent, title, NULL, NULL, mutex), ebm1(ebm1) { add_box(new module_1_1_GUI("layer 1", this, mutex)); add_box(new state_Idx_Gui(ebm1->fout, "out", this, mutex)); add_box(new module_1_1_GUI("layer 2", this, mutex)); }/* * * * * * * * * * * * * * * * * * * * * * */fc_ebm2_GUI::fc_ebm2_GUI(fc_ebm2<state_idx, state_idx, state_idx>* ebm2, state_idx* in1, state_idx* in2, state_idx* energy, const char* title, QWidget *parent, QMutex* mutex): ebbox(parent, title, NULL, NULL, mutex), ebm2(ebm2), in1(in1), in2(in2), energy(energy) { add_box(new state_Idx_Gui(in1, "in1", this, mutex)); add_box(new state_Idx_Gui(in2, "in2", this, mutex)); add_box(new module_1_1_GUI("layer 1", this, mutex)); add_box(new state_Idx_Gui(ebm2->fout, "out", this, mutex)); add_box(new module_1_1_GUI("layer 2", this, mutex)); add_box(new state_Idx_Gui(energy, "energy", this, mutex)); }fc_ebm2_GUI::fc_ebm2_GUI(fc_ebm2<state_idx, state_idx, state_idx>* ebm2, const char* title, QWidget *parent, QMutex* mutex): ebbox(parent, title, NULL, NULL, mutex), ebm2(ebm2) { add_box(new module_1_1_GUI("layer 1", this, mutex)); add_box(new state_Idx_Gui(ebm2->fout, "out", this, mutex)); add_box(new module_1_1_GUI("layer 2", this, mutex)); }/* * * * * * * * * * * * * * * * * * * * * * */linear_module_GUI::linear_module_GUI(linear_module* module, state_idx *in, state_idx *out, const char* title, QWidget *parent, QMutex* mutex): module_1_1_GUI(in, out, title, parent, mutex), module(module) { add_box(new state_Idx_Gui(module->w, "w", this, mutex)); }linear_module_GUI::linear_module_GUI(linear_module* module, const char* title, QWidget *parent, QMutex* mutex): module_1_1_GUI(title, parent, mutex), module(module) { add_box(new state_Idx_Gui(module->w, "w", this, mutex)); }/* * * * * * * * * * * * * * * * * * * * * * */nn_layer_full_GUI::nn_layer_full_GUI(nn_layer_full* layer, state_idx *in, state_idx *out, const char* title, QWidget *parent, QMutex* mutex): module_1_1_GUI(in, out, title, parent, mutex), layer(layer) { add_box(new linear_module_GUI(layer->linear, "linear module", this, mutex)); add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex)); add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex)); add_box(new module_1_1_GUI("sigmoid", this, mutex)); }nn_layer_full_GUI::nn_layer_full_GUI(nn_layer_full* layer, const char* title, QWidget *parent, QMutex* mutex): module_1_1_GUI(title, parent, mutex), layer(layer) { add_box(new linear_module_GUI(layer->linear, "linear module", this, mutex)); add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex)); add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex)); add_box(new module_1_1_GUI("sigmoid", this, mutex)); }/* * * * * * * * * * * * * * * * * * * * * * */f_layer_GUI::f_layer_GUI(f_layer* layer, state_idx *in, state_idx *out, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex): module_1_1_GUI(in, out, title, parent, mutex), layer(layer) { add_box(new state_Idx_Gui(layer->weight, "weight", this, mutex)); add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex)); add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex)); add_box(new module_1_1_GUI(squash_title, this, mutex)); }f_layer_GUI::f_layer_GUI(f_layer* layer, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex): module_1_1_GUI(title, parent, mutex), layer(layer) { add_box(new state_Idx_Gui(layer->weight, "weight", this, mutex)); add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex)); add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex)); add_box(new module_1_1_GUI(squash_title, this, mutex)); }/* * * * * * * * * * * * * * * * * * * * * * */c_layer_GUI::c_layer_GUI(c_layer* layer, state_idx *in, state_idx *out, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex): module_1_1_GUI(in, out, title, parent, mutex), layer(layer) { add_box(new Idx_Gui((void*)(layer->table), INTG, "table", this, mutex)); add_box(new state_Idx_Gui(layer->kernel, "kernel", this, mutex)); add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex)); add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex)); add_box(new module_1_1_GUI(squash_title, this, mutex)); }c_layer_GUI::c_layer_GUI(c_layer* layer, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex): module_1_1_GUI(title, parent, mutex), layer(layer) { add_box(new Idx_Gui((void*)(layer->table), INTG, "table", this, mutex)); add_box(new state_Idx_Gui(layer->kernel, "kernel", this, mutex)); add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex)); add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex)); add_box(new module_1_1_GUI(squash_title, this, mutex)); }/* * * * * * * * * * * * * * * * * * * * * * */s_layer_GUI::s_layer_GUI(s_layer* layer, state_idx *in, state_idx *out, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex): module_1_1_GUI(in, out, title, parent, mutex), layer(layer) { add_box(new state_Idx_Gui(layer->coeff, "coeff", this, mutex)); add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex)); add_box(new state_Idx_Gui(layer->sub, "sub", this, mutex)); add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex)); add_box(new module_1_1_GUI(squash_title, this, mutex)); }s_layer_GUI::s_layer_GUI(s_layer* layer, const char* title, const char* squash_title, QWidget *parent, QMutex* mutex): module_1_1_GUI(title, parent, mutex), layer(layer) { add_box(new state_Idx_Gui(layer->coeff, "coeff", this, mutex)); add_box(new state_Idx_Gui(layer->bias, "bias", this, mutex)); add_box(new state_Idx_Gui(layer->sub, "sub", this, mutex)); add_box(new state_Idx_Gui(layer->sum, "sum", this, mutex)); add_box(new module_1_1_GUI(squash_title, this, mutex)); }/* * * * * * * * * * * * * * * * * * * * * * */logadd_layer_GUI::logadd_layer_GUI(logadd_layer* layer, state_idx *in, state_idx *out, const char* title, QWidget *parent, QMutex* mutex): module_1_1_GUI(in, out, title, parent, mutex), layer(layer) { add_box(new Idx_Gui((void*)&(layer->expdist), DOUBLE, "expdist", this, mutex)); add_box(new Idx_Gui((void*)&(layer->sumexp), DOUBLE, "sumexp", this, mutex)); }logadd_layer_GUI::logadd_layer_GUI(logadd_layer* layer, const char* title, QWidget *parent, QMutex* mutex): module_1_1_GUI(title, parent, mutex), layer(layer) { add_box(new Idx_Gui((void*)&(layer->expdist), DOUBLE, "expdist", this, mutex)); add_box(new Idx_Gui((void*)&(layer->sumexp), DOUBLE, "sumexp", this, mutex)); }/* * * * * * * * * * * * * * * * * * */edist_cost_GUI::edist_cost_GUI(edist_cost* edist, state_idx *in, state_idx *energy, const char* title, QWidget *parent, QMutex* mutex): module_1_1_GUI(in, energy, title, parent, mutex), edist(edist) { add_box(new logadd_layer_GUI(edist->logadder, "log-add layer", this, mutex)); add_box(new state_Idx_Gui(edist->dist, "dist", this, mutex)); add_box(new state_Idx_Gui(edist->logadded_dist, "logadded_dist", this, mutex)); add_box(new Idx_Gui((void*)(edist->proto), DOUBLE, "proto", this, mutex)); add_box(new Idx_Gui((void*)&(edist->label2classindex), UBYTE, "proto", this, mutex)); }edist_cost_GUI::edist_cost_GUI(edist_cost* edist, const char* title, QWidget *parent, QMutex* mutex): module_1_1_GUI( title, parent, mutex), edist(edist) { add_box(new logadd_layer_GUI(edist->logadder, "log-add layer", this, mutex)); add_box(new state_Idx_Gui(edist->dist, "dist", this, mutex)); add_box(new state_Idx_Gui(edist->logadded_dist, "logadded_dist", this, mutex)); add_box(new Idx_Gui((void*)(edist->proto), DOUBLE, "proto", this, mutex)); add_box(new Idx_Gui((void*)&(edist->label2classindex), UBYTE, "proto", this, mutex)); }/* * * * * * * * * * * * * * * * * * * * * */ebwindow::ebwindow(int height, int width): QWidget() { resize(width, height); mylabel = new QLabel(this); mylabel->setGeometry(QRect(0, 0, width, height)); mylabel->setScaledContents(true); mydisplay = new QPixmap(width, height); QColor color; color.setRgb(255, 255, 255); mydisplay->fill(color.rgb()); mylabel->setPixmap(*mydisplay); painter = new QPainter(mydisplay); show();}void ebwindow::resizeEvent (QResizeEvent *event){ resize(event->size()); mylabel->resize(event->size());}void ebwindow::gray_draw_matrix(void* idx, idx_type type, int x, int y, int minv, int maxv, int zoomx, int zoomy, QMutex* mutex){ if(mutex != NULL) mutex->lock(); int order = static_cast<Idx<double>*>(idx)->order(); if(order < 2){ ylerror("not designed for idx0 and idx1"); if(mutex != NULL) mutex->unlock(); return; } int height = (order == 2 )? static_cast<Idx<double>*>(idx)->dim(0): static_cast<Idx<double>*>(idx)->dim(1); int width = (order == 2 )? static_cast<Idx<double>*>(idx)->dim(1): static_cast<Idx<double>*>(idx)->dim(2); Idx<ubyte>* mycopy = new Idx<ubyte>(height, width); int min, max; if((minv == 0)&&(maxv == 0)){ min = idx_min(*mycopy); max = idx_max(*mycopy); } else { min = minv; max = maxv; } if(type == DOUBLE){ Idx<double> test1(height, width); if(order==2) idx_copy(*(static_cast<Idx<double>*>(idx)), test1); else { Idx<double> bla = static_cast<Idx<double>*>(idx)->select(0,0); idx_copy(bla, test1); } idx_dotc( test1, (double)(255/(max-min)), test1); idx_addc( test1, (double)(-min*255/(max-min)), test1); idx_copy( test1, *mycopy); } if(type == FLOAT){ Idx<float> test2(height, width); if(order==2) idx_copy(*(static_cast<Idx<float>*>(idx)), test2); else { Idx<float> bla = static_cast<Idx<float>*>(idx)->select(0,0); idx_copy(bla, test2); } idx_dotc( test2, (float)(255/(max-min)), test2); idx_addc( test2, (float)(-min*255/(max-min)), test2); idx_copy( test2, *mycopy); } if(type == INTG){ if(order==2) idx_copy(*(static_cast<Idx<intg>*>(idx)), *mycopy); else { Idx<intg> test3 = static_cast<Idx<intg>*>(idx)->select(2,0); idx_copy(test3, *mycopy); } idx_dotc(*mycopy, (ubyte)(255/(max-min)), *mycopy); idx_addc(*mycopy, (ubyte)(-min*255/(max-min)), *mycopy); } if(type == UBYTE){ if(order==2) idx_copy(*(static_cast<Idx<ubyte>*>(idx)), *mycopy); else { Idx<ubyte> test4 = static_cast<Idx<ubyte>*>(idx)->select(2,0); idx_copy(test4, *mycopy); } idx_dotc(*mycopy, (ubyte)(255/(max-min)), *mycopy); idx_addc(*mycopy, (ubyte)(-min*255/(max-min)), *mycopy); } if(mutex != NULL) mutex->unlock(); QImage* image; QVector<QRgb> table(256); for (int i = 0; i < 256; i++){ table[i] = qRgb(i, i, i); } image = new QImage((uchar*)mycopy->idx_ptr(), width, height, width * sizeof(unsigned char), QImage::Format_Indexed8); image->setColorTable(table); image = new QImage(image->scaled(width*zoomx, height*zoomy)); painter->drawImage(x, y, *image); mylabel->setPixmap(*mydisplay);}void ebwindow::RGB_draw_matrix(void* idx, idx_type type, int x, int y, int zoomx, int zoomy, QMutex* mutex){ if(mutex != NULL) mutex->lock(); int order = static_cast<Idx<double>*>(idx)->order(); if(order != 3){ ylerror("designed for idx3 only !"); if(mutex != NULL) mutex->unlock(); return; } int width = static_cast<Idx<double>*>(idx)->dim(2); int height = static_cast<Idx<double>*>(idx)->dim(3); Idx<ubyte> myimage(height, width, 4); Idx<ubyte> mypartimage = myimage.narrow(2,3,0); if(type == DOUBLE){ Idx<double> test1 = static_cast<Idx<double>*>(idx)->narrow(0,3,0); idx_copy(test1, mypartimage); } if(type == FLOAT){ Idx<float> test2 = static_cast<Idx<float>*>(idx)->narrow(0,3,0); idx_copy(test2, mypartimage); } if(type == INTG){ Idx<intg> test3 = static_cast<Idx<intg>*>(idx)->narrow(0,3,0); idx_copy(test3, mypartimage); } if(type == UBYTE){ Idx<ubyte> test4 = static_cast<Idx<ubyte>*>(idx)->narrow(0,3,0); idx_copy(test4, mypartimage); } if(mutex != NULL) mutex->unlock(); QImage* image; image = new QImage((uchar*)myimage.idx_ptr(), width, height, width * sizeof(unsigned char), QImage::Format_RGB32); image = new QImage(image->scaled(width*zoomx, height*zoomy).rgbSwapped()); painter->drawImage(x, y, *image); mylabel->setPixmap(*mydisplay);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -