Change inception prefixes

This commit is contained in:
2024-06-05 02:04:15 +02:00
parent 0ea9fe9d18
commit a54ffa8b20
2 changed files with 62 additions and 62 deletions

View File

@@ -30,8 +30,8 @@ BasicConv2d::BasicConv2d(
outputSize = batchNorm->getOutputDims().first * outputSize = batchNorm->getOutputDims().first *
batchNorm->getOutputDims().second * outputChannels; batchNorm->getOutputDims().second * outputChannels;
addLayer(prefix + ".conv", conv); addLayer(prefix + "conv", conv);
addLayer(prefix + ".bn", batchNorm); addLayer(prefix + "bn", batchNorm);
} }
BasicConv2d::~BasicConv2d() { BasicConv2d::~BasicConv2d() {
@@ -67,36 +67,36 @@ InceptionA::InceptionA(
// Branch 1x1 // Branch 1x1
branch1x1 = new BasicConv2d( branch1x1 = new BasicConv2d(
inputShape, inputChannels, 64, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 64, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch1x1" prefix + "branch1x1."
); );
addLayer("", branch1x1); addLayer("", branch1x1);
// Branch 5x5 // Branch 5x5
branch5x5_1 = new BasicConv2d( branch5x5_1 = new BasicConv2d(
inputShape, inputChannels, 48, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 48, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch5x5_1" prefix + "branch5x5_1."
); );
addLayer("", branch5x5_1); addLayer("", branch5x5_1);
branch5x5_2 = new BasicConv2d( branch5x5_2 = new BasicConv2d(
branch5x5_1->getOutputDims(), 48, 64, {5, 5}, {1, 1}, {2, 2}, branch5x5_1->getOutputDims(), 48, 64, {5, 5}, {1, 1}, {2, 2},
prefix + ".branch5x5_2" prefix + "branch5x5_2."
); );
addLayer("", branch5x5_2); addLayer("", branch5x5_2);
// Branch 3x3 // Branch 3x3
branch3x3dbl_1 = new BasicConv2d( branch3x3dbl_1 = new BasicConv2d(
inputShape, inputChannels, 64, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 64, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch3x3dbl_1" prefix + "branch3x3dbl_1."
); );
addLayer("", branch3x3dbl_1); addLayer("", branch3x3dbl_1);
branch3x3dbl_2 = new BasicConv2d( branch3x3dbl_2 = new BasicConv2d(
branch3x3dbl_1->getOutputDims(), 64, 96, {3, 3}, {1, 1}, {1, 1}, branch3x3dbl_1->getOutputDims(), 64, 96, {3, 3}, {1, 1}, {1, 1},
prefix + ".branch3x3dbl_2" prefix + "branch3x3dbl_2."
); );
addLayer("", branch3x3dbl_2); addLayer("", branch3x3dbl_2);
branch3x3dbl_3 = new BasicConv2d( branch3x3dbl_3 = new BasicConv2d(
branch3x3dbl_2->getOutputDims(), 96, 96, {3, 3}, {1, 1}, {1, 1}, branch3x3dbl_2->getOutputDims(), 96, 96, {3, 3}, {1, 1}, {1, 1},
prefix + ".branch3x3dbl_3" prefix + "branch3x3dbl_3."
); );
addLayer("", branch3x3dbl_3); addLayer("", branch3x3dbl_3);
@@ -105,10 +105,10 @@ InceptionA::InceptionA(
inputShape, inputChannels, {3, 3}, {1, 1}, {1, 1}, inputShape, inputChannels, {3, 3}, {1, 1}, {1, 1},
CUDANet::Layers::ActivationType::NONE CUDANet::Layers::ActivationType::NONE
); );
addLayer(prefix + ".branch_pool", branchPool_1); addLayer(prefix + "branch_pool", branchPool_1);
branchPool_2 = new BasicConv2d( branchPool_2 = new BasicConv2d(
branchPool_1->getOutputDims(), inputChannels, poolFeatures, {1, 1}, branchPool_1->getOutputDims(), inputChannels, poolFeatures, {1, 1},
{1, 1}, {0, 0}, prefix + ".branch_pool" {1, 1}, {0, 0}, prefix + "branch_pool."
); );
addLayer("", branchPool_2); addLayer("", branchPool_2);
@@ -182,24 +182,24 @@ InceptionB::InceptionB(
// Branch 3x3 // Branch 3x3
branch3x3 = new BasicConv2d( branch3x3 = new BasicConv2d(
inputShape, inputChannels, 384, {3, 3}, {2, 2}, {0, 0}, inputShape, inputChannels, 384, {3, 3}, {2, 2}, {0, 0},
prefix + ".branch3x3" prefix + "branch3x3."
); );
addLayer("", branch3x3); addLayer("", branch3x3);
// Branch 3x3dbl // Branch 3x3dbl
branch3x3dbl_1 = new BasicConv2d( branch3x3dbl_1 = new BasicConv2d(
inputShape, inputChannels, 64, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 64, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch3x3dbl_1" prefix + "branch3x3dbl_1."
); );
addLayer("", branch3x3dbl_1); addLayer("", branch3x3dbl_1);
branch3x3dbl_2 = new BasicConv2d( branch3x3dbl_2 = new BasicConv2d(
branch3x3dbl_1->getOutputDims(), 64, 96, {3, 3}, {1, 1}, {1, 1}, branch3x3dbl_1->getOutputDims(), 64, 96, {3, 3}, {1, 1}, {1, 1},
prefix + ".branch3x3dbl_2" prefix + "branch3x3dbl_2."
); );
addLayer("", branch3x3dbl_2); addLayer("", branch3x3dbl_2);
branch3x3dbl_3 = new BasicConv2d( branch3x3dbl_3 = new BasicConv2d(
branch3x3dbl_2->getOutputDims(), 96, 96, {3, 3}, {2, 2}, {1, 1}, branch3x3dbl_2->getOutputDims(), 96, 96, {3, 3}, {2, 2}, {0, 0},
prefix + ".branch3x3dbl_3" prefix + "branch3x3dbl_3."
); );
addLayer("", branch3x3dbl_3); addLayer("", branch3x3dbl_3);
@@ -207,7 +207,7 @@ InceptionB::InceptionB(
inputShape, inputChannels, {3, 3}, {2, 2}, {0, 0}, inputShape, inputChannels, {3, 3}, {2, 2}, {0, 0},
CUDANet::Layers::ActivationType::NONE CUDANet::Layers::ActivationType::NONE
); );
addLayer(prefix + ".branch_pool", branchPool); addLayer(prefix + "branch_pool", branchPool);
concat_1 = new CUDANet::Layers::Concat( concat_1 = new CUDANet::Layers::Concat(
branch3x3->getOutputSize(), branch3x3dbl_3->getOutputSize() branch3x3->getOutputSize(), branch3x3dbl_3->getOutputSize()
@@ -266,51 +266,51 @@ InceptionC::InceptionC(
// Branch 1x1 // Branch 1x1
branch1x1 = new BasicConv2d( branch1x1 = new BasicConv2d(
inputShape, inputChannels, 192, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 192, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch1x1" prefix + "branch1x1."
); );
addLayer("", branch1x1); addLayer("", branch1x1);
// Branch 7x7 // Branch 7x7
branch7x7_1 = new BasicConv2d( branch7x7_1 = new BasicConv2d(
inputShape, inputChannels, nChannels_7x7, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, nChannels_7x7, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch7x7_1" prefix + "branch7x7_1."
); );
addLayer("", branch7x7_1); addLayer("", branch7x7_1);
branch7x7_2 = new BasicConv2d( branch7x7_2 = new BasicConv2d(
branch7x7_1->getOutputDims(), nChannels_7x7, nChannels_7x7, {1, 7}, branch7x7_1->getOutputDims(), nChannels_7x7, nChannels_7x7, {1, 7},
{1, 1}, {0, 3}, prefix + ".branch7x7_2" {1, 1}, {0, 3}, prefix + "branch7x7_2."
); );
addLayer("", branch7x7_2); addLayer("", branch7x7_2);
branch7x7_3 = new BasicConv2d( branch7x7_3 = new BasicConv2d(
branch7x7_2->getOutputDims(), nChannels_7x7, 192, {7, 1}, {1, 1}, branch7x7_2->getOutputDims(), nChannels_7x7, 192, {7, 1}, {1, 1},
{3, 0}, prefix + ".branch7x7_3" {3, 0}, prefix + "branch7x7_3."
); );
addLayer("", branch7x7_3); addLayer("", branch7x7_3);
// Branch 7x7dbl // Branch 7x7dbl
branch7x7dbl_1 = new BasicConv2d( branch7x7dbl_1 = new BasicConv2d(
inputShape, inputChannels, nChannels_7x7, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, nChannels_7x7, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch7x7dbl_1" prefix + "branch7x7dbl_1."
); );
addLayer("", branch7x7dbl_1); addLayer("", branch7x7dbl_1);
branch7x7dbl_2 = new BasicConv2d( branch7x7dbl_2 = new BasicConv2d(
branch7x7dbl_1->getOutputDims(), nChannels_7x7, nChannels_7x7, {7, 1}, branch7x7dbl_1->getOutputDims(), nChannels_7x7, nChannels_7x7, {7, 1},
{1, 1}, {3, 0}, prefix + ".branch7x7dbl_2" {1, 1}, {3, 0}, prefix + "branch7x7dbl_2."
); );
addLayer("", branch7x7dbl_2); addLayer("", branch7x7dbl_2);
branch7x7dbl_3 = new BasicConv2d( branch7x7dbl_3 = new BasicConv2d(
branch7x7dbl_2->getOutputDims(), nChannels_7x7, nChannels_7x7, {1, 7}, branch7x7dbl_2->getOutputDims(), nChannels_7x7, nChannels_7x7, {1, 7},
{1, 1}, {0, 3}, prefix + ".branch7x7dbl_3" {1, 1}, {0, 3}, prefix + "branch7x7dbl_3."
); );
addLayer("", branch7x7dbl_3); addLayer("", branch7x7dbl_3);
branch7x7dbl_4 = new BasicConv2d( branch7x7dbl_4 = new BasicConv2d(
branch7x7dbl_3->getOutputDims(), nChannels_7x7, nChannels_7x7, {7, 1}, branch7x7dbl_3->getOutputDims(), nChannels_7x7, nChannels_7x7, {7, 1},
{1, 1}, {3, 0}, prefix + ".branch7x7dbl_4" {1, 1}, {3, 0}, prefix + "branch7x7dbl_4."
); );
addLayer("", branch7x7dbl_4); addLayer("", branch7x7dbl_4);
branch7x7dbl_5 = new BasicConv2d( branch7x7dbl_5 = new BasicConv2d(
branch7x7dbl_4->getOutputDims(), nChannels_7x7, 192, {1, 7}, {1, 1}, branch7x7dbl_4->getOutputDims(), nChannels_7x7, 192, {1, 7}, {1, 1},
{0, 3}, prefix + ".branch7x7dbl_5" {0, 3}, prefix + "branch7x7dbl_5."
); );
addLayer("", branch7x7dbl_5); addLayer("", branch7x7dbl_5);
@@ -319,10 +319,10 @@ InceptionC::InceptionC(
inputShape, inputChannels, {3, 3}, {1, 1}, {1, 1}, inputShape, inputChannels, {3, 3}, {1, 1}, {1, 1},
CUDANet::Layers::ActivationType::NONE CUDANet::Layers::ActivationType::NONE
); );
addLayer(prefix + ".branch_pool", branchPool_1); addLayer(prefix + "branch_pool", branchPool_1);
branchPool_2 = new BasicConv2d( branchPool_2 = new BasicConv2d(
branchPool_1->getOutputDims(), inputChannels, 192, {1, 1}, {1, 1}, branchPool_1->getOutputDims(), inputChannels, 192, {1, 1}, {1, 1},
{0, 0}, prefix + ".branch_pool" {0, 0}, prefix + "branch_pool."
); );
addLayer("", branchPool_2); addLayer("", branchPool_2);
@@ -402,39 +402,39 @@ InceptionD::InceptionD(
// Branch 3x3 // Branch 3x3
branch3x3_1 = new BasicConv2d( branch3x3_1 = new BasicConv2d(
inputShape, inputChannels, 192, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 192, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch3x3_1" prefix + "branch3x3_1."
); );
addLayer("", branch3x3_1); addLayer("", branch3x3_1);
branch3x3_2 = new BasicConv2d( branch3x3_2 = new BasicConv2d(
inputShape, 192, 320, {3, 3}, {2, 2}, {0, 0}, prefix + ".branch3x3_2" inputShape, 192, 320, {3, 3}, {2, 2}, {0, 0}, prefix + "branch3x3_2."
); );
addLayer("", branch3x3_2); addLayer("", branch3x3_2);
// Branch 7x7x3 // Branch 7x7x3
branch7x7x3_1 = new BasicConv2d( branch7x7x3_1 = new BasicConv2d(
inputShape, inputChannels, 192, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 192, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch7x7x3_1" prefix + "branch7x7x3_1."
); );
addLayer("", branch7x7x3_1); addLayer("", branch7x7x3_1);
branch7x7x3_2 = new BasicConv2d( branch7x7x3_2 = new BasicConv2d(
inputShape, 192, 192, {1, 7}, {1, 1}, {0, 3}, prefix + ".branch7x7x3_2" inputShape, 192, 192, {1, 7}, {1, 1}, {0, 3}, prefix + "branch7x7x3_2."
); );
addLayer("", branch7x7x3_2); addLayer("", branch7x7x3_2);
branch7x7x3_3 = new BasicConv2d( branch7x7x3_3 = new BasicConv2d(
inputShape, 192, 192, {7, 1}, {1, 1}, {3, 0}, prefix + ".branch7x7x3_3" inputShape, 192, 192, {7, 1}, {1, 1}, {3, 0}, prefix + "branch7x7x3_3."
); );
addLayer("", branch7x7x3_3); addLayer("", branch7x7x3_3);
branch7x7x3_4 = new BasicConv2d( branch7x7x3_4 = new BasicConv2d(
inputShape, 192, 192, {3, 3}, {2, 2}, {0, 0}, prefix + ".branch7x7x3_4" inputShape, 192, 192, {3, 3}, {2, 2}, {0, 0}, prefix + "branch7x7x3_4."
); );
addLayer("", branch7x7x3_4); addLayer("", branch7x7x3_4);
// Branch Pool // Branch Pool
branchPool = new CUDANet::Layers::MaxPooling2d( branchPool = new CUDANet::Layers::MaxPooling2d(
inputShape, 192, {3, 3}, {2, 2}, {0, 0}, inputShape, inputChannels, {3, 3}, {2, 2}, {0, 0},
CUDANet::Layers::ActivationType::NONE CUDANet::Layers::ActivationType::NONE
); );
addLayer(prefix + ".branch_pool", branchPool); addLayer(prefix + "branch_pool", branchPool);
// Concat // Concat
concat_1 = new CUDANet::Layers::Concat( concat_1 = new CUDANet::Layers::Concat(
@@ -497,22 +497,22 @@ InceptionE::InceptionE(
// Branch 1x1 // Branch 1x1
branch1x1 = new BasicConv2d( branch1x1 = new BasicConv2d(
inputShape, inputChannels, 320, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 320, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch1x1" prefix + "branch1x1."
); );
addLayer("", branch1x1); addLayer("", branch1x1);
// Branch 3x3 // Branch 3x3
branch3x3_1 = new BasicConv2d( branch3x3_1 = new BasicConv2d(
inputShape, inputChannels, 384, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 384, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch3x3_1" prefix + "branch3x3_1."
); );
addLayer("", branch3x3_1); addLayer("", branch3x3_1);
branch3x3_2a = new BasicConv2d( branch3x3_2a = new BasicConv2d(
inputShape, 384, 384, {1, 3}, {1, 1}, {0, 1}, prefix + ".branch3x3_2a" inputShape, 384, 384, {1, 3}, {1, 1}, {0, 1}, prefix + "branch3x3_2a."
); );
addLayer("", branch3x3_2a); addLayer("", branch3x3_2a);
branch3x3_2b = new BasicConv2d( branch3x3_2b = new BasicConv2d(
inputShape, 384, 384, {3, 1}, {1, 1}, {1, 0}, prefix + ".branch3x3_2b" inputShape, 384, 384, {3, 1}, {1, 1}, {1, 0}, prefix + "branch3x3_2b."
); );
addLayer("", branch3x3_2b); addLayer("", branch3x3_2b);
branch_3x3_2_concat = new CUDANet::Layers::Concat( branch_3x3_2_concat = new CUDANet::Layers::Concat(
@@ -522,21 +522,21 @@ InceptionE::InceptionE(
// Branch 3x3dbl // Branch 3x3dbl
branch3x3dbl_1 = new BasicConv2d( branch3x3dbl_1 = new BasicConv2d(
inputShape, inputChannels, 448, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 448, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch3x3dbl_1" prefix + "branch3x3dbl_1."
); );
addLayer("", branch3x3dbl_1); addLayer("", branch3x3dbl_1);
branch3x3dbl_2 = new BasicConv2d( branch3x3dbl_2 = new BasicConv2d(
inputShape, 448, 384, {3, 3}, {1, 1}, {1, 1}, prefix + ".branch3x3dbl_2" inputShape, 448, 384, {3, 3}, {1, 1}, {1, 1}, prefix + "branch3x3dbl_2."
); );
addLayer("", branch3x3dbl_2); addLayer("", branch3x3dbl_2);
branch3x3dbl_3a = new BasicConv2d( branch3x3dbl_3a = new BasicConv2d(
inputShape, 384, 384, {1, 3}, {1, 1}, {0, 1}, inputShape, 384, 384, {1, 3}, {1, 1}, {0, 1},
prefix + ".branch3x3dbl_3a" prefix + "branch3x3dbl_3a."
); );
addLayer("", branch3x3dbl_3a); addLayer("", branch3x3dbl_3a);
branch3x3dbl_3b = new BasicConv2d( branch3x3dbl_3b = new BasicConv2d(
inputShape, 384, 384, {3, 1}, {1, 1}, {1, 0}, inputShape, 384, 384, {3, 1}, {1, 1}, {1, 0},
prefix + ".branch3x3dbl_3b" prefix + "branch3x3dbl_3b."
); );
addLayer("", branch3x3dbl_3b); addLayer("", branch3x3dbl_3b);
branch_3x3dbl_3_concat = new CUDANet::Layers::Concat( branch_3x3dbl_3_concat = new CUDANet::Layers::Concat(
@@ -548,10 +548,10 @@ InceptionE::InceptionE(
inputShape, inputChannels, {3, 3}, {1, 1}, {1, 1}, inputShape, inputChannels, {3, 3}, {1, 1}, {1, 1},
CUDANet::Layers::ActivationType::NONE CUDANet::Layers::ActivationType::NONE
); );
addLayer(prefix + ".branch_pool", branchPool_1); addLayer(prefix + "branch_pool", branchPool_1);
branchPool_2 = new BasicConv2d( branchPool_2 = new BasicConv2d(
inputShape, inputChannels, 192, {1, 1}, {1, 1}, {0, 0}, inputShape, inputChannels, 192, {1, 1}, {1, 1}, {0, 0},
prefix + ".branch_pool" prefix + "branch_pool."
); );
addLayer("", branchPool_2); addLayer("", branchPool_2);
@@ -636,17 +636,17 @@ InceptionV3::InceptionV3(
) )
: CUDANet::Model(inputShape, inputChannels, outputSize) { : CUDANet::Model(inputShape, inputChannels, outputSize) {
conv2d_1a_3x3 = new BasicConv2d( conv2d_1a_3x3 = new BasicConv2d(
inputShape, inputChannels, 32, {3, 3}, {2, 2}, {0, 0}, "Conv2d_1a_3x3" inputShape, inputChannels, 32, {3, 3}, {2, 2}, {0, 0}, "Conv2d_1a_3x3."
); );
addLayer("", conv2d_1a_3x3); addLayer("", conv2d_1a_3x3);
conv2d_2a_3x3 = new BasicConv2d( conv2d_2a_3x3 = new BasicConv2d(
conv2d_1a_3x3->getOutputDims(), 32, 32, {3, 3}, {1, 1}, {0, 0}, conv2d_1a_3x3->getOutputDims(), 32, 32, {3, 3}, {1, 1}, {0, 0},
"Conv2d_2a_3x3" "Conv2d_2a_3x3."
); );
addLayer("", conv2d_2a_3x3); addLayer("", conv2d_2a_3x3);
conv2d_2b_3x3 = new BasicConv2d( conv2d_2b_3x3 = new BasicConv2d(
conv2d_2a_3x3->getOutputDims(), 32, 64, {3, 3}, {1, 1}, {1, 1}, conv2d_2a_3x3->getOutputDims(), 32, 64, {3, 3}, {1, 1}, {1, 1},
"Conv2d_2b_3x3" "Conv2d_2b_3x3."
); );
addLayer("", conv2d_2b_3x3); addLayer("", conv2d_2b_3x3);
@@ -658,12 +658,12 @@ InceptionV3::InceptionV3(
conv2d_3b_1x1 = new BasicConv2d( conv2d_3b_1x1 = new BasicConv2d(
maxpool1->getOutputDims(), 64, 80, {1, 1}, {1, 1}, {0, 0}, maxpool1->getOutputDims(), 64, 80, {1, 1}, {1, 1}, {0, 0},
"Conv2d_3b_1x1" "Conv2d_3b_1x1."
); );
addLayer("", conv2d_3b_1x1); addLayer("", conv2d_3b_1x1);
conv2d_4a_3x3 = new BasicConv2d( conv2d_4a_3x3 = new BasicConv2d(
conv2d_3b_1x1->getOutputDims(), 80, 192, {3, 3}, {1, 1}, {0, 0}, conv2d_3b_1x1->getOutputDims(), 80, 192, {3, 3}, {1, 1}, {0, 0},
"Conv2d_4a_3x3" "Conv2d_4a_3x3."
); );
addLayer("", conv2d_4a_3x3); addLayer("", conv2d_4a_3x3);
@@ -673,31 +673,31 @@ InceptionV3::InceptionV3(
); );
addLayer("Maxpool2", maxpool2); addLayer("Maxpool2", maxpool2);
Mixed_5b = new InceptionA(maxpool2->getOutputDims(), 192, 32, "Mixed_5b"); Mixed_5b = new InceptionA(maxpool2->getOutputDims(), 192, 32, "Mixed_5b.");
addLayer("", Mixed_5b); addLayer("", Mixed_5b);
Mixed_5c = new InceptionA(Mixed_5b->getOutputDims(), 256, 64, "Mixed_5c"); Mixed_5c = new InceptionA(Mixed_5b->getOutputDims(), 256, 64, "Mixed_5c.");
addLayer("", Mixed_5c); addLayer("", Mixed_5c);
Mixed_5d = new InceptionA(Mixed_5c->getOutputDims(), 288, 64, "Mixed_5d"); Mixed_5d = new InceptionA(Mixed_5c->getOutputDims(), 288, 64, "Mixed_5d.");
addLayer("", Mixed_5d); addLayer("", Mixed_5d);
Mixed_6a = new InceptionB(Mixed_5d->getOutputDims(), 288, "Mixed_6a"); Mixed_6a = new InceptionB(Mixed_5d->getOutputDims(), 288, "Mixed_6a.");
addLayer("", Mixed_6a); addLayer("", Mixed_6a);
Mixed_6b = new InceptionC(Mixed_6a->getOutputDims(), 768, 128, "Mixed_6b"); Mixed_6b = new InceptionC(Mixed_6a->getOutputDims(), 768, 128, "Mixed_6b.");
addLayer("", Mixed_6b); addLayer("", Mixed_6b);
Mixed_6c = new InceptionC(Mixed_6b->getOutputDims(), 768, 160, "Mixed_6c"); Mixed_6c = new InceptionC(Mixed_6b->getOutputDims(), 768, 160, "Mixed_6c.");
addLayer("", Mixed_6c); addLayer("", Mixed_6c);
Mixed_6d = new InceptionC(Mixed_6c->getOutputDims(), 768, 160, "Mixed_6d"); Mixed_6d = new InceptionC(Mixed_6c->getOutputDims(), 768, 160, "Mixed_6d.");
addLayer("", Mixed_6d); addLayer("", Mixed_6d);
Mixed_6e = new InceptionC(Mixed_6d->getOutputDims(), 768, 192, "Mixed_6e"); Mixed_6e = new InceptionC(Mixed_6d->getOutputDims(), 768, 192, "Mixed_6e.");
addLayer("", Mixed_6e); addLayer("", Mixed_6e);
Mixed_7a = new InceptionD(Mixed_6e->getOutputDims(), 768, "Mixed_7a"); Mixed_7a = new InceptionD(Mixed_6e->getOutputDims(), 768, "Mixed_7a.");
addLayer("", Mixed_7a); addLayer("", Mixed_7a);
Mixed_7b = new InceptionE(Mixed_7a->getOutputDims(), 1280, "Mixed_7b"); Mixed_7b = new InceptionE(Mixed_7a->getOutputDims(), 1280, "Mixed_7b.");
addLayer("", Mixed_7b); addLayer("", Mixed_7b);
Mixed_7c = new InceptionE(Mixed_7b->getOutputDims(), 2048, "Mixed_7c"); Mixed_7c = new InceptionE(Mixed_7b->getOutputDims(), 2048, "Mixed_7c.");
addLayer("", Mixed_7c); addLayer("", Mixed_7c);
avgpool = new CUDANet::Layers::AdaptiveAvgPooling2d( avgpool = new CUDANet::Layers::AdaptiveAvgPooling2d(

View File

@@ -30,7 +30,7 @@ class Model {
Model(const Model& other); Model(const Model& other);
~Model(); ~Model();
float* predict(const float* input); virtual float* predict(const float* input);
void addLayer(const std::string& name, Layers::SequentialLayer* layer); void addLayer(const std::string& name, Layers::SequentialLayer* layer);
Layers::SequentialLayer* getLayer(const std::string& name); Layers::SequentialLayer* getLayer(const std::string& name);