| 29 | } |
| 30 | |
| 31 | VARP googLeNetExpr(int numClass) { |
| 32 | auto x = _Input({1, 3, 224, 224}, NC4HW4); |
| 33 | x = _Conv(0.0f, 0.0f, x, {3, 64}, {7, 7}, SAME, {2, 2}, {1, 1}, 1); |
| 34 | x = _MaxPool(x, {3, 3}, {2, 2}, SAME); |
| 35 | x = _Conv(0.0f, 0.0f, x, {64, 192}, {3, 3}, SAME, {1, 1}, {1, 1}, 1); |
| 36 | x = _MaxPool(x, {3, 3}, {2, 2}, SAME); |
| 37 | x = inception(x, 192, 64, 96, 128, 16, 32, 32); |
| 38 | x = inception(x, 256, 128, 128, 192, 32, 96, 64); |
| 39 | x = _MaxPool(x, {3, 3}, {2, 2}, SAME); |
| 40 | x = inception(x, 480, 192, 96, 208, 16, 48, 64); |
| 41 | x = inception(x, 512, 160, 112, 224, 24, 64, 64); |
| 42 | x = inception(x, 512, 128, 128, 256, 24, 64, 64); |
| 43 | x = inception(x, 512, 112, 144, 288, 32, 64, 64); |
| 44 | x = inception(x, 512, 256, 160, 320, 32, 128, 128); |
| 45 | x = _MaxPool(x, {3, 3}, {2, 2}, SAME); |
| 46 | x = inception(x, 832, 256, 160, 320, 32, 128, 128); |
| 47 | x = inception(x, 832, 384, 192, 384, 48, 128, 128); |
| 48 | x = _AvePool(x, {7, 7}, {1, 1}, VALID); |
| 49 | x = _Conv(0.0f, 0.0f, x, {1024, numClass}, {1, 1}, VALID, {1, 1}, {1, 1}, 1); // replace FC with Conv1x1 |
| 50 | x = _Softmax(x, -1); |
| 51 | return x; |
| 52 | } |