Created
November 30, 2018 01:03
-
-
Save jerryz123/525336f72aedea651a5e91f0a2fbd021 to your computer and use it in GitHub Desktop.
inception_v1 generated
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "Halide.h" | |
#include <stdint.h> | |
#include <cfloat> | |
#include <limits.h> | |
using namespace Halide; | |
using namespace BoundaryConditions; | |
namespace { | |
class HalOGen : public Generator<HalOGen> { | |
public: | |
Input <Buffer<float>> f_conv17x7_s2_w_0{"f_conv17x7_s2_w_0", 4}; //float[64, 3, 7, 7] | |
Input <Buffer<float>> f_conv17x7_s2_b_0{"f_conv17x7_s2_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_conv23x3_reduce_w_0{"f_conv23x3_reduce_w_0", 4}; //float[64, 64, 1, 1] | |
Input <Buffer<float>> f_conv23x3_reduce_b_0{"f_conv23x3_reduce_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_conv23x3_w_0{"f_conv23x3_w_0", 4}; //float[192, 64, 3, 3] | |
Input <Buffer<float>> f_conv23x3_b_0{"f_conv23x3_b_0", 1}; //float[192] | |
Input <Buffer<float>> f_inception_3a1x1_w_0{"f_inception_3a1x1_w_0", 4}; //float[64, 192, 1, 1] | |
Input <Buffer<float>> f_inception_3a1x1_b_0{"f_inception_3a1x1_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_inception_3a3x3_reduce_w_0{"f_inception_3a3x3_reduce_w_0", 4}; //float[96, 192, 1, 1] | |
Input <Buffer<float>> f_inception_3a3x3_reduce_b_0{"f_inception_3a3x3_reduce_b_0", 1}; //float[96] | |
Input <Buffer<float>> f_inception_3a3x3_w_0{"f_inception_3a3x3_w_0", 4}; //float[128, 96, 3, 3] | |
Input <Buffer<float>> f_inception_3a3x3_b_0{"f_inception_3a3x3_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_3a5x5_reduce_w_0{"f_inception_3a5x5_reduce_w_0", 4}; //float[16, 192, 1, 1] | |
Input <Buffer<float>> f_inception_3a5x5_reduce_b_0{"f_inception_3a5x5_reduce_b_0", 1}; //float[16] | |
Input <Buffer<float>> f_inception_3a5x5_w_0{"f_inception_3a5x5_w_0", 4}; //float[32, 16, 5, 5] | |
Input <Buffer<float>> f_inception_3a5x5_b_0{"f_inception_3a5x5_b_0", 1}; //float[32] | |
Input <Buffer<float>> f_inception_3apool_proj_w_0{"f_inception_3apool_proj_w_0", 4}; //float[32, 192, 1, 1] | |
Input <Buffer<float>> f_inception_3apool_proj_b_0{"f_inception_3apool_proj_b_0", 1}; //float[32] | |
Input <Buffer<float>> f_inception_3b1x1_w_0{"f_inception_3b1x1_w_0", 4}; //float[128, 256, 1, 1] | |
Input <Buffer<float>> f_inception_3b1x1_b_0{"f_inception_3b1x1_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_3b3x3_reduce_w_0{"f_inception_3b3x3_reduce_w_0", 4}; //float[128, 256, 1, 1] | |
Input <Buffer<float>> f_inception_3b3x3_reduce_b_0{"f_inception_3b3x3_reduce_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_3b3x3_w_0{"f_inception_3b3x3_w_0", 4}; //float[192, 128, 3, 3] | |
Input <Buffer<float>> f_inception_3b3x3_b_0{"f_inception_3b3x3_b_0", 1}; //float[192] | |
Input <Buffer<float>> f_inception_3b5x5_reduce_w_0{"f_inception_3b5x5_reduce_w_0", 4}; //float[32, 256, 1, 1] | |
Input <Buffer<float>> f_inception_3b5x5_reduce_b_0{"f_inception_3b5x5_reduce_b_0", 1}; //float[32] | |
Input <Buffer<float>> f_inception_3b5x5_w_0{"f_inception_3b5x5_w_0", 4}; //float[96, 32, 5, 5] | |
Input <Buffer<float>> f_inception_3b5x5_b_0{"f_inception_3b5x5_b_0", 1}; //float[96] | |
Input <Buffer<float>> f_inception_3bpool_proj_w_0{"f_inception_3bpool_proj_w_0", 4}; //float[64, 256, 1, 1] | |
Input <Buffer<float>> f_inception_3bpool_proj_b_0{"f_inception_3bpool_proj_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_inception_4a1x1_w_0{"f_inception_4a1x1_w_0", 4}; //float[192, 480, 1, 1] | |
Input <Buffer<float>> f_inception_4a1x1_b_0{"f_inception_4a1x1_b_0", 1}; //float[192] | |
Input <Buffer<float>> f_inception_4a3x3_reduce_w_0{"f_inception_4a3x3_reduce_w_0", 4}; //float[96, 480, 1, 1] | |
Input <Buffer<float>> f_inception_4a3x3_reduce_b_0{"f_inception_4a3x3_reduce_b_0", 1}; //float[96] | |
Input <Buffer<float>> f_inception_4a3x3_w_0{"f_inception_4a3x3_w_0", 4}; //float[208, 96, 3, 3] | |
Input <Buffer<float>> f_inception_4a3x3_b_0{"f_inception_4a3x3_b_0", 1}; //float[208] | |
Input <Buffer<float>> f_inception_4a5x5_reduce_w_0{"f_inception_4a5x5_reduce_w_0", 4}; //float[16, 480, 1, 1] | |
Input <Buffer<float>> f_inception_4a5x5_reduce_b_0{"f_inception_4a5x5_reduce_b_0", 1}; //float[16] | |
Input <Buffer<float>> f_inception_4a5x5_w_0{"f_inception_4a5x5_w_0", 4}; //float[48, 16, 5, 5] | |
Input <Buffer<float>> f_inception_4a5x5_b_0{"f_inception_4a5x5_b_0", 1}; //float[48] | |
Input <Buffer<float>> f_inception_4apool_proj_w_0{"f_inception_4apool_proj_w_0", 4}; //float[64, 480, 1, 1] | |
Input <Buffer<float>> f_inception_4apool_proj_b_0{"f_inception_4apool_proj_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_inception_4b1x1_w_0{"f_inception_4b1x1_w_0", 4}; //float[160, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4b1x1_b_0{"f_inception_4b1x1_b_0", 1}; //float[160] | |
Input <Buffer<float>> f_inception_4b3x3_reduce_w_0{"f_inception_4b3x3_reduce_w_0", 4}; //float[112, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4b3x3_reduce_b_0{"f_inception_4b3x3_reduce_b_0", 1}; //float[112] | |
Input <Buffer<float>> f_inception_4b3x3_w_0{"f_inception_4b3x3_w_0", 4}; //float[224, 112, 3, 3] | |
Input <Buffer<float>> f_inception_4b3x3_b_0{"f_inception_4b3x3_b_0", 1}; //float[224] | |
Input <Buffer<float>> f_inception_4b5x5_reduce_w_0{"f_inception_4b5x5_reduce_w_0", 4}; //float[24, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4b5x5_reduce_b_0{"f_inception_4b5x5_reduce_b_0", 1}; //float[24] | |
Input <Buffer<float>> f_inception_4b5x5_w_0{"f_inception_4b5x5_w_0", 4}; //float[64, 24, 5, 5] | |
Input <Buffer<float>> f_inception_4b5x5_b_0{"f_inception_4b5x5_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_inception_4bpool_proj_w_0{"f_inception_4bpool_proj_w_0", 4}; //float[64, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4bpool_proj_b_0{"f_inception_4bpool_proj_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_inception_4c1x1_w_0{"f_inception_4c1x1_w_0", 4}; //float[128, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4c1x1_b_0{"f_inception_4c1x1_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_4c3x3_reduce_w_0{"f_inception_4c3x3_reduce_w_0", 4}; //float[128, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4c3x3_reduce_b_0{"f_inception_4c3x3_reduce_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_4c3x3_w_0{"f_inception_4c3x3_w_0", 4}; //float[256, 128, 3, 3] | |
Input <Buffer<float>> f_inception_4c3x3_b_0{"f_inception_4c3x3_b_0", 1}; //float[256] | |
Input <Buffer<float>> f_inception_4c5x5_reduce_w_0{"f_inception_4c5x5_reduce_w_0", 4}; //float[24, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4c5x5_reduce_b_0{"f_inception_4c5x5_reduce_b_0", 1}; //float[24] | |
Input <Buffer<float>> f_inception_4c5x5_w_0{"f_inception_4c5x5_w_0", 4}; //float[64, 24, 5, 5] | |
Input <Buffer<float>> f_inception_4c5x5_b_0{"f_inception_4c5x5_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_inception_4cpool_proj_w_0{"f_inception_4cpool_proj_w_0", 4}; //float[64, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4cpool_proj_b_0{"f_inception_4cpool_proj_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_inception_4d1x1_w_0{"f_inception_4d1x1_w_0", 4}; //float[112, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4d1x1_b_0{"f_inception_4d1x1_b_0", 1}; //float[112] | |
Input <Buffer<float>> f_inception_4d3x3_reduce_w_0{"f_inception_4d3x3_reduce_w_0", 4}; //float[144, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4d3x3_reduce_b_0{"f_inception_4d3x3_reduce_b_0", 1}; //float[144] | |
Input <Buffer<float>> f_inception_4d3x3_w_0{"f_inception_4d3x3_w_0", 4}; //float[288, 144, 3, 3] | |
Input <Buffer<float>> f_inception_4d3x3_b_0{"f_inception_4d3x3_b_0", 1}; //float[288] | |
Input <Buffer<float>> f_inception_4d5x5_reduce_w_0{"f_inception_4d5x5_reduce_w_0", 4}; //float[32, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4d5x5_reduce_b_0{"f_inception_4d5x5_reduce_b_0", 1}; //float[32] | |
Input <Buffer<float>> f_inception_4d5x5_w_0{"f_inception_4d5x5_w_0", 4}; //float[64, 32, 5, 5] | |
Input <Buffer<float>> f_inception_4d5x5_b_0{"f_inception_4d5x5_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_inception_4dpool_proj_w_0{"f_inception_4dpool_proj_w_0", 4}; //float[64, 512, 1, 1] | |
Input <Buffer<float>> f_inception_4dpool_proj_b_0{"f_inception_4dpool_proj_b_0", 1}; //float[64] | |
Input <Buffer<float>> f_inception_4e1x1_w_0{"f_inception_4e1x1_w_0", 4}; //float[256, 528, 1, 1] | |
Input <Buffer<float>> f_inception_4e1x1_b_0{"f_inception_4e1x1_b_0", 1}; //float[256] | |
Input <Buffer<float>> f_inception_4e3x3_reduce_w_0{"f_inception_4e3x3_reduce_w_0", 4}; //float[160, 528, 1, 1] | |
Input <Buffer<float>> f_inception_4e3x3_reduce_b_0{"f_inception_4e3x3_reduce_b_0", 1}; //float[160] | |
Input <Buffer<float>> f_inception_4e3x3_w_0{"f_inception_4e3x3_w_0", 4}; //float[320, 160, 3, 3] | |
Input <Buffer<float>> f_inception_4e3x3_b_0{"f_inception_4e3x3_b_0", 1}; //float[320] | |
Input <Buffer<float>> f_inception_4e5x5_reduce_w_0{"f_inception_4e5x5_reduce_w_0", 4}; //float[32, 528, 1, 1] | |
Input <Buffer<float>> f_inception_4e5x5_reduce_b_0{"f_inception_4e5x5_reduce_b_0", 1}; //float[32] | |
Input <Buffer<float>> f_inception_4e5x5_w_0{"f_inception_4e5x5_w_0", 4}; //float[128, 32, 5, 5] | |
Input <Buffer<float>> f_inception_4e5x5_b_0{"f_inception_4e5x5_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_4epool_proj_w_0{"f_inception_4epool_proj_w_0", 4}; //float[128, 528, 1, 1] | |
Input <Buffer<float>> f_inception_4epool_proj_b_0{"f_inception_4epool_proj_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_5a1x1_w_0{"f_inception_5a1x1_w_0", 4}; //float[256, 832, 1, 1] | |
Input <Buffer<float>> f_inception_5a1x1_b_0{"f_inception_5a1x1_b_0", 1}; //float[256] | |
Input <Buffer<float>> f_inception_5a3x3_reduce_w_0{"f_inception_5a3x3_reduce_w_0", 4}; //float[160, 832, 1, 1] | |
Input <Buffer<float>> f_inception_5a3x3_reduce_b_0{"f_inception_5a3x3_reduce_b_0", 1}; //float[160] | |
Input <Buffer<float>> f_inception_5a3x3_w_0{"f_inception_5a3x3_w_0", 4}; //float[320, 160, 3, 3] | |
Input <Buffer<float>> f_inception_5a3x3_b_0{"f_inception_5a3x3_b_0", 1}; //float[320] | |
Input <Buffer<float>> f_inception_5a5x5_reduce_w_0{"f_inception_5a5x5_reduce_w_0", 4}; //float[32, 832, 1, 1] | |
Input <Buffer<float>> f_inception_5a5x5_reduce_b_0{"f_inception_5a5x5_reduce_b_0", 1}; //float[32] | |
Input <Buffer<float>> f_inception_5a5x5_w_0{"f_inception_5a5x5_w_0", 4}; //float[128, 32, 5, 5] | |
Input <Buffer<float>> f_inception_5a5x5_b_0{"f_inception_5a5x5_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_5apool_proj_w_0{"f_inception_5apool_proj_w_0", 4}; //float[128, 832, 1, 1] | |
Input <Buffer<float>> f_inception_5apool_proj_b_0{"f_inception_5apool_proj_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_5b1x1_w_0{"f_inception_5b1x1_w_0", 4}; //float[384, 832, 1, 1] | |
Input <Buffer<float>> f_inception_5b1x1_b_0{"f_inception_5b1x1_b_0", 1}; //float[384] | |
Input <Buffer<float>> f_inception_5b3x3_reduce_w_0{"f_inception_5b3x3_reduce_w_0", 4}; //float[192, 832, 1, 1] | |
Input <Buffer<float>> f_inception_5b3x3_reduce_b_0{"f_inception_5b3x3_reduce_b_0", 1}; //float[192] | |
Input <Buffer<float>> f_inception_5b3x3_w_0{"f_inception_5b3x3_w_0", 4}; //float[384, 192, 3, 3] | |
Input <Buffer<float>> f_inception_5b3x3_b_0{"f_inception_5b3x3_b_0", 1}; //float[384] | |
Input <Buffer<float>> f_inception_5b5x5_reduce_w_0{"f_inception_5b5x5_reduce_w_0", 4}; //float[48, 832, 1, 1] | |
Input <Buffer<float>> f_inception_5b5x5_reduce_b_0{"f_inception_5b5x5_reduce_b_0", 1}; //float[48] | |
Input <Buffer<float>> f_inception_5b5x5_w_0{"f_inception_5b5x5_w_0", 4}; //float[128, 48, 5, 5] | |
Input <Buffer<float>> f_inception_5b5x5_b_0{"f_inception_5b5x5_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_inception_5bpool_proj_w_0{"f_inception_5bpool_proj_w_0", 4}; //float[128, 832, 1, 1] | |
Input <Buffer<float>> f_inception_5bpool_proj_b_0{"f_inception_5bpool_proj_b_0", 1}; //float[128] | |
Input <Buffer<float>> f_loss3classifier_w_0{"f_loss3classifier_w_0", 4}; //float[1, 1, 1000, 1024] | |
Input <Buffer<float>> f_loss3classifier_b_0{"f_loss3classifier_b_0", 1}; //float[1000] | |
Input <Buffer<float>> f_data_0{"f_data_0", 4}; //float[1, 3, 224, 224] | |
Input <Buffer<int64_t>> f_OC2_DUMMY_1{"f_OC2_DUMMY_1", 1}; //int64_t[2] | |
Input <Buffer<int64_t>> f_OC2_DUMMY_3{"f_OC2_DUMMY_3", 1}; //int64_t[2] | |
Output<Buffer<float>> f_prob_1{"f_prob_1", 2}; //float[1, 1000] | |
Var d0; | |
Var d1; | |
Var d2; | |
Var d3; | |
void generate() { | |
get_target().set_feature(Target::StrictFloat); | |
// Conv | |
Func f_conv17x7_s2_1; | |
// -> f_data_0 float[1, 3, 224, 224] | |
// -> f_conv17x7_s2_w_0 float[64, 3, 7, 7] | |
// -> f_conv17x7_s2_b_0 float[64] | |
// <- f_conv17x7_s2_1 float[1, 64, 112, 112] | |
RDom f_conv17x7_s2_1_r(0,3,0,7,0,7); | |
Func f_conv17x7_s2_1_padded = constant_exterior(f_data_0, 0, {{0,224},{0,224},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_conv17x7_s2_1(d3,d2,d1,d0) = sum(f_conv17x7_s2_1_padded(d3*2+f_conv17x7_s2_1_r[2]*1-3,d2*2+f_conv17x7_s2_1_r[1]*1-3,f_conv17x7_s2_1_r[0]+cast<int>(floor(d1/64))*3,d0)*f_conv17x7_s2_w_0(f_conv17x7_s2_1_r[2],f_conv17x7_s2_1_r[1],f_conv17x7_s2_1_r[0],d1))+f_conv17x7_s2_b_0(d1); | |
f_conv17x7_s2_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_conv17x7_s2_2; | |
// -> f_conv17x7_s2_1 float[1, 64, 112, 112] | |
// <- f_conv17x7_s2_2 float[1, 64, 112, 112] | |
f_conv17x7_s2_2(d3,d2,d1,d0) = select(f_conv17x7_s2_1(d3,d2,d1,d0)>0,f_conv17x7_s2_1(d3,d2,d1,d0),0); | |
f_conv17x7_s2_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_pool13x3_s2_1; | |
// -> f_conv17x7_s2_2 float[1, 64, 112, 112] | |
// <- f_pool13x3_s2_1 float[1, 64, 55, 55] | |
RDom f_pool13x3_s2_1_r(0,3,0,3); | |
Func f_pool13x3_s2_1_pad = f_conv17x7_s2_2; | |
f_pool13x3_s2_1(d3,d2,d1,d0) = maximum(f_pool13x3_s2_1_pad(d3*2+f_pool13x3_s2_1_r[1]-0,d2*2+f_pool13x3_s2_1_r[0]-0,d1,d0)); | |
f_pool13x3_s2_1.compute_root(); | |
//////////////////// | |
// LRN | |
Func f_pool1norm1_1; | |
// -> f_pool13x3_s2_1 float[1, 64, 55, 55] | |
// <- f_pool1norm1_1 float[1, 64, 55, 55] | |
RDom f_pool1norm1_1_r(-2,5); | |
Func f_pool1norm1_1_pad = constant_exterior(f_pool13x3_s2_1, 0, {{Expr(),Expr()},{Expr(),Expr()},{0,64},{Expr(),Expr()}}); | |
Func f_pool1norm1_1_sq_sum; | |
f_pool1norm1_1_sq_sum(d3,d2,d1,d0) = sum(pow(f_pool1norm1_1_pad(d3,d2,f_pool1norm1_1_r[0]+d1,d0),2)); | |
f_pool1norm1_1(d3,d2,d1,d0) = f_pool13x3_s2_1(d3,d2,d1,d0)/pow(cast<float>(Expr(1.0))+(cast<float>(Expr(9.999999747378752e-05))/cast<float>(Expr(5)))*f_pool1norm1_1_sq_sum(d3,d2,d1,d0),cast<float>(Expr(0.75))); | |
f_pool1norm1_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_conv23x3_reduce_1; | |
// -> f_pool1norm1_1 float[1, 64, 55, 55] | |
// -> f_conv23x3_reduce_w_0 float[64, 64, 1, 1] | |
// -> f_conv23x3_reduce_b_0 float[64] | |
// <- f_conv23x3_reduce_1 float[1, 64, 55, 55] | |
RDom f_conv23x3_reduce_1_r(0,64,0,1,0,1); | |
Func f_conv23x3_reduce_1_padded = f_pool1norm1_1; | |
f_conv23x3_reduce_1(d3,d2,d1,d0) = sum(f_conv23x3_reduce_1_padded(d3*1+f_conv23x3_reduce_1_r[2]*1-0,d2*1+f_conv23x3_reduce_1_r[1]*1-0,f_conv23x3_reduce_1_r[0]+cast<int>(floor(d1/64))*64,d0)*f_conv23x3_reduce_w_0(f_conv23x3_reduce_1_r[2],f_conv23x3_reduce_1_r[1],f_conv23x3_reduce_1_r[0],d1))+f_conv23x3_reduce_b_0(d1); | |
f_conv23x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_conv23x3_reduce_2; | |
// -> f_conv23x3_reduce_1 float[1, 64, 55, 55] | |
// <- f_conv23x3_reduce_2 float[1, 64, 55, 55] | |
f_conv23x3_reduce_2(d3,d2,d1,d0) = select(f_conv23x3_reduce_1(d3,d2,d1,d0)>0,f_conv23x3_reduce_1(d3,d2,d1,d0),0); | |
f_conv23x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_conv23x3_1; | |
// -> f_conv23x3_reduce_2 float[1, 64, 55, 55] | |
// -> f_conv23x3_w_0 float[192, 64, 3, 3] | |
// -> f_conv23x3_b_0 float[192] | |
// <- f_conv23x3_1 float[1, 192, 55, 55] | |
RDom f_conv23x3_1_r(0,64,0,3,0,3); | |
Func f_conv23x3_1_padded = constant_exterior(f_conv23x3_reduce_2, 0, {{0,55},{0,55},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_conv23x3_1(d3,d2,d1,d0) = sum(f_conv23x3_1_padded(d3*1+f_conv23x3_1_r[2]*1-1,d2*1+f_conv23x3_1_r[1]*1-1,f_conv23x3_1_r[0]+cast<int>(floor(d1/192))*64,d0)*f_conv23x3_w_0(f_conv23x3_1_r[2],f_conv23x3_1_r[1],f_conv23x3_1_r[0],d1))+f_conv23x3_b_0(d1); | |
f_conv23x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_conv23x3_2; | |
// -> f_conv23x3_1 float[1, 192, 55, 55] | |
// <- f_conv23x3_2 float[1, 192, 55, 55] | |
f_conv23x3_2(d3,d2,d1,d0) = select(f_conv23x3_1(d3,d2,d1,d0)>0,f_conv23x3_1(d3,d2,d1,d0),0); | |
f_conv23x3_2.compute_root(); | |
//////////////////// | |
// LRN | |
Func f_conv2norm2_1; | |
// -> f_conv23x3_2 float[1, 192, 55, 55] | |
// <- f_conv2norm2_1 float[1, 192, 55, 55] | |
RDom f_conv2norm2_1_r(-2,5); | |
Func f_conv2norm2_1_pad = constant_exterior(f_conv23x3_2, 0, {{Expr(),Expr()},{Expr(),Expr()},{0,192},{Expr(),Expr()}}); | |
Func f_conv2norm2_1_sq_sum; | |
f_conv2norm2_1_sq_sum(d3,d2,d1,d0) = sum(pow(f_conv2norm2_1_pad(d3,d2,f_conv2norm2_1_r[0]+d1,d0),2)); | |
f_conv2norm2_1(d3,d2,d1,d0) = f_conv23x3_2(d3,d2,d1,d0)/pow(cast<float>(Expr(1.0))+(cast<float>(Expr(9.999999747378752e-05))/cast<float>(Expr(5)))*f_conv2norm2_1_sq_sum(d3,d2,d1,d0),cast<float>(Expr(0.75))); | |
f_conv2norm2_1.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_pool23x3_s2_1; | |
// -> f_conv2norm2_1 float[1, 192, 55, 55] | |
// <- f_pool23x3_s2_1 float[1, 192, 27, 27] | |
RDom f_pool23x3_s2_1_r(0,3,0,3); | |
Func f_pool23x3_s2_1_pad = f_conv2norm2_1; | |
f_pool23x3_s2_1(d3,d2,d1,d0) = maximum(f_pool23x3_s2_1_pad(d3*2+f_pool23x3_s2_1_r[1]-0,d2*2+f_pool23x3_s2_1_r[0]-0,d1,d0)); | |
f_pool23x3_s2_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3a1x1_1; | |
// -> f_pool23x3_s2_1 float[1, 192, 27, 27] | |
// -> f_inception_3a1x1_w_0 float[64, 192, 1, 1] | |
// -> f_inception_3a1x1_b_0 float[64] | |
// <- f_inception_3a1x1_1 float[1, 64, 27, 27] | |
RDom f_inception_3a1x1_1_r(0,192,0,1,0,1); | |
Func f_inception_3a1x1_1_padded = f_pool23x3_s2_1; | |
f_inception_3a1x1_1(d3,d2,d1,d0) = sum(f_inception_3a1x1_1_padded(d3*1+f_inception_3a1x1_1_r[2]*1-0,d2*1+f_inception_3a1x1_1_r[1]*1-0,f_inception_3a1x1_1_r[0]+cast<int>(floor(d1/64))*192,d0)*f_inception_3a1x1_w_0(f_inception_3a1x1_1_r[2],f_inception_3a1x1_1_r[1],f_inception_3a1x1_1_r[0],d1))+f_inception_3a1x1_b_0(d1); | |
f_inception_3a1x1_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3a1x1_2; | |
// -> f_inception_3a1x1_1 float[1, 64, 27, 27] | |
// <- f_inception_3a1x1_2 float[1, 64, 27, 27] | |
f_inception_3a1x1_2(d3,d2,d1,d0) = select(f_inception_3a1x1_1(d3,d2,d1,d0)>0,f_inception_3a1x1_1(d3,d2,d1,d0),0); | |
f_inception_3a1x1_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3a3x3_reduce_1; | |
// -> f_pool23x3_s2_1 float[1, 192, 27, 27] | |
// -> f_inception_3a3x3_reduce_w_0 float[96, 192, 1, 1] | |
// -> f_inception_3a3x3_reduce_b_0 float[96] | |
// <- f_inception_3a3x3_reduce_1 float[1, 96, 27, 27] | |
RDom f_inception_3a3x3_reduce_1_r(0,192,0,1,0,1); | |
Func f_inception_3a3x3_reduce_1_padded = f_pool23x3_s2_1; | |
f_inception_3a3x3_reduce_1(d3,d2,d1,d0) = sum(f_inception_3a3x3_reduce_1_padded(d3*1+f_inception_3a3x3_reduce_1_r[2]*1-0,d2*1+f_inception_3a3x3_reduce_1_r[1]*1-0,f_inception_3a3x3_reduce_1_r[0]+cast<int>(floor(d1/96))*192,d0)*f_inception_3a3x3_reduce_w_0(f_inception_3a3x3_reduce_1_r[2],f_inception_3a3x3_reduce_1_r[1],f_inception_3a3x3_reduce_1_r[0],d1))+f_inception_3a3x3_reduce_b_0(d1); | |
f_inception_3a3x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3a3x3_reduce_2; | |
// -> f_inception_3a3x3_reduce_1 float[1, 96, 27, 27] | |
// <- f_inception_3a3x3_reduce_2 float[1, 96, 27, 27] | |
f_inception_3a3x3_reduce_2(d3,d2,d1,d0) = select(f_inception_3a3x3_reduce_1(d3,d2,d1,d0)>0,f_inception_3a3x3_reduce_1(d3,d2,d1,d0),0); | |
f_inception_3a3x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3a3x3_1; | |
// -> f_inception_3a3x3_reduce_2 float[1, 96, 27, 27] | |
// -> f_inception_3a3x3_w_0 float[128, 96, 3, 3] | |
// -> f_inception_3a3x3_b_0 float[128] | |
// <- f_inception_3a3x3_1 float[1, 128, 27, 27] | |
RDom f_inception_3a3x3_1_r(0,96,0,3,0,3); | |
Func f_inception_3a3x3_1_padded = constant_exterior(f_inception_3a3x3_reduce_2, 0, {{0,27},{0,27},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_3a3x3_1(d3,d2,d1,d0) = sum(f_inception_3a3x3_1_padded(d3*1+f_inception_3a3x3_1_r[2]*1-1,d2*1+f_inception_3a3x3_1_r[1]*1-1,f_inception_3a3x3_1_r[0]+cast<int>(floor(d1/128))*96,d0)*f_inception_3a3x3_w_0(f_inception_3a3x3_1_r[2],f_inception_3a3x3_1_r[1],f_inception_3a3x3_1_r[0],d1))+f_inception_3a3x3_b_0(d1); | |
f_inception_3a3x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3a3x3_2; | |
// -> f_inception_3a3x3_1 float[1, 128, 27, 27] | |
// <- f_inception_3a3x3_2 float[1, 128, 27, 27] | |
f_inception_3a3x3_2(d3,d2,d1,d0) = select(f_inception_3a3x3_1(d3,d2,d1,d0)>0,f_inception_3a3x3_1(d3,d2,d1,d0),0); | |
f_inception_3a3x3_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3a5x5_reduce_1; | |
// -> f_pool23x3_s2_1 float[1, 192, 27, 27] | |
// -> f_inception_3a5x5_reduce_w_0 float[16, 192, 1, 1] | |
// -> f_inception_3a5x5_reduce_b_0 float[16] | |
// <- f_inception_3a5x5_reduce_1 float[1, 16, 27, 27] | |
RDom f_inception_3a5x5_reduce_1_r(0,192,0,1,0,1); | |
Func f_inception_3a5x5_reduce_1_padded = f_pool23x3_s2_1; | |
f_inception_3a5x5_reduce_1(d3,d2,d1,d0) = sum(f_inception_3a5x5_reduce_1_padded(d3*1+f_inception_3a5x5_reduce_1_r[2]*1-0,d2*1+f_inception_3a5x5_reduce_1_r[1]*1-0,f_inception_3a5x5_reduce_1_r[0]+cast<int>(floor(d1/16))*192,d0)*f_inception_3a5x5_reduce_w_0(f_inception_3a5x5_reduce_1_r[2],f_inception_3a5x5_reduce_1_r[1],f_inception_3a5x5_reduce_1_r[0],d1))+f_inception_3a5x5_reduce_b_0(d1); | |
f_inception_3a5x5_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3a5x5_reduce_2; | |
// -> f_inception_3a5x5_reduce_1 float[1, 16, 27, 27] | |
// <- f_inception_3a5x5_reduce_2 float[1, 16, 27, 27] | |
f_inception_3a5x5_reduce_2(d3,d2,d1,d0) = select(f_inception_3a5x5_reduce_1(d3,d2,d1,d0)>0,f_inception_3a5x5_reduce_1(d3,d2,d1,d0),0); | |
f_inception_3a5x5_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3a5x5_1; | |
// -> f_inception_3a5x5_reduce_2 float[1, 16, 27, 27] | |
// -> f_inception_3a5x5_w_0 float[32, 16, 5, 5] | |
// -> f_inception_3a5x5_b_0 float[32] | |
// <- f_inception_3a5x5_1 float[1, 32, 27, 27] | |
RDom f_inception_3a5x5_1_r(0,16,0,5,0,5); | |
Func f_inception_3a5x5_1_padded = constant_exterior(f_inception_3a5x5_reduce_2, 0, {{0,27},{0,27},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_3a5x5_1(d3,d2,d1,d0) = sum(f_inception_3a5x5_1_padded(d3*1+f_inception_3a5x5_1_r[2]*1-2,d2*1+f_inception_3a5x5_1_r[1]*1-2,f_inception_3a5x5_1_r[0]+cast<int>(floor(d1/32))*16,d0)*f_inception_3a5x5_w_0(f_inception_3a5x5_1_r[2],f_inception_3a5x5_1_r[1],f_inception_3a5x5_1_r[0],d1))+f_inception_3a5x5_b_0(d1); | |
f_inception_3a5x5_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3a5x5_2; | |
// -> f_inception_3a5x5_1 float[1, 32, 27, 27] | |
// <- f_inception_3a5x5_2 float[1, 32, 27, 27] | |
f_inception_3a5x5_2(d3,d2,d1,d0) = select(f_inception_3a5x5_1(d3,d2,d1,d0)>0,f_inception_3a5x5_1(d3,d2,d1,d0),0); | |
f_inception_3a5x5_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_inception_3apool_1; | |
// -> f_pool23x3_s2_1 float[1, 192, 27, 27] | |
// <- f_inception_3apool_1 float[1, 192, 27, 27] | |
RDom f_inception_3apool_1_r(0,3,0,3); | |
Func f_inception_3apool_1_pad = constant_exterior(f_pool23x3_s2_1, cast<float >(Expr(-FLT_MAX)), {{0,27},{0,27},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_3apool_1(d3,d2,d1,d0) = maximum(f_inception_3apool_1_pad(d3*1+f_inception_3apool_1_r[1]-1,d2*1+f_inception_3apool_1_r[0]-1,d1,d0)); | |
f_inception_3apool_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3apool_proj_1; | |
// -> f_inception_3apool_1 float[1, 192, 27, 27] | |
// -> f_inception_3apool_proj_w_0 float[32, 192, 1, 1] | |
// -> f_inception_3apool_proj_b_0 float[32] | |
// <- f_inception_3apool_proj_1 float[1, 32, 27, 27] | |
RDom f_inception_3apool_proj_1_r(0,192,0,1,0,1); | |
Func f_inception_3apool_proj_1_padded = f_inception_3apool_1; | |
f_inception_3apool_proj_1(d3,d2,d1,d0) = sum(f_inception_3apool_proj_1_padded(d3*1+f_inception_3apool_proj_1_r[2]*1-0,d2*1+f_inception_3apool_proj_1_r[1]*1-0,f_inception_3apool_proj_1_r[0]+cast<int>(floor(d1/32))*192,d0)*f_inception_3apool_proj_w_0(f_inception_3apool_proj_1_r[2],f_inception_3apool_proj_1_r[1],f_inception_3apool_proj_1_r[0],d1))+f_inception_3apool_proj_b_0(d1); | |
f_inception_3apool_proj_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3apool_proj_2; | |
// -> f_inception_3apool_proj_1 float[1, 32, 27, 27] | |
// <- f_inception_3apool_proj_2 float[1, 32, 27, 27] | |
f_inception_3apool_proj_2(d3,d2,d1,d0) = select(f_inception_3apool_proj_1(d3,d2,d1,d0)>0,f_inception_3apool_proj_1(d3,d2,d1,d0),0); | |
f_inception_3apool_proj_2.compute_root(); | |
//////////////////// | |
// Concat | |
Func f_inception_3aoutput_1; | |
// -> f_inception_3a1x1_2 float[1, 64, 27, 27] | |
// -> f_inception_3a3x3_2 float[1, 128, 27, 27] | |
// -> f_inception_3a5x5_2 float[1, 32, 27, 27] | |
// -> f_inception_3apool_proj_2 float[1, 32, 27, 27] | |
// <- f_inception_3aoutput_1 float[1, 256, 27, 27] | |
f_inception_3aoutput_1(d3,d2,d1,d0) = undef<float>(); | |
RDom f_inception_3aoutput_1_0(0,64); | |
f_inception_3aoutput_1(d3,d2,f_inception_3aoutput_1_0[0],d0) = f_inception_3a1x1_2(d3,d2,f_inception_3aoutput_1_0[0]-0,d0); | |
RDom f_inception_3aoutput_1_1(64,128); | |
f_inception_3aoutput_1(d3,d2,f_inception_3aoutput_1_1[0],d0) = f_inception_3a3x3_2(d3,d2,f_inception_3aoutput_1_1[0]-64,d0); | |
RDom f_inception_3aoutput_1_2(192,32); | |
f_inception_3aoutput_1(d3,d2,f_inception_3aoutput_1_2[0],d0) = f_inception_3a5x5_2(d3,d2,f_inception_3aoutput_1_2[0]-192,d0); | |
RDom f_inception_3aoutput_1_3(224,32); | |
f_inception_3aoutput_1(d3,d2,f_inception_3aoutput_1_3[0],d0) = f_inception_3apool_proj_2(d3,d2,f_inception_3aoutput_1_3[0]-224,d0); | |
f_inception_3aoutput_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3b1x1_1; | |
// -> f_inception_3aoutput_1 float[1, 256, 27, 27] | |
// -> f_inception_3b1x1_w_0 float[128, 256, 1, 1] | |
// -> f_inception_3b1x1_b_0 float[128] | |
// <- f_inception_3b1x1_1 float[1, 128, 27, 27] | |
RDom f_inception_3b1x1_1_r(0,256,0,1,0,1); | |
Func f_inception_3b1x1_1_padded = f_inception_3aoutput_1; | |
f_inception_3b1x1_1(d3,d2,d1,d0) = sum(f_inception_3b1x1_1_padded(d3*1+f_inception_3b1x1_1_r[2]*1-0,d2*1+f_inception_3b1x1_1_r[1]*1-0,f_inception_3b1x1_1_r[0]+cast<int>(floor(d1/128))*256,d0)*f_inception_3b1x1_w_0(f_inception_3b1x1_1_r[2],f_inception_3b1x1_1_r[1],f_inception_3b1x1_1_r[0],d1))+f_inception_3b1x1_b_0(d1); | |
f_inception_3b1x1_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3b1x1_2; | |
// -> f_inception_3b1x1_1 float[1, 128, 27, 27] | |
// <- f_inception_3b1x1_2 float[1, 128, 27, 27] | |
f_inception_3b1x1_2(d3,d2,d1,d0) = select(f_inception_3b1x1_1(d3,d2,d1,d0)>0,f_inception_3b1x1_1(d3,d2,d1,d0),0); | |
f_inception_3b1x1_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3b3x3_reduce_1; | |
// -> f_inception_3aoutput_1 float[1, 256, 27, 27] | |
// -> f_inception_3b3x3_reduce_w_0 float[128, 256, 1, 1] | |
// -> f_inception_3b3x3_reduce_b_0 float[128] | |
// <- f_inception_3b3x3_reduce_1 float[1, 128, 27, 27] | |
RDom f_inception_3b3x3_reduce_1_r(0,256,0,1,0,1); | |
Func f_inception_3b3x3_reduce_1_padded = f_inception_3aoutput_1; | |
f_inception_3b3x3_reduce_1(d3,d2,d1,d0) = sum(f_inception_3b3x3_reduce_1_padded(d3*1+f_inception_3b3x3_reduce_1_r[2]*1-0,d2*1+f_inception_3b3x3_reduce_1_r[1]*1-0,f_inception_3b3x3_reduce_1_r[0]+cast<int>(floor(d1/128))*256,d0)*f_inception_3b3x3_reduce_w_0(f_inception_3b3x3_reduce_1_r[2],f_inception_3b3x3_reduce_1_r[1],f_inception_3b3x3_reduce_1_r[0],d1))+f_inception_3b3x3_reduce_b_0(d1); | |
f_inception_3b3x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3b3x3_reduce_2; | |
// -> f_inception_3b3x3_reduce_1 float[1, 128, 27, 27] | |
// <- f_inception_3b3x3_reduce_2 float[1, 128, 27, 27] | |
f_inception_3b3x3_reduce_2(d3,d2,d1,d0) = select(f_inception_3b3x3_reduce_1(d3,d2,d1,d0)>0,f_inception_3b3x3_reduce_1(d3,d2,d1,d0),0); | |
f_inception_3b3x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3b3x3_1; | |
// -> f_inception_3b3x3_reduce_2 float[1, 128, 27, 27] | |
// -> f_inception_3b3x3_w_0 float[192, 128, 3, 3] | |
// -> f_inception_3b3x3_b_0 float[192] | |
// <- f_inception_3b3x3_1 float[1, 192, 27, 27] | |
RDom f_inception_3b3x3_1_r(0,128,0,3,0,3); | |
Func f_inception_3b3x3_1_padded = constant_exterior(f_inception_3b3x3_reduce_2, 0, {{0,27},{0,27},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_3b3x3_1(d3,d2,d1,d0) = sum(f_inception_3b3x3_1_padded(d3*1+f_inception_3b3x3_1_r[2]*1-1,d2*1+f_inception_3b3x3_1_r[1]*1-1,f_inception_3b3x3_1_r[0]+cast<int>(floor(d1/192))*128,d0)*f_inception_3b3x3_w_0(f_inception_3b3x3_1_r[2],f_inception_3b3x3_1_r[1],f_inception_3b3x3_1_r[0],d1))+f_inception_3b3x3_b_0(d1); | |
f_inception_3b3x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3b3x3_2; | |
// -> f_inception_3b3x3_1 float[1, 192, 27, 27] | |
// <- f_inception_3b3x3_2 float[1, 192, 27, 27] | |
f_inception_3b3x3_2(d3,d2,d1,d0) = select(f_inception_3b3x3_1(d3,d2,d1,d0)>0,f_inception_3b3x3_1(d3,d2,d1,d0),0); | |
f_inception_3b3x3_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3b5x5_reduce_1; | |
// -> f_inception_3aoutput_1 float[1, 256, 27, 27] | |
// -> f_inception_3b5x5_reduce_w_0 float[32, 256, 1, 1] | |
// -> f_inception_3b5x5_reduce_b_0 float[32] | |
// <- f_inception_3b5x5_reduce_1 float[1, 32, 27, 27] | |
RDom f_inception_3b5x5_reduce_1_r(0,256,0,1,0,1); | |
Func f_inception_3b5x5_reduce_1_padded = f_inception_3aoutput_1; | |
f_inception_3b5x5_reduce_1(d3,d2,d1,d0) = sum(f_inception_3b5x5_reduce_1_padded(d3*1+f_inception_3b5x5_reduce_1_r[2]*1-0,d2*1+f_inception_3b5x5_reduce_1_r[1]*1-0,f_inception_3b5x5_reduce_1_r[0]+cast<int>(floor(d1/32))*256,d0)*f_inception_3b5x5_reduce_w_0(f_inception_3b5x5_reduce_1_r[2],f_inception_3b5x5_reduce_1_r[1],f_inception_3b5x5_reduce_1_r[0],d1))+f_inception_3b5x5_reduce_b_0(d1); | |
f_inception_3b5x5_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3b5x5_reduce_2; | |
// -> f_inception_3b5x5_reduce_1 float[1, 32, 27, 27] | |
// <- f_inception_3b5x5_reduce_2 float[1, 32, 27, 27] | |
f_inception_3b5x5_reduce_2(d3,d2,d1,d0) = select(f_inception_3b5x5_reduce_1(d3,d2,d1,d0)>0,f_inception_3b5x5_reduce_1(d3,d2,d1,d0),0); | |
f_inception_3b5x5_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3b5x5_1; | |
// -> f_inception_3b5x5_reduce_2 float[1, 32, 27, 27] | |
// -> f_inception_3b5x5_w_0 float[96, 32, 5, 5] | |
// -> f_inception_3b5x5_b_0 float[96] | |
// <- f_inception_3b5x5_1 float[1, 96, 27, 27] | |
RDom f_inception_3b5x5_1_r(0,32,0,5,0,5); | |
Func f_inception_3b5x5_1_padded = constant_exterior(f_inception_3b5x5_reduce_2, 0, {{0,27},{0,27},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_3b5x5_1(d3,d2,d1,d0) = sum(f_inception_3b5x5_1_padded(d3*1+f_inception_3b5x5_1_r[2]*1-2,d2*1+f_inception_3b5x5_1_r[1]*1-2,f_inception_3b5x5_1_r[0]+cast<int>(floor(d1/96))*32,d0)*f_inception_3b5x5_w_0(f_inception_3b5x5_1_r[2],f_inception_3b5x5_1_r[1],f_inception_3b5x5_1_r[0],d1))+f_inception_3b5x5_b_0(d1); | |
f_inception_3b5x5_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3b5x5_2; | |
// -> f_inception_3b5x5_1 float[1, 96, 27, 27] | |
// <- f_inception_3b5x5_2 float[1, 96, 27, 27] | |
f_inception_3b5x5_2(d3,d2,d1,d0) = select(f_inception_3b5x5_1(d3,d2,d1,d0)>0,f_inception_3b5x5_1(d3,d2,d1,d0),0); | |
f_inception_3b5x5_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_inception_3bpool_1; | |
// -> f_inception_3aoutput_1 float[1, 256, 27, 27] | |
// <- f_inception_3bpool_1 float[1, 256, 27, 27] | |
RDom f_inception_3bpool_1_r(0,3,0,3); | |
Func f_inception_3bpool_1_pad = constant_exterior(f_inception_3aoutput_1, cast<float >(Expr(-FLT_MAX)), {{0,27},{0,27},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_3bpool_1(d3,d2,d1,d0) = maximum(f_inception_3bpool_1_pad(d3*1+f_inception_3bpool_1_r[1]-1,d2*1+f_inception_3bpool_1_r[0]-1,d1,d0)); | |
f_inception_3bpool_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_3bpool_proj_1; | |
// -> f_inception_3bpool_1 float[1, 256, 27, 27] | |
// -> f_inception_3bpool_proj_w_0 float[64, 256, 1, 1] | |
// -> f_inception_3bpool_proj_b_0 float[64] | |
// <- f_inception_3bpool_proj_1 float[1, 64, 27, 27] | |
RDom f_inception_3bpool_proj_1_r(0,256,0,1,0,1); | |
Func f_inception_3bpool_proj_1_padded = f_inception_3bpool_1; | |
f_inception_3bpool_proj_1(d3,d2,d1,d0) = sum(f_inception_3bpool_proj_1_padded(d3*1+f_inception_3bpool_proj_1_r[2]*1-0,d2*1+f_inception_3bpool_proj_1_r[1]*1-0,f_inception_3bpool_proj_1_r[0]+cast<int>(floor(d1/64))*256,d0)*f_inception_3bpool_proj_w_0(f_inception_3bpool_proj_1_r[2],f_inception_3bpool_proj_1_r[1],f_inception_3bpool_proj_1_r[0],d1))+f_inception_3bpool_proj_b_0(d1); | |
f_inception_3bpool_proj_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_3bpool_proj_2; | |
// -> f_inception_3bpool_proj_1 float[1, 64, 27, 27] | |
// <- f_inception_3bpool_proj_2 float[1, 64, 27, 27] | |
f_inception_3bpool_proj_2(d3,d2,d1,d0) = select(f_inception_3bpool_proj_1(d3,d2,d1,d0)>0,f_inception_3bpool_proj_1(d3,d2,d1,d0),0); | |
f_inception_3bpool_proj_2.compute_root(); | |
//////////////////// | |
// Concat | |
Func f_inception_3boutput_1; | |
// -> f_inception_3b1x1_2 float[1, 128, 27, 27] | |
// -> f_inception_3b3x3_2 float[1, 192, 27, 27] | |
// -> f_inception_3b5x5_2 float[1, 96, 27, 27] | |
// -> f_inception_3bpool_proj_2 float[1, 64, 27, 27] | |
// <- f_inception_3boutput_1 float[1, 480, 27, 27] | |
f_inception_3boutput_1(d3,d2,d1,d0) = undef<float>(); | |
RDom f_inception_3boutput_1_0(0,128); | |
f_inception_3boutput_1(d3,d2,f_inception_3boutput_1_0[0],d0) = f_inception_3b1x1_2(d3,d2,f_inception_3boutput_1_0[0]-0,d0); | |
RDom f_inception_3boutput_1_1(128,192); | |
f_inception_3boutput_1(d3,d2,f_inception_3boutput_1_1[0],d0) = f_inception_3b3x3_2(d3,d2,f_inception_3boutput_1_1[0]-128,d0); | |
RDom f_inception_3boutput_1_2(320,96); | |
f_inception_3boutput_1(d3,d2,f_inception_3boutput_1_2[0],d0) = f_inception_3b5x5_2(d3,d2,f_inception_3boutput_1_2[0]-320,d0); | |
RDom f_inception_3boutput_1_3(416,64); | |
f_inception_3boutput_1(d3,d2,f_inception_3boutput_1_3[0],d0) = f_inception_3bpool_proj_2(d3,d2,f_inception_3boutput_1_3[0]-416,d0); | |
f_inception_3boutput_1.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_pool33x3_s2_1; | |
// -> f_inception_3boutput_1 float[1, 480, 27, 27] | |
// <- f_pool33x3_s2_1 float[1, 480, 13, 13] | |
RDom f_pool33x3_s2_1_r(0,3,0,3); | |
Func f_pool33x3_s2_1_pad = f_inception_3boutput_1; | |
f_pool33x3_s2_1(d3,d2,d1,d0) = maximum(f_pool33x3_s2_1_pad(d3*2+f_pool33x3_s2_1_r[1]-0,d2*2+f_pool33x3_s2_1_r[0]-0,d1,d0)); | |
f_pool33x3_s2_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4a1x1_1; | |
// -> f_pool33x3_s2_1 float[1, 480, 13, 13] | |
// -> f_inception_4a1x1_w_0 float[192, 480, 1, 1] | |
// -> f_inception_4a1x1_b_0 float[192] | |
// <- f_inception_4a1x1_1 float[1, 192, 13, 13] | |
RDom f_inception_4a1x1_1_r(0,480,0,1,0,1); | |
Func f_inception_4a1x1_1_padded = f_pool33x3_s2_1; | |
f_inception_4a1x1_1(d3,d2,d1,d0) = sum(f_inception_4a1x1_1_padded(d3*1+f_inception_4a1x1_1_r[2]*1-0,d2*1+f_inception_4a1x1_1_r[1]*1-0,f_inception_4a1x1_1_r[0]+cast<int>(floor(d1/192))*480,d0)*f_inception_4a1x1_w_0(f_inception_4a1x1_1_r[2],f_inception_4a1x1_1_r[1],f_inception_4a1x1_1_r[0],d1))+f_inception_4a1x1_b_0(d1); | |
f_inception_4a1x1_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4a1x1_2; | |
// -> f_inception_4a1x1_1 float[1, 192, 13, 13] | |
// <- f_inception_4a1x1_2 float[1, 192, 13, 13] | |
f_inception_4a1x1_2(d3,d2,d1,d0) = select(f_inception_4a1x1_1(d3,d2,d1,d0)>0,f_inception_4a1x1_1(d3,d2,d1,d0),0); | |
f_inception_4a1x1_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4a3x3_reduce_1; | |
// -> f_pool33x3_s2_1 float[1, 480, 13, 13] | |
// -> f_inception_4a3x3_reduce_w_0 float[96, 480, 1, 1] | |
// -> f_inception_4a3x3_reduce_b_0 float[96] | |
// <- f_inception_4a3x3_reduce_1 float[1, 96, 13, 13] | |
RDom f_inception_4a3x3_reduce_1_r(0,480,0,1,0,1); | |
Func f_inception_4a3x3_reduce_1_padded = f_pool33x3_s2_1; | |
f_inception_4a3x3_reduce_1(d3,d2,d1,d0) = sum(f_inception_4a3x3_reduce_1_padded(d3*1+f_inception_4a3x3_reduce_1_r[2]*1-0,d2*1+f_inception_4a3x3_reduce_1_r[1]*1-0,f_inception_4a3x3_reduce_1_r[0]+cast<int>(floor(d1/96))*480,d0)*f_inception_4a3x3_reduce_w_0(f_inception_4a3x3_reduce_1_r[2],f_inception_4a3x3_reduce_1_r[1],f_inception_4a3x3_reduce_1_r[0],d1))+f_inception_4a3x3_reduce_b_0(d1); | |
f_inception_4a3x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4a3x3_reduce_2; | |
// -> f_inception_4a3x3_reduce_1 float[1, 96, 13, 13] | |
// <- f_inception_4a3x3_reduce_2 float[1, 96, 13, 13] | |
f_inception_4a3x3_reduce_2(d3,d2,d1,d0) = select(f_inception_4a3x3_reduce_1(d3,d2,d1,d0)>0,f_inception_4a3x3_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4a3x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4a3x3_1; | |
// -> f_inception_4a3x3_reduce_2 float[1, 96, 13, 13] | |
// -> f_inception_4a3x3_w_0 float[208, 96, 3, 3] | |
// -> f_inception_4a3x3_b_0 float[208] | |
// <- f_inception_4a3x3_1 float[1, 208, 13, 13] | |
RDom f_inception_4a3x3_1_r(0,96,0,3,0,3); | |
Func f_inception_4a3x3_1_padded = constant_exterior(f_inception_4a3x3_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4a3x3_1(d3,d2,d1,d0) = sum(f_inception_4a3x3_1_padded(d3*1+f_inception_4a3x3_1_r[2]*1-1,d2*1+f_inception_4a3x3_1_r[1]*1-1,f_inception_4a3x3_1_r[0]+cast<int>(floor(d1/208))*96,d0)*f_inception_4a3x3_w_0(f_inception_4a3x3_1_r[2],f_inception_4a3x3_1_r[1],f_inception_4a3x3_1_r[0],d1))+f_inception_4a3x3_b_0(d1); | |
f_inception_4a3x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4a3x3_2; | |
// -> f_inception_4a3x3_1 float[1, 208, 13, 13] | |
// <- f_inception_4a3x3_2 float[1, 208, 13, 13] | |
f_inception_4a3x3_2(d3,d2,d1,d0) = select(f_inception_4a3x3_1(d3,d2,d1,d0)>0,f_inception_4a3x3_1(d3,d2,d1,d0),0); | |
f_inception_4a3x3_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4a5x5_reduce_1; | |
// -> f_pool33x3_s2_1 float[1, 480, 13, 13] | |
// -> f_inception_4a5x5_reduce_w_0 float[16, 480, 1, 1] | |
// -> f_inception_4a5x5_reduce_b_0 float[16] | |
// <- f_inception_4a5x5_reduce_1 float[1, 16, 13, 13] | |
RDom f_inception_4a5x5_reduce_1_r(0,480,0,1,0,1); | |
Func f_inception_4a5x5_reduce_1_padded = f_pool33x3_s2_1; | |
f_inception_4a5x5_reduce_1(d3,d2,d1,d0) = sum(f_inception_4a5x5_reduce_1_padded(d3*1+f_inception_4a5x5_reduce_1_r[2]*1-0,d2*1+f_inception_4a5x5_reduce_1_r[1]*1-0,f_inception_4a5x5_reduce_1_r[0]+cast<int>(floor(d1/16))*480,d0)*f_inception_4a5x5_reduce_w_0(f_inception_4a5x5_reduce_1_r[2],f_inception_4a5x5_reduce_1_r[1],f_inception_4a5x5_reduce_1_r[0],d1))+f_inception_4a5x5_reduce_b_0(d1); | |
f_inception_4a5x5_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4a5x5_reduce_2; | |
// -> f_inception_4a5x5_reduce_1 float[1, 16, 13, 13] | |
// <- f_inception_4a5x5_reduce_2 float[1, 16, 13, 13] | |
f_inception_4a5x5_reduce_2(d3,d2,d1,d0) = select(f_inception_4a5x5_reduce_1(d3,d2,d1,d0)>0,f_inception_4a5x5_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4a5x5_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4a5x5_1; | |
// -> f_inception_4a5x5_reduce_2 float[1, 16, 13, 13] | |
// -> f_inception_4a5x5_w_0 float[48, 16, 5, 5] | |
// -> f_inception_4a5x5_b_0 float[48] | |
// <- f_inception_4a5x5_1 float[1, 48, 13, 13] | |
RDom f_inception_4a5x5_1_r(0,16,0,5,0,5); | |
Func f_inception_4a5x5_1_padded = constant_exterior(f_inception_4a5x5_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4a5x5_1(d3,d2,d1,d0) = sum(f_inception_4a5x5_1_padded(d3*1+f_inception_4a5x5_1_r[2]*1-2,d2*1+f_inception_4a5x5_1_r[1]*1-2,f_inception_4a5x5_1_r[0]+cast<int>(floor(d1/48))*16,d0)*f_inception_4a5x5_w_0(f_inception_4a5x5_1_r[2],f_inception_4a5x5_1_r[1],f_inception_4a5x5_1_r[0],d1))+f_inception_4a5x5_b_0(d1); | |
f_inception_4a5x5_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4a5x5_2; | |
// -> f_inception_4a5x5_1 float[1, 48, 13, 13] | |
// <- f_inception_4a5x5_2 float[1, 48, 13, 13] | |
f_inception_4a5x5_2(d3,d2,d1,d0) = select(f_inception_4a5x5_1(d3,d2,d1,d0)>0,f_inception_4a5x5_1(d3,d2,d1,d0),0); | |
f_inception_4a5x5_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_inception_4apool_1; | |
// -> f_pool33x3_s2_1 float[1, 480, 13, 13] | |
// <- f_inception_4apool_1 float[1, 480, 13, 13] | |
RDom f_inception_4apool_1_r(0,3,0,3); | |
Func f_inception_4apool_1_pad = constant_exterior(f_pool33x3_s2_1, cast<float >(Expr(-FLT_MAX)), {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4apool_1(d3,d2,d1,d0) = maximum(f_inception_4apool_1_pad(d3*1+f_inception_4apool_1_r[1]-1,d2*1+f_inception_4apool_1_r[0]-1,d1,d0)); | |
f_inception_4apool_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4apool_proj_1; | |
// -> f_inception_4apool_1 float[1, 480, 13, 13] | |
// -> f_inception_4apool_proj_w_0 float[64, 480, 1, 1] | |
// -> f_inception_4apool_proj_b_0 float[64] | |
// <- f_inception_4apool_proj_1 float[1, 64, 13, 13] | |
RDom f_inception_4apool_proj_1_r(0,480,0,1,0,1); | |
Func f_inception_4apool_proj_1_padded = f_inception_4apool_1; | |
f_inception_4apool_proj_1(d3,d2,d1,d0) = sum(f_inception_4apool_proj_1_padded(d3*1+f_inception_4apool_proj_1_r[2]*1-0,d2*1+f_inception_4apool_proj_1_r[1]*1-0,f_inception_4apool_proj_1_r[0]+cast<int>(floor(d1/64))*480,d0)*f_inception_4apool_proj_w_0(f_inception_4apool_proj_1_r[2],f_inception_4apool_proj_1_r[1],f_inception_4apool_proj_1_r[0],d1))+f_inception_4apool_proj_b_0(d1); | |
f_inception_4apool_proj_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4apool_proj_2; | |
// -> f_inception_4apool_proj_1 float[1, 64, 13, 13] | |
// <- f_inception_4apool_proj_2 float[1, 64, 13, 13] | |
f_inception_4apool_proj_2(d3,d2,d1,d0) = select(f_inception_4apool_proj_1(d3,d2,d1,d0)>0,f_inception_4apool_proj_1(d3,d2,d1,d0),0); | |
f_inception_4apool_proj_2.compute_root(); | |
//////////////////// | |
// Concat | |
Func f_inception_4aoutput_1; | |
// -> f_inception_4a1x1_2 float[1, 192, 13, 13] | |
// -> f_inception_4a3x3_2 float[1, 208, 13, 13] | |
// -> f_inception_4a5x5_2 float[1, 48, 13, 13] | |
// -> f_inception_4apool_proj_2 float[1, 64, 13, 13] | |
// <- f_inception_4aoutput_1 float[1, 512, 13, 13] | |
f_inception_4aoutput_1(d3,d2,d1,d0) = undef<float>(); | |
RDom f_inception_4aoutput_1_0(0,192); | |
f_inception_4aoutput_1(d3,d2,f_inception_4aoutput_1_0[0],d0) = f_inception_4a1x1_2(d3,d2,f_inception_4aoutput_1_0[0]-0,d0); | |
RDom f_inception_4aoutput_1_1(192,208); | |
f_inception_4aoutput_1(d3,d2,f_inception_4aoutput_1_1[0],d0) = f_inception_4a3x3_2(d3,d2,f_inception_4aoutput_1_1[0]-192,d0); | |
RDom f_inception_4aoutput_1_2(400,48); | |
f_inception_4aoutput_1(d3,d2,f_inception_4aoutput_1_2[0],d0) = f_inception_4a5x5_2(d3,d2,f_inception_4aoutput_1_2[0]-400,d0); | |
RDom f_inception_4aoutput_1_3(448,64); | |
f_inception_4aoutput_1(d3,d2,f_inception_4aoutput_1_3[0],d0) = f_inception_4apool_proj_2(d3,d2,f_inception_4aoutput_1_3[0]-448,d0); | |
f_inception_4aoutput_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4b1x1_1; | |
// -> f_inception_4aoutput_1 float[1, 512, 13, 13] | |
// -> f_inception_4b1x1_w_0 float[160, 512, 1, 1] | |
// -> f_inception_4b1x1_b_0 float[160] | |
// <- f_inception_4b1x1_1 float[1, 160, 13, 13] | |
RDom f_inception_4b1x1_1_r(0,512,0,1,0,1); | |
Func f_inception_4b1x1_1_padded = f_inception_4aoutput_1; | |
f_inception_4b1x1_1(d3,d2,d1,d0) = sum(f_inception_4b1x1_1_padded(d3*1+f_inception_4b1x1_1_r[2]*1-0,d2*1+f_inception_4b1x1_1_r[1]*1-0,f_inception_4b1x1_1_r[0]+cast<int>(floor(d1/160))*512,d0)*f_inception_4b1x1_w_0(f_inception_4b1x1_1_r[2],f_inception_4b1x1_1_r[1],f_inception_4b1x1_1_r[0],d1))+f_inception_4b1x1_b_0(d1); | |
f_inception_4b1x1_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4b1x1_2; | |
// -> f_inception_4b1x1_1 float[1, 160, 13, 13] | |
// <- f_inception_4b1x1_2 float[1, 160, 13, 13] | |
f_inception_4b1x1_2(d3,d2,d1,d0) = select(f_inception_4b1x1_1(d3,d2,d1,d0)>0,f_inception_4b1x1_1(d3,d2,d1,d0),0); | |
f_inception_4b1x1_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4b3x3_reduce_1; | |
// -> f_inception_4aoutput_1 float[1, 512, 13, 13] | |
// -> f_inception_4b3x3_reduce_w_0 float[112, 512, 1, 1] | |
// -> f_inception_4b3x3_reduce_b_0 float[112] | |
// <- f_inception_4b3x3_reduce_1 float[1, 112, 13, 13] | |
RDom f_inception_4b3x3_reduce_1_r(0,512,0,1,0,1); | |
Func f_inception_4b3x3_reduce_1_padded = f_inception_4aoutput_1; | |
f_inception_4b3x3_reduce_1(d3,d2,d1,d0) = sum(f_inception_4b3x3_reduce_1_padded(d3*1+f_inception_4b3x3_reduce_1_r[2]*1-0,d2*1+f_inception_4b3x3_reduce_1_r[1]*1-0,f_inception_4b3x3_reduce_1_r[0]+cast<int>(floor(d1/112))*512,d0)*f_inception_4b3x3_reduce_w_0(f_inception_4b3x3_reduce_1_r[2],f_inception_4b3x3_reduce_1_r[1],f_inception_4b3x3_reduce_1_r[0],d1))+f_inception_4b3x3_reduce_b_0(d1); | |
f_inception_4b3x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4b3x3_reduce_2; | |
// -> f_inception_4b3x3_reduce_1 float[1, 112, 13, 13] | |
// <- f_inception_4b3x3_reduce_2 float[1, 112, 13, 13] | |
f_inception_4b3x3_reduce_2(d3,d2,d1,d0) = select(f_inception_4b3x3_reduce_1(d3,d2,d1,d0)>0,f_inception_4b3x3_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4b3x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4b3x3_1; | |
// -> f_inception_4b3x3_reduce_2 float[1, 112, 13, 13] | |
// -> f_inception_4b3x3_w_0 float[224, 112, 3, 3] | |
// -> f_inception_4b3x3_b_0 float[224] | |
// <- f_inception_4b3x3_1 float[1, 224, 13, 13] | |
RDom f_inception_4b3x3_1_r(0,112,0,3,0,3); | |
Func f_inception_4b3x3_1_padded = constant_exterior(f_inception_4b3x3_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4b3x3_1(d3,d2,d1,d0) = sum(f_inception_4b3x3_1_padded(d3*1+f_inception_4b3x3_1_r[2]*1-1,d2*1+f_inception_4b3x3_1_r[1]*1-1,f_inception_4b3x3_1_r[0]+cast<int>(floor(d1/224))*112,d0)*f_inception_4b3x3_w_0(f_inception_4b3x3_1_r[2],f_inception_4b3x3_1_r[1],f_inception_4b3x3_1_r[0],d1))+f_inception_4b3x3_b_0(d1); | |
f_inception_4b3x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4b3x3_2; | |
// -> f_inception_4b3x3_1 float[1, 224, 13, 13] | |
// <- f_inception_4b3x3_2 float[1, 224, 13, 13] | |
f_inception_4b3x3_2(d3,d2,d1,d0) = select(f_inception_4b3x3_1(d3,d2,d1,d0)>0,f_inception_4b3x3_1(d3,d2,d1,d0),0); | |
f_inception_4b3x3_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4b5x5_reduce_1; | |
// -> f_inception_4aoutput_1 float[1, 512, 13, 13] | |
// -> f_inception_4b5x5_reduce_w_0 float[24, 512, 1, 1] | |
// -> f_inception_4b5x5_reduce_b_0 float[24] | |
// <- f_inception_4b5x5_reduce_1 float[1, 24, 13, 13] | |
RDom f_inception_4b5x5_reduce_1_r(0,512,0,1,0,1); | |
Func f_inception_4b5x5_reduce_1_padded = f_inception_4aoutput_1; | |
f_inception_4b5x5_reduce_1(d3,d2,d1,d0) = sum(f_inception_4b5x5_reduce_1_padded(d3*1+f_inception_4b5x5_reduce_1_r[2]*1-0,d2*1+f_inception_4b5x5_reduce_1_r[1]*1-0,f_inception_4b5x5_reduce_1_r[0]+cast<int>(floor(d1/24))*512,d0)*f_inception_4b5x5_reduce_w_0(f_inception_4b5x5_reduce_1_r[2],f_inception_4b5x5_reduce_1_r[1],f_inception_4b5x5_reduce_1_r[0],d1))+f_inception_4b5x5_reduce_b_0(d1); | |
f_inception_4b5x5_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4b5x5_reduce_2; | |
// -> f_inception_4b5x5_reduce_1 float[1, 24, 13, 13] | |
// <- f_inception_4b5x5_reduce_2 float[1, 24, 13, 13] | |
f_inception_4b5x5_reduce_2(d3,d2,d1,d0) = select(f_inception_4b5x5_reduce_1(d3,d2,d1,d0)>0,f_inception_4b5x5_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4b5x5_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4b5x5_1; | |
// -> f_inception_4b5x5_reduce_2 float[1, 24, 13, 13] | |
// -> f_inception_4b5x5_w_0 float[64, 24, 5, 5] | |
// -> f_inception_4b5x5_b_0 float[64] | |
// <- f_inception_4b5x5_1 float[1, 64, 13, 13] | |
RDom f_inception_4b5x5_1_r(0,24,0,5,0,5); | |
Func f_inception_4b5x5_1_padded = constant_exterior(f_inception_4b5x5_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4b5x5_1(d3,d2,d1,d0) = sum(f_inception_4b5x5_1_padded(d3*1+f_inception_4b5x5_1_r[2]*1-2,d2*1+f_inception_4b5x5_1_r[1]*1-2,f_inception_4b5x5_1_r[0]+cast<int>(floor(d1/64))*24,d0)*f_inception_4b5x5_w_0(f_inception_4b5x5_1_r[2],f_inception_4b5x5_1_r[1],f_inception_4b5x5_1_r[0],d1))+f_inception_4b5x5_b_0(d1); | |
f_inception_4b5x5_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4b5x5_2; | |
// -> f_inception_4b5x5_1 float[1, 64, 13, 13] | |
// <- f_inception_4b5x5_2 float[1, 64, 13, 13] | |
f_inception_4b5x5_2(d3,d2,d1,d0) = select(f_inception_4b5x5_1(d3,d2,d1,d0)>0,f_inception_4b5x5_1(d3,d2,d1,d0),0); | |
f_inception_4b5x5_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_inception_4bpool_1; | |
// -> f_inception_4aoutput_1 float[1, 512, 13, 13] | |
// <- f_inception_4bpool_1 float[1, 512, 13, 13] | |
RDom f_inception_4bpool_1_r(0,3,0,3); | |
Func f_inception_4bpool_1_pad = constant_exterior(f_inception_4aoutput_1, cast<float >(Expr(-FLT_MAX)), {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4bpool_1(d3,d2,d1,d0) = maximum(f_inception_4bpool_1_pad(d3*1+f_inception_4bpool_1_r[1]-1,d2*1+f_inception_4bpool_1_r[0]-1,d1,d0)); | |
f_inception_4bpool_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4bpool_proj_1; | |
// -> f_inception_4bpool_1 float[1, 512, 13, 13] | |
// -> f_inception_4bpool_proj_w_0 float[64, 512, 1, 1] | |
// -> f_inception_4bpool_proj_b_0 float[64] | |
// <- f_inception_4bpool_proj_1 float[1, 64, 13, 13] | |
RDom f_inception_4bpool_proj_1_r(0,512,0,1,0,1); | |
Func f_inception_4bpool_proj_1_padded = f_inception_4bpool_1; | |
f_inception_4bpool_proj_1(d3,d2,d1,d0) = sum(f_inception_4bpool_proj_1_padded(d3*1+f_inception_4bpool_proj_1_r[2]*1-0,d2*1+f_inception_4bpool_proj_1_r[1]*1-0,f_inception_4bpool_proj_1_r[0]+cast<int>(floor(d1/64))*512,d0)*f_inception_4bpool_proj_w_0(f_inception_4bpool_proj_1_r[2],f_inception_4bpool_proj_1_r[1],f_inception_4bpool_proj_1_r[0],d1))+f_inception_4bpool_proj_b_0(d1); | |
f_inception_4bpool_proj_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4bpool_proj_2; | |
// -> f_inception_4bpool_proj_1 float[1, 64, 13, 13] | |
// <- f_inception_4bpool_proj_2 float[1, 64, 13, 13] | |
f_inception_4bpool_proj_2(d3,d2,d1,d0) = select(f_inception_4bpool_proj_1(d3,d2,d1,d0)>0,f_inception_4bpool_proj_1(d3,d2,d1,d0),0); | |
f_inception_4bpool_proj_2.compute_root(); | |
//////////////////// | |
// Concat | |
Func f_inception_4boutput_1; | |
// -> f_inception_4b1x1_2 float[1, 160, 13, 13] | |
// -> f_inception_4b3x3_2 float[1, 224, 13, 13] | |
// -> f_inception_4b5x5_2 float[1, 64, 13, 13] | |
// -> f_inception_4bpool_proj_2 float[1, 64, 13, 13] | |
// <- f_inception_4boutput_1 float[1, 512, 13, 13] | |
f_inception_4boutput_1(d3,d2,d1,d0) = undef<float>(); | |
RDom f_inception_4boutput_1_0(0,160); | |
f_inception_4boutput_1(d3,d2,f_inception_4boutput_1_0[0],d0) = f_inception_4b1x1_2(d3,d2,f_inception_4boutput_1_0[0]-0,d0); | |
RDom f_inception_4boutput_1_1(160,224); | |
f_inception_4boutput_1(d3,d2,f_inception_4boutput_1_1[0],d0) = f_inception_4b3x3_2(d3,d2,f_inception_4boutput_1_1[0]-160,d0); | |
RDom f_inception_4boutput_1_2(384,64); | |
f_inception_4boutput_1(d3,d2,f_inception_4boutput_1_2[0],d0) = f_inception_4b5x5_2(d3,d2,f_inception_4boutput_1_2[0]-384,d0); | |
RDom f_inception_4boutput_1_3(448,64); | |
f_inception_4boutput_1(d3,d2,f_inception_4boutput_1_3[0],d0) = f_inception_4bpool_proj_2(d3,d2,f_inception_4boutput_1_3[0]-448,d0); | |
f_inception_4boutput_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4c1x1_1; | |
// -> f_inception_4boutput_1 float[1, 512, 13, 13] | |
// -> f_inception_4c1x1_w_0 float[128, 512, 1, 1] | |
// -> f_inception_4c1x1_b_0 float[128] | |
// <- f_inception_4c1x1_1 float[1, 128, 13, 13] | |
RDom f_inception_4c1x1_1_r(0,512,0,1,0,1); | |
Func f_inception_4c1x1_1_padded = f_inception_4boutput_1; | |
f_inception_4c1x1_1(d3,d2,d1,d0) = sum(f_inception_4c1x1_1_padded(d3*1+f_inception_4c1x1_1_r[2]*1-0,d2*1+f_inception_4c1x1_1_r[1]*1-0,f_inception_4c1x1_1_r[0]+cast<int>(floor(d1/128))*512,d0)*f_inception_4c1x1_w_0(f_inception_4c1x1_1_r[2],f_inception_4c1x1_1_r[1],f_inception_4c1x1_1_r[0],d1))+f_inception_4c1x1_b_0(d1); | |
f_inception_4c1x1_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4c1x1_2; | |
// -> f_inception_4c1x1_1 float[1, 128, 13, 13] | |
// <- f_inception_4c1x1_2 float[1, 128, 13, 13] | |
f_inception_4c1x1_2(d3,d2,d1,d0) = select(f_inception_4c1x1_1(d3,d2,d1,d0)>0,f_inception_4c1x1_1(d3,d2,d1,d0),0); | |
f_inception_4c1x1_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4c3x3_reduce_1; | |
// -> f_inception_4boutput_1 float[1, 512, 13, 13] | |
// -> f_inception_4c3x3_reduce_w_0 float[128, 512, 1, 1] | |
// -> f_inception_4c3x3_reduce_b_0 float[128] | |
// <- f_inception_4c3x3_reduce_1 float[1, 128, 13, 13] | |
RDom f_inception_4c3x3_reduce_1_r(0,512,0,1,0,1); | |
Func f_inception_4c3x3_reduce_1_padded = f_inception_4boutput_1; | |
f_inception_4c3x3_reduce_1(d3,d2,d1,d0) = sum(f_inception_4c3x3_reduce_1_padded(d3*1+f_inception_4c3x3_reduce_1_r[2]*1-0,d2*1+f_inception_4c3x3_reduce_1_r[1]*1-0,f_inception_4c3x3_reduce_1_r[0]+cast<int>(floor(d1/128))*512,d0)*f_inception_4c3x3_reduce_w_0(f_inception_4c3x3_reduce_1_r[2],f_inception_4c3x3_reduce_1_r[1],f_inception_4c3x3_reduce_1_r[0],d1))+f_inception_4c3x3_reduce_b_0(d1); | |
f_inception_4c3x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4c3x3_reduce_2; | |
// -> f_inception_4c3x3_reduce_1 float[1, 128, 13, 13] | |
// <- f_inception_4c3x3_reduce_2 float[1, 128, 13, 13] | |
f_inception_4c3x3_reduce_2(d3,d2,d1,d0) = select(f_inception_4c3x3_reduce_1(d3,d2,d1,d0)>0,f_inception_4c3x3_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4c3x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4c3x3_1; | |
// -> f_inception_4c3x3_reduce_2 float[1, 128, 13, 13] | |
// -> f_inception_4c3x3_w_0 float[256, 128, 3, 3] | |
// -> f_inception_4c3x3_b_0 float[256] | |
// <- f_inception_4c3x3_1 float[1, 256, 13, 13] | |
RDom f_inception_4c3x3_1_r(0,128,0,3,0,3); | |
Func f_inception_4c3x3_1_padded = constant_exterior(f_inception_4c3x3_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4c3x3_1(d3,d2,d1,d0) = sum(f_inception_4c3x3_1_padded(d3*1+f_inception_4c3x3_1_r[2]*1-1,d2*1+f_inception_4c3x3_1_r[1]*1-1,f_inception_4c3x3_1_r[0]+cast<int>(floor(d1/256))*128,d0)*f_inception_4c3x3_w_0(f_inception_4c3x3_1_r[2],f_inception_4c3x3_1_r[1],f_inception_4c3x3_1_r[0],d1))+f_inception_4c3x3_b_0(d1); | |
f_inception_4c3x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4c3x3_2; | |
// -> f_inception_4c3x3_1 float[1, 256, 13, 13] | |
// <- f_inception_4c3x3_2 float[1, 256, 13, 13] | |
f_inception_4c3x3_2(d3,d2,d1,d0) = select(f_inception_4c3x3_1(d3,d2,d1,d0)>0,f_inception_4c3x3_1(d3,d2,d1,d0),0); | |
f_inception_4c3x3_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4c5x5_reduce_1; | |
// -> f_inception_4boutput_1 float[1, 512, 13, 13] | |
// -> f_inception_4c5x5_reduce_w_0 float[24, 512, 1, 1] | |
// -> f_inception_4c5x5_reduce_b_0 float[24] | |
// <- f_inception_4c5x5_reduce_1 float[1, 24, 13, 13] | |
RDom f_inception_4c5x5_reduce_1_r(0,512,0,1,0,1); | |
Func f_inception_4c5x5_reduce_1_padded = f_inception_4boutput_1; | |
f_inception_4c5x5_reduce_1(d3,d2,d1,d0) = sum(f_inception_4c5x5_reduce_1_padded(d3*1+f_inception_4c5x5_reduce_1_r[2]*1-0,d2*1+f_inception_4c5x5_reduce_1_r[1]*1-0,f_inception_4c5x5_reduce_1_r[0]+cast<int>(floor(d1/24))*512,d0)*f_inception_4c5x5_reduce_w_0(f_inception_4c5x5_reduce_1_r[2],f_inception_4c5x5_reduce_1_r[1],f_inception_4c5x5_reduce_1_r[0],d1))+f_inception_4c5x5_reduce_b_0(d1); | |
f_inception_4c5x5_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4c5x5_reduce_2; | |
// -> f_inception_4c5x5_reduce_1 float[1, 24, 13, 13] | |
// <- f_inception_4c5x5_reduce_2 float[1, 24, 13, 13] | |
f_inception_4c5x5_reduce_2(d3,d2,d1,d0) = select(f_inception_4c5x5_reduce_1(d3,d2,d1,d0)>0,f_inception_4c5x5_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4c5x5_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4c5x5_1; | |
// -> f_inception_4c5x5_reduce_2 float[1, 24, 13, 13] | |
// -> f_inception_4c5x5_w_0 float[64, 24, 5, 5] | |
// -> f_inception_4c5x5_b_0 float[64] | |
// <- f_inception_4c5x5_1 float[1, 64, 13, 13] | |
RDom f_inception_4c5x5_1_r(0,24,0,5,0,5); | |
Func f_inception_4c5x5_1_padded = constant_exterior(f_inception_4c5x5_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4c5x5_1(d3,d2,d1,d0) = sum(f_inception_4c5x5_1_padded(d3*1+f_inception_4c5x5_1_r[2]*1-2,d2*1+f_inception_4c5x5_1_r[1]*1-2,f_inception_4c5x5_1_r[0]+cast<int>(floor(d1/64))*24,d0)*f_inception_4c5x5_w_0(f_inception_4c5x5_1_r[2],f_inception_4c5x5_1_r[1],f_inception_4c5x5_1_r[0],d1))+f_inception_4c5x5_b_0(d1); | |
f_inception_4c5x5_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4c5x5_2; | |
// -> f_inception_4c5x5_1 float[1, 64, 13, 13] | |
// <- f_inception_4c5x5_2 float[1, 64, 13, 13] | |
f_inception_4c5x5_2(d3,d2,d1,d0) = select(f_inception_4c5x5_1(d3,d2,d1,d0)>0,f_inception_4c5x5_1(d3,d2,d1,d0),0); | |
f_inception_4c5x5_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_inception_4cpool_1; | |
// -> f_inception_4boutput_1 float[1, 512, 13, 13] | |
// <- f_inception_4cpool_1 float[1, 512, 13, 13] | |
RDom f_inception_4cpool_1_r(0,3,0,3); | |
Func f_inception_4cpool_1_pad = constant_exterior(f_inception_4boutput_1, cast<float >(Expr(-FLT_MAX)), {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4cpool_1(d3,d2,d1,d0) = maximum(f_inception_4cpool_1_pad(d3*1+f_inception_4cpool_1_r[1]-1,d2*1+f_inception_4cpool_1_r[0]-1,d1,d0)); | |
f_inception_4cpool_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4cpool_proj_1; | |
// -> f_inception_4cpool_1 float[1, 512, 13, 13] | |
// -> f_inception_4cpool_proj_w_0 float[64, 512, 1, 1] | |
// -> f_inception_4cpool_proj_b_0 float[64] | |
// <- f_inception_4cpool_proj_1 float[1, 64, 13, 13] | |
RDom f_inception_4cpool_proj_1_r(0,512,0,1,0,1); | |
Func f_inception_4cpool_proj_1_padded = f_inception_4cpool_1; | |
f_inception_4cpool_proj_1(d3,d2,d1,d0) = sum(f_inception_4cpool_proj_1_padded(d3*1+f_inception_4cpool_proj_1_r[2]*1-0,d2*1+f_inception_4cpool_proj_1_r[1]*1-0,f_inception_4cpool_proj_1_r[0]+cast<int>(floor(d1/64))*512,d0)*f_inception_4cpool_proj_w_0(f_inception_4cpool_proj_1_r[2],f_inception_4cpool_proj_1_r[1],f_inception_4cpool_proj_1_r[0],d1))+f_inception_4cpool_proj_b_0(d1); | |
f_inception_4cpool_proj_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4cpool_proj_2; | |
// -> f_inception_4cpool_proj_1 float[1, 64, 13, 13] | |
// <- f_inception_4cpool_proj_2 float[1, 64, 13, 13] | |
f_inception_4cpool_proj_2(d3,d2,d1,d0) = select(f_inception_4cpool_proj_1(d3,d2,d1,d0)>0,f_inception_4cpool_proj_1(d3,d2,d1,d0),0); | |
f_inception_4cpool_proj_2.compute_root(); | |
//////////////////// | |
// Concat | |
Func f_inception_4coutput_1; | |
// -> f_inception_4c1x1_2 float[1, 128, 13, 13] | |
// -> f_inception_4c3x3_2 float[1, 256, 13, 13] | |
// -> f_inception_4c5x5_2 float[1, 64, 13, 13] | |
// -> f_inception_4cpool_proj_2 float[1, 64, 13, 13] | |
// <- f_inception_4coutput_1 float[1, 512, 13, 13] | |
f_inception_4coutput_1(d3,d2,d1,d0) = undef<float>(); | |
RDom f_inception_4coutput_1_0(0,128); | |
f_inception_4coutput_1(d3,d2,f_inception_4coutput_1_0[0],d0) = f_inception_4c1x1_2(d3,d2,f_inception_4coutput_1_0[0]-0,d0); | |
RDom f_inception_4coutput_1_1(128,256); | |
f_inception_4coutput_1(d3,d2,f_inception_4coutput_1_1[0],d0) = f_inception_4c3x3_2(d3,d2,f_inception_4coutput_1_1[0]-128,d0); | |
RDom f_inception_4coutput_1_2(384,64); | |
f_inception_4coutput_1(d3,d2,f_inception_4coutput_1_2[0],d0) = f_inception_4c5x5_2(d3,d2,f_inception_4coutput_1_2[0]-384,d0); | |
RDom f_inception_4coutput_1_3(448,64); | |
f_inception_4coutput_1(d3,d2,f_inception_4coutput_1_3[0],d0) = f_inception_4cpool_proj_2(d3,d2,f_inception_4coutput_1_3[0]-448,d0); | |
f_inception_4coutput_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4d1x1_1; | |
// -> f_inception_4coutput_1 float[1, 512, 13, 13] | |
// -> f_inception_4d1x1_w_0 float[112, 512, 1, 1] | |
// -> f_inception_4d1x1_b_0 float[112] | |
// <- f_inception_4d1x1_1 float[1, 112, 13, 13] | |
RDom f_inception_4d1x1_1_r(0,512,0,1,0,1); | |
Func f_inception_4d1x1_1_padded = f_inception_4coutput_1; | |
f_inception_4d1x1_1(d3,d2,d1,d0) = sum(f_inception_4d1x1_1_padded(d3*1+f_inception_4d1x1_1_r[2]*1-0,d2*1+f_inception_4d1x1_1_r[1]*1-0,f_inception_4d1x1_1_r[0]+cast<int>(floor(d1/112))*512,d0)*f_inception_4d1x1_w_0(f_inception_4d1x1_1_r[2],f_inception_4d1x1_1_r[1],f_inception_4d1x1_1_r[0],d1))+f_inception_4d1x1_b_0(d1); | |
f_inception_4d1x1_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4d1x1_2; | |
// -> f_inception_4d1x1_1 float[1, 112, 13, 13] | |
// <- f_inception_4d1x1_2 float[1, 112, 13, 13] | |
f_inception_4d1x1_2(d3,d2,d1,d0) = select(f_inception_4d1x1_1(d3,d2,d1,d0)>0,f_inception_4d1x1_1(d3,d2,d1,d0),0); | |
f_inception_4d1x1_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4d3x3_reduce_1; | |
// -> f_inception_4coutput_1 float[1, 512, 13, 13] | |
// -> f_inception_4d3x3_reduce_w_0 float[144, 512, 1, 1] | |
// -> f_inception_4d3x3_reduce_b_0 float[144] | |
// <- f_inception_4d3x3_reduce_1 float[1, 144, 13, 13] | |
RDom f_inception_4d3x3_reduce_1_r(0,512,0,1,0,1); | |
Func f_inception_4d3x3_reduce_1_padded = f_inception_4coutput_1; | |
f_inception_4d3x3_reduce_1(d3,d2,d1,d0) = sum(f_inception_4d3x3_reduce_1_padded(d3*1+f_inception_4d3x3_reduce_1_r[2]*1-0,d2*1+f_inception_4d3x3_reduce_1_r[1]*1-0,f_inception_4d3x3_reduce_1_r[0]+cast<int>(floor(d1/144))*512,d0)*f_inception_4d3x3_reduce_w_0(f_inception_4d3x3_reduce_1_r[2],f_inception_4d3x3_reduce_1_r[1],f_inception_4d3x3_reduce_1_r[0],d1))+f_inception_4d3x3_reduce_b_0(d1); | |
f_inception_4d3x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4d3x3_reduce_2; | |
// -> f_inception_4d3x3_reduce_1 float[1, 144, 13, 13] | |
// <- f_inception_4d3x3_reduce_2 float[1, 144, 13, 13] | |
f_inception_4d3x3_reduce_2(d3,d2,d1,d0) = select(f_inception_4d3x3_reduce_1(d3,d2,d1,d0)>0,f_inception_4d3x3_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4d3x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4d3x3_1; | |
// -> f_inception_4d3x3_reduce_2 float[1, 144, 13, 13] | |
// -> f_inception_4d3x3_w_0 float[288, 144, 3, 3] | |
// -> f_inception_4d3x3_b_0 float[288] | |
// <- f_inception_4d3x3_1 float[1, 288, 13, 13] | |
RDom f_inception_4d3x3_1_r(0,144,0,3,0,3); | |
Func f_inception_4d3x3_1_padded = constant_exterior(f_inception_4d3x3_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4d3x3_1(d3,d2,d1,d0) = sum(f_inception_4d3x3_1_padded(d3*1+f_inception_4d3x3_1_r[2]*1-1,d2*1+f_inception_4d3x3_1_r[1]*1-1,f_inception_4d3x3_1_r[0]+cast<int>(floor(d1/288))*144,d0)*f_inception_4d3x3_w_0(f_inception_4d3x3_1_r[2],f_inception_4d3x3_1_r[1],f_inception_4d3x3_1_r[0],d1))+f_inception_4d3x3_b_0(d1); | |
f_inception_4d3x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4d3x3_2; | |
// -> f_inception_4d3x3_1 float[1, 288, 13, 13] | |
// <- f_inception_4d3x3_2 float[1, 288, 13, 13] | |
f_inception_4d3x3_2(d3,d2,d1,d0) = select(f_inception_4d3x3_1(d3,d2,d1,d0)>0,f_inception_4d3x3_1(d3,d2,d1,d0),0); | |
f_inception_4d3x3_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4d5x5_reduce_1; | |
// -> f_inception_4coutput_1 float[1, 512, 13, 13] | |
// -> f_inception_4d5x5_reduce_w_0 float[32, 512, 1, 1] | |
// -> f_inception_4d5x5_reduce_b_0 float[32] | |
// <- f_inception_4d5x5_reduce_1 float[1, 32, 13, 13] | |
RDom f_inception_4d5x5_reduce_1_r(0,512,0,1,0,1); | |
Func f_inception_4d5x5_reduce_1_padded = f_inception_4coutput_1; | |
f_inception_4d5x5_reduce_1(d3,d2,d1,d0) = sum(f_inception_4d5x5_reduce_1_padded(d3*1+f_inception_4d5x5_reduce_1_r[2]*1-0,d2*1+f_inception_4d5x5_reduce_1_r[1]*1-0,f_inception_4d5x5_reduce_1_r[0]+cast<int>(floor(d1/32))*512,d0)*f_inception_4d5x5_reduce_w_0(f_inception_4d5x5_reduce_1_r[2],f_inception_4d5x5_reduce_1_r[1],f_inception_4d5x5_reduce_1_r[0],d1))+f_inception_4d5x5_reduce_b_0(d1); | |
f_inception_4d5x5_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4d5x5_reduce_2; | |
// -> f_inception_4d5x5_reduce_1 float[1, 32, 13, 13] | |
// <- f_inception_4d5x5_reduce_2 float[1, 32, 13, 13] | |
f_inception_4d5x5_reduce_2(d3,d2,d1,d0) = select(f_inception_4d5x5_reduce_1(d3,d2,d1,d0)>0,f_inception_4d5x5_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4d5x5_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4d5x5_1; | |
// -> f_inception_4d5x5_reduce_2 float[1, 32, 13, 13] | |
// -> f_inception_4d5x5_w_0 float[64, 32, 5, 5] | |
// -> f_inception_4d5x5_b_0 float[64] | |
// <- f_inception_4d5x5_1 float[1, 64, 13, 13] | |
RDom f_inception_4d5x5_1_r(0,32,0,5,0,5); | |
Func f_inception_4d5x5_1_padded = constant_exterior(f_inception_4d5x5_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4d5x5_1(d3,d2,d1,d0) = sum(f_inception_4d5x5_1_padded(d3*1+f_inception_4d5x5_1_r[2]*1-2,d2*1+f_inception_4d5x5_1_r[1]*1-2,f_inception_4d5x5_1_r[0]+cast<int>(floor(d1/64))*32,d0)*f_inception_4d5x5_w_0(f_inception_4d5x5_1_r[2],f_inception_4d5x5_1_r[1],f_inception_4d5x5_1_r[0],d1))+f_inception_4d5x5_b_0(d1); | |
f_inception_4d5x5_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4d5x5_2; | |
// -> f_inception_4d5x5_1 float[1, 64, 13, 13] | |
// <- f_inception_4d5x5_2 float[1, 64, 13, 13] | |
f_inception_4d5x5_2(d3,d2,d1,d0) = select(f_inception_4d5x5_1(d3,d2,d1,d0)>0,f_inception_4d5x5_1(d3,d2,d1,d0),0); | |
f_inception_4d5x5_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_inception_4dpool_1; | |
// -> f_inception_4coutput_1 float[1, 512, 13, 13] | |
// <- f_inception_4dpool_1 float[1, 512, 13, 13] | |
RDom f_inception_4dpool_1_r(0,3,0,3); | |
Func f_inception_4dpool_1_pad = constant_exterior(f_inception_4coutput_1, cast<float >(Expr(-FLT_MAX)), {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4dpool_1(d3,d2,d1,d0) = maximum(f_inception_4dpool_1_pad(d3*1+f_inception_4dpool_1_r[1]-1,d2*1+f_inception_4dpool_1_r[0]-1,d1,d0)); | |
f_inception_4dpool_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4dpool_proj_1; | |
// -> f_inception_4dpool_1 float[1, 512, 13, 13] | |
// -> f_inception_4dpool_proj_w_0 float[64, 512, 1, 1] | |
// -> f_inception_4dpool_proj_b_0 float[64] | |
// <- f_inception_4dpool_proj_1 float[1, 64, 13, 13] | |
RDom f_inception_4dpool_proj_1_r(0,512,0,1,0,1); | |
Func f_inception_4dpool_proj_1_padded = f_inception_4dpool_1; | |
f_inception_4dpool_proj_1(d3,d2,d1,d0) = sum(f_inception_4dpool_proj_1_padded(d3*1+f_inception_4dpool_proj_1_r[2]*1-0,d2*1+f_inception_4dpool_proj_1_r[1]*1-0,f_inception_4dpool_proj_1_r[0]+cast<int>(floor(d1/64))*512,d0)*f_inception_4dpool_proj_w_0(f_inception_4dpool_proj_1_r[2],f_inception_4dpool_proj_1_r[1],f_inception_4dpool_proj_1_r[0],d1))+f_inception_4dpool_proj_b_0(d1); | |
f_inception_4dpool_proj_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4dpool_proj_2; | |
// -> f_inception_4dpool_proj_1 float[1, 64, 13, 13] | |
// <- f_inception_4dpool_proj_2 float[1, 64, 13, 13] | |
f_inception_4dpool_proj_2(d3,d2,d1,d0) = select(f_inception_4dpool_proj_1(d3,d2,d1,d0)>0,f_inception_4dpool_proj_1(d3,d2,d1,d0),0); | |
f_inception_4dpool_proj_2.compute_root(); | |
//////////////////// | |
// Concat | |
Func f_inception_4doutput_1; | |
// -> f_inception_4d1x1_2 float[1, 112, 13, 13] | |
// -> f_inception_4d3x3_2 float[1, 288, 13, 13] | |
// -> f_inception_4d5x5_2 float[1, 64, 13, 13] | |
// -> f_inception_4dpool_proj_2 float[1, 64, 13, 13] | |
// <- f_inception_4doutput_1 float[1, 528, 13, 13] | |
f_inception_4doutput_1(d3,d2,d1,d0) = undef<float>(); | |
RDom f_inception_4doutput_1_0(0,112); | |
f_inception_4doutput_1(d3,d2,f_inception_4doutput_1_0[0],d0) = f_inception_4d1x1_2(d3,d2,f_inception_4doutput_1_0[0]-0,d0); | |
RDom f_inception_4doutput_1_1(112,288); | |
f_inception_4doutput_1(d3,d2,f_inception_4doutput_1_1[0],d0) = f_inception_4d3x3_2(d3,d2,f_inception_4doutput_1_1[0]-112,d0); | |
RDom f_inception_4doutput_1_2(400,64); | |
f_inception_4doutput_1(d3,d2,f_inception_4doutput_1_2[0],d0) = f_inception_4d5x5_2(d3,d2,f_inception_4doutput_1_2[0]-400,d0); | |
RDom f_inception_4doutput_1_3(464,64); | |
f_inception_4doutput_1(d3,d2,f_inception_4doutput_1_3[0],d0) = f_inception_4dpool_proj_2(d3,d2,f_inception_4doutput_1_3[0]-464,d0); | |
f_inception_4doutput_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4e1x1_1; | |
// -> f_inception_4doutput_1 float[1, 528, 13, 13] | |
// -> f_inception_4e1x1_w_0 float[256, 528, 1, 1] | |
// -> f_inception_4e1x1_b_0 float[256] | |
// <- f_inception_4e1x1_1 float[1, 256, 13, 13] | |
RDom f_inception_4e1x1_1_r(0,528,0,1,0,1); | |
Func f_inception_4e1x1_1_padded = f_inception_4doutput_1; | |
f_inception_4e1x1_1(d3,d2,d1,d0) = sum(f_inception_4e1x1_1_padded(d3*1+f_inception_4e1x1_1_r[2]*1-0,d2*1+f_inception_4e1x1_1_r[1]*1-0,f_inception_4e1x1_1_r[0]+cast<int>(floor(d1/256))*528,d0)*f_inception_4e1x1_w_0(f_inception_4e1x1_1_r[2],f_inception_4e1x1_1_r[1],f_inception_4e1x1_1_r[0],d1))+f_inception_4e1x1_b_0(d1); | |
f_inception_4e1x1_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4e1x1_2; | |
// -> f_inception_4e1x1_1 float[1, 256, 13, 13] | |
// <- f_inception_4e1x1_2 float[1, 256, 13, 13] | |
f_inception_4e1x1_2(d3,d2,d1,d0) = select(f_inception_4e1x1_1(d3,d2,d1,d0)>0,f_inception_4e1x1_1(d3,d2,d1,d0),0); | |
f_inception_4e1x1_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4e3x3_reduce_1; | |
// -> f_inception_4doutput_1 float[1, 528, 13, 13] | |
// -> f_inception_4e3x3_reduce_w_0 float[160, 528, 1, 1] | |
// -> f_inception_4e3x3_reduce_b_0 float[160] | |
// <- f_inception_4e3x3_reduce_1 float[1, 160, 13, 13] | |
RDom f_inception_4e3x3_reduce_1_r(0,528,0,1,0,1); | |
Func f_inception_4e3x3_reduce_1_padded = f_inception_4doutput_1; | |
f_inception_4e3x3_reduce_1(d3,d2,d1,d0) = sum(f_inception_4e3x3_reduce_1_padded(d3*1+f_inception_4e3x3_reduce_1_r[2]*1-0,d2*1+f_inception_4e3x3_reduce_1_r[1]*1-0,f_inception_4e3x3_reduce_1_r[0]+cast<int>(floor(d1/160))*528,d0)*f_inception_4e3x3_reduce_w_0(f_inception_4e3x3_reduce_1_r[2],f_inception_4e3x3_reduce_1_r[1],f_inception_4e3x3_reduce_1_r[0],d1))+f_inception_4e3x3_reduce_b_0(d1); | |
f_inception_4e3x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4e3x3_reduce_2; | |
// -> f_inception_4e3x3_reduce_1 float[1, 160, 13, 13] | |
// <- f_inception_4e3x3_reduce_2 float[1, 160, 13, 13] | |
f_inception_4e3x3_reduce_2(d3,d2,d1,d0) = select(f_inception_4e3x3_reduce_1(d3,d2,d1,d0)>0,f_inception_4e3x3_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4e3x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4e3x3_1; | |
// -> f_inception_4e3x3_reduce_2 float[1, 160, 13, 13] | |
// -> f_inception_4e3x3_w_0 float[320, 160, 3, 3] | |
// -> f_inception_4e3x3_b_0 float[320] | |
// <- f_inception_4e3x3_1 float[1, 320, 13, 13] | |
RDom f_inception_4e3x3_1_r(0,160,0,3,0,3); | |
Func f_inception_4e3x3_1_padded = constant_exterior(f_inception_4e3x3_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4e3x3_1(d3,d2,d1,d0) = sum(f_inception_4e3x3_1_padded(d3*1+f_inception_4e3x3_1_r[2]*1-1,d2*1+f_inception_4e3x3_1_r[1]*1-1,f_inception_4e3x3_1_r[0]+cast<int>(floor(d1/320))*160,d0)*f_inception_4e3x3_w_0(f_inception_4e3x3_1_r[2],f_inception_4e3x3_1_r[1],f_inception_4e3x3_1_r[0],d1))+f_inception_4e3x3_b_0(d1); | |
f_inception_4e3x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4e3x3_2; | |
// -> f_inception_4e3x3_1 float[1, 320, 13, 13] | |
// <- f_inception_4e3x3_2 float[1, 320, 13, 13] | |
f_inception_4e3x3_2(d3,d2,d1,d0) = select(f_inception_4e3x3_1(d3,d2,d1,d0)>0,f_inception_4e3x3_1(d3,d2,d1,d0),0); | |
f_inception_4e3x3_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4e5x5_reduce_1; | |
// -> f_inception_4doutput_1 float[1, 528, 13, 13] | |
// -> f_inception_4e5x5_reduce_w_0 float[32, 528, 1, 1] | |
// -> f_inception_4e5x5_reduce_b_0 float[32] | |
// <- f_inception_4e5x5_reduce_1 float[1, 32, 13, 13] | |
RDom f_inception_4e5x5_reduce_1_r(0,528,0,1,0,1); | |
Func f_inception_4e5x5_reduce_1_padded = f_inception_4doutput_1; | |
f_inception_4e5x5_reduce_1(d3,d2,d1,d0) = sum(f_inception_4e5x5_reduce_1_padded(d3*1+f_inception_4e5x5_reduce_1_r[2]*1-0,d2*1+f_inception_4e5x5_reduce_1_r[1]*1-0,f_inception_4e5x5_reduce_1_r[0]+cast<int>(floor(d1/32))*528,d0)*f_inception_4e5x5_reduce_w_0(f_inception_4e5x5_reduce_1_r[2],f_inception_4e5x5_reduce_1_r[1],f_inception_4e5x5_reduce_1_r[0],d1))+f_inception_4e5x5_reduce_b_0(d1); | |
f_inception_4e5x5_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4e5x5_reduce_2; | |
// -> f_inception_4e5x5_reduce_1 float[1, 32, 13, 13] | |
// <- f_inception_4e5x5_reduce_2 float[1, 32, 13, 13] | |
f_inception_4e5x5_reduce_2(d3,d2,d1,d0) = select(f_inception_4e5x5_reduce_1(d3,d2,d1,d0)>0,f_inception_4e5x5_reduce_1(d3,d2,d1,d0),0); | |
f_inception_4e5x5_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4e5x5_1; | |
// -> f_inception_4e5x5_reduce_2 float[1, 32, 13, 13] | |
// -> f_inception_4e5x5_w_0 float[128, 32, 5, 5] | |
// -> f_inception_4e5x5_b_0 float[128] | |
// <- f_inception_4e5x5_1 float[1, 128, 13, 13] | |
RDom f_inception_4e5x5_1_r(0,32,0,5,0,5); | |
Func f_inception_4e5x5_1_padded = constant_exterior(f_inception_4e5x5_reduce_2, 0, {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4e5x5_1(d3,d2,d1,d0) = sum(f_inception_4e5x5_1_padded(d3*1+f_inception_4e5x5_1_r[2]*1-2,d2*1+f_inception_4e5x5_1_r[1]*1-2,f_inception_4e5x5_1_r[0]+cast<int>(floor(d1/128))*32,d0)*f_inception_4e5x5_w_0(f_inception_4e5x5_1_r[2],f_inception_4e5x5_1_r[1],f_inception_4e5x5_1_r[0],d1))+f_inception_4e5x5_b_0(d1); | |
f_inception_4e5x5_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4e5x5_2; | |
// -> f_inception_4e5x5_1 float[1, 128, 13, 13] | |
// <- f_inception_4e5x5_2 float[1, 128, 13, 13] | |
f_inception_4e5x5_2(d3,d2,d1,d0) = select(f_inception_4e5x5_1(d3,d2,d1,d0)>0,f_inception_4e5x5_1(d3,d2,d1,d0),0); | |
f_inception_4e5x5_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_inception_4epool_1; | |
// -> f_inception_4doutput_1 float[1, 528, 13, 13] | |
// <- f_inception_4epool_1 float[1, 528, 13, 13] | |
RDom f_inception_4epool_1_r(0,3,0,3); | |
Func f_inception_4epool_1_pad = constant_exterior(f_inception_4doutput_1, cast<float >(Expr(-FLT_MAX)), {{0,13},{0,13},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_4epool_1(d3,d2,d1,d0) = maximum(f_inception_4epool_1_pad(d3*1+f_inception_4epool_1_r[1]-1,d2*1+f_inception_4epool_1_r[0]-1,d1,d0)); | |
f_inception_4epool_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_4epool_proj_1; | |
// -> f_inception_4epool_1 float[1, 528, 13, 13] | |
// -> f_inception_4epool_proj_w_0 float[128, 528, 1, 1] | |
// -> f_inception_4epool_proj_b_0 float[128] | |
// <- f_inception_4epool_proj_1 float[1, 128, 13, 13] | |
RDom f_inception_4epool_proj_1_r(0,528,0,1,0,1); | |
Func f_inception_4epool_proj_1_padded = f_inception_4epool_1; | |
f_inception_4epool_proj_1(d3,d2,d1,d0) = sum(f_inception_4epool_proj_1_padded(d3*1+f_inception_4epool_proj_1_r[2]*1-0,d2*1+f_inception_4epool_proj_1_r[1]*1-0,f_inception_4epool_proj_1_r[0]+cast<int>(floor(d1/128))*528,d0)*f_inception_4epool_proj_w_0(f_inception_4epool_proj_1_r[2],f_inception_4epool_proj_1_r[1],f_inception_4epool_proj_1_r[0],d1))+f_inception_4epool_proj_b_0(d1); | |
f_inception_4epool_proj_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_4epool_proj_2; | |
// -> f_inception_4epool_proj_1 float[1, 128, 13, 13] | |
// <- f_inception_4epool_proj_2 float[1, 128, 13, 13] | |
f_inception_4epool_proj_2(d3,d2,d1,d0) = select(f_inception_4epool_proj_1(d3,d2,d1,d0)>0,f_inception_4epool_proj_1(d3,d2,d1,d0),0); | |
f_inception_4epool_proj_2.compute_root(); | |
//////////////////// | |
// Concat | |
Func f_inception_4eoutput_1; | |
// -> f_inception_4e1x1_2 float[1, 256, 13, 13] | |
// -> f_inception_4e3x3_2 float[1, 320, 13, 13] | |
// -> f_inception_4e5x5_2 float[1, 128, 13, 13] | |
// -> f_inception_4epool_proj_2 float[1, 128, 13, 13] | |
// <- f_inception_4eoutput_1 float[1, 832, 13, 13] | |
f_inception_4eoutput_1(d3,d2,d1,d0) = undef<float>(); | |
RDom f_inception_4eoutput_1_0(0,256); | |
f_inception_4eoutput_1(d3,d2,f_inception_4eoutput_1_0[0],d0) = f_inception_4e1x1_2(d3,d2,f_inception_4eoutput_1_0[0]-0,d0); | |
RDom f_inception_4eoutput_1_1(256,320); | |
f_inception_4eoutput_1(d3,d2,f_inception_4eoutput_1_1[0],d0) = f_inception_4e3x3_2(d3,d2,f_inception_4eoutput_1_1[0]-256,d0); | |
RDom f_inception_4eoutput_1_2(576,128); | |
f_inception_4eoutput_1(d3,d2,f_inception_4eoutput_1_2[0],d0) = f_inception_4e5x5_2(d3,d2,f_inception_4eoutput_1_2[0]-576,d0); | |
RDom f_inception_4eoutput_1_3(704,128); | |
f_inception_4eoutput_1(d3,d2,f_inception_4eoutput_1_3[0],d0) = f_inception_4epool_proj_2(d3,d2,f_inception_4eoutput_1_3[0]-704,d0); | |
f_inception_4eoutput_1.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_pool43x3_s2_1; | |
// -> f_inception_4eoutput_1 float[1, 832, 13, 13] | |
// <- f_pool43x3_s2_1 float[1, 832, 6, 6] | |
RDom f_pool43x3_s2_1_r(0,3,0,3); | |
Func f_pool43x3_s2_1_pad = f_inception_4eoutput_1; | |
f_pool43x3_s2_1(d3,d2,d1,d0) = maximum(f_pool43x3_s2_1_pad(d3*2+f_pool43x3_s2_1_r[1]-0,d2*2+f_pool43x3_s2_1_r[0]-0,d1,d0)); | |
f_pool43x3_s2_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5a1x1_1; | |
// -> f_pool43x3_s2_1 float[1, 832, 6, 6] | |
// -> f_inception_5a1x1_w_0 float[256, 832, 1, 1] | |
// -> f_inception_5a1x1_b_0 float[256] | |
// <- f_inception_5a1x1_1 float[1, 256, 6, 6] | |
RDom f_inception_5a1x1_1_r(0,832,0,1,0,1); | |
Func f_inception_5a1x1_1_padded = f_pool43x3_s2_1; | |
f_inception_5a1x1_1(d3,d2,d1,d0) = sum(f_inception_5a1x1_1_padded(d3*1+f_inception_5a1x1_1_r[2]*1-0,d2*1+f_inception_5a1x1_1_r[1]*1-0,f_inception_5a1x1_1_r[0]+cast<int>(floor(d1/256))*832,d0)*f_inception_5a1x1_w_0(f_inception_5a1x1_1_r[2],f_inception_5a1x1_1_r[1],f_inception_5a1x1_1_r[0],d1))+f_inception_5a1x1_b_0(d1); | |
f_inception_5a1x1_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5a1x1_2; | |
// -> f_inception_5a1x1_1 float[1, 256, 6, 6] | |
// <- f_inception_5a1x1_2 float[1, 256, 6, 6] | |
f_inception_5a1x1_2(d3,d2,d1,d0) = select(f_inception_5a1x1_1(d3,d2,d1,d0)>0,f_inception_5a1x1_1(d3,d2,d1,d0),0); | |
f_inception_5a1x1_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5a3x3_reduce_1; | |
// -> f_pool43x3_s2_1 float[1, 832, 6, 6] | |
// -> f_inception_5a3x3_reduce_w_0 float[160, 832, 1, 1] | |
// -> f_inception_5a3x3_reduce_b_0 float[160] | |
// <- f_inception_5a3x3_reduce_1 float[1, 160, 6, 6] | |
RDom f_inception_5a3x3_reduce_1_r(0,832,0,1,0,1); | |
Func f_inception_5a3x3_reduce_1_padded = f_pool43x3_s2_1; | |
f_inception_5a3x3_reduce_1(d3,d2,d1,d0) = sum(f_inception_5a3x3_reduce_1_padded(d3*1+f_inception_5a3x3_reduce_1_r[2]*1-0,d2*1+f_inception_5a3x3_reduce_1_r[1]*1-0,f_inception_5a3x3_reduce_1_r[0]+cast<int>(floor(d1/160))*832,d0)*f_inception_5a3x3_reduce_w_0(f_inception_5a3x3_reduce_1_r[2],f_inception_5a3x3_reduce_1_r[1],f_inception_5a3x3_reduce_1_r[0],d1))+f_inception_5a3x3_reduce_b_0(d1); | |
f_inception_5a3x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5a3x3_reduce_2; | |
// -> f_inception_5a3x3_reduce_1 float[1, 160, 6, 6] | |
// <- f_inception_5a3x3_reduce_2 float[1, 160, 6, 6] | |
f_inception_5a3x3_reduce_2(d3,d2,d1,d0) = select(f_inception_5a3x3_reduce_1(d3,d2,d1,d0)>0,f_inception_5a3x3_reduce_1(d3,d2,d1,d0),0); | |
f_inception_5a3x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5a3x3_1; | |
// -> f_inception_5a3x3_reduce_2 float[1, 160, 6, 6] | |
// -> f_inception_5a3x3_w_0 float[320, 160, 3, 3] | |
// -> f_inception_5a3x3_b_0 float[320] | |
// <- f_inception_5a3x3_1 float[1, 320, 6, 6] | |
RDom f_inception_5a3x3_1_r(0,160,0,3,0,3); | |
Func f_inception_5a3x3_1_padded = constant_exterior(f_inception_5a3x3_reduce_2, 0, {{0,6},{0,6},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_5a3x3_1(d3,d2,d1,d0) = sum(f_inception_5a3x3_1_padded(d3*1+f_inception_5a3x3_1_r[2]*1-1,d2*1+f_inception_5a3x3_1_r[1]*1-1,f_inception_5a3x3_1_r[0]+cast<int>(floor(d1/320))*160,d0)*f_inception_5a3x3_w_0(f_inception_5a3x3_1_r[2],f_inception_5a3x3_1_r[1],f_inception_5a3x3_1_r[0],d1))+f_inception_5a3x3_b_0(d1); | |
f_inception_5a3x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5a3x3_2; | |
// -> f_inception_5a3x3_1 float[1, 320, 6, 6] | |
// <- f_inception_5a3x3_2 float[1, 320, 6, 6] | |
f_inception_5a3x3_2(d3,d2,d1,d0) = select(f_inception_5a3x3_1(d3,d2,d1,d0)>0,f_inception_5a3x3_1(d3,d2,d1,d0),0); | |
f_inception_5a3x3_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5a5x5_reduce_1; | |
// -> f_pool43x3_s2_1 float[1, 832, 6, 6] | |
// -> f_inception_5a5x5_reduce_w_0 float[32, 832, 1, 1] | |
// -> f_inception_5a5x5_reduce_b_0 float[32] | |
// <- f_inception_5a5x5_reduce_1 float[1, 32, 6, 6] | |
RDom f_inception_5a5x5_reduce_1_r(0,832,0,1,0,1); | |
Func f_inception_5a5x5_reduce_1_padded = f_pool43x3_s2_1; | |
f_inception_5a5x5_reduce_1(d3,d2,d1,d0) = sum(f_inception_5a5x5_reduce_1_padded(d3*1+f_inception_5a5x5_reduce_1_r[2]*1-0,d2*1+f_inception_5a5x5_reduce_1_r[1]*1-0,f_inception_5a5x5_reduce_1_r[0]+cast<int>(floor(d1/32))*832,d0)*f_inception_5a5x5_reduce_w_0(f_inception_5a5x5_reduce_1_r[2],f_inception_5a5x5_reduce_1_r[1],f_inception_5a5x5_reduce_1_r[0],d1))+f_inception_5a5x5_reduce_b_0(d1); | |
f_inception_5a5x5_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5a5x5_reduce_2; | |
// -> f_inception_5a5x5_reduce_1 float[1, 32, 6, 6] | |
// <- f_inception_5a5x5_reduce_2 float[1, 32, 6, 6] | |
f_inception_5a5x5_reduce_2(d3,d2,d1,d0) = select(f_inception_5a5x5_reduce_1(d3,d2,d1,d0)>0,f_inception_5a5x5_reduce_1(d3,d2,d1,d0),0); | |
f_inception_5a5x5_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5a5x5_1; | |
// -> f_inception_5a5x5_reduce_2 float[1, 32, 6, 6] | |
// -> f_inception_5a5x5_w_0 float[128, 32, 5, 5] | |
// -> f_inception_5a5x5_b_0 float[128] | |
// <- f_inception_5a5x5_1 float[1, 128, 6, 6] | |
RDom f_inception_5a5x5_1_r(0,32,0,5,0,5); | |
Func f_inception_5a5x5_1_padded = constant_exterior(f_inception_5a5x5_reduce_2, 0, {{0,6},{0,6},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_5a5x5_1(d3,d2,d1,d0) = sum(f_inception_5a5x5_1_padded(d3*1+f_inception_5a5x5_1_r[2]*1-2,d2*1+f_inception_5a5x5_1_r[1]*1-2,f_inception_5a5x5_1_r[0]+cast<int>(floor(d1/128))*32,d0)*f_inception_5a5x5_w_0(f_inception_5a5x5_1_r[2],f_inception_5a5x5_1_r[1],f_inception_5a5x5_1_r[0],d1))+f_inception_5a5x5_b_0(d1); | |
f_inception_5a5x5_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5a5x5_2; | |
// -> f_inception_5a5x5_1 float[1, 128, 6, 6] | |
// <- f_inception_5a5x5_2 float[1, 128, 6, 6] | |
f_inception_5a5x5_2(d3,d2,d1,d0) = select(f_inception_5a5x5_1(d3,d2,d1,d0)>0,f_inception_5a5x5_1(d3,d2,d1,d0),0); | |
f_inception_5a5x5_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_inception_5apool_1; | |
// -> f_pool43x3_s2_1 float[1, 832, 6, 6] | |
// <- f_inception_5apool_1 float[1, 832, 6, 6] | |
RDom f_inception_5apool_1_r(0,3,0,3); | |
Func f_inception_5apool_1_pad = constant_exterior(f_pool43x3_s2_1, cast<float >(Expr(-FLT_MAX)), {{0,6},{0,6},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_5apool_1(d3,d2,d1,d0) = maximum(f_inception_5apool_1_pad(d3*1+f_inception_5apool_1_r[1]-1,d2*1+f_inception_5apool_1_r[0]-1,d1,d0)); | |
f_inception_5apool_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5apool_proj_1; | |
// -> f_inception_5apool_1 float[1, 832, 6, 6] | |
// -> f_inception_5apool_proj_w_0 float[128, 832, 1, 1] | |
// -> f_inception_5apool_proj_b_0 float[128] | |
// <- f_inception_5apool_proj_1 float[1, 128, 6, 6] | |
RDom f_inception_5apool_proj_1_r(0,832,0,1,0,1); | |
Func f_inception_5apool_proj_1_padded = f_inception_5apool_1; | |
f_inception_5apool_proj_1(d3,d2,d1,d0) = sum(f_inception_5apool_proj_1_padded(d3*1+f_inception_5apool_proj_1_r[2]*1-0,d2*1+f_inception_5apool_proj_1_r[1]*1-0,f_inception_5apool_proj_1_r[0]+cast<int>(floor(d1/128))*832,d0)*f_inception_5apool_proj_w_0(f_inception_5apool_proj_1_r[2],f_inception_5apool_proj_1_r[1],f_inception_5apool_proj_1_r[0],d1))+f_inception_5apool_proj_b_0(d1); | |
f_inception_5apool_proj_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5apool_proj_2; | |
// -> f_inception_5apool_proj_1 float[1, 128, 6, 6] | |
// <- f_inception_5apool_proj_2 float[1, 128, 6, 6] | |
f_inception_5apool_proj_2(d3,d2,d1,d0) = select(f_inception_5apool_proj_1(d3,d2,d1,d0)>0,f_inception_5apool_proj_1(d3,d2,d1,d0),0); | |
f_inception_5apool_proj_2.compute_root(); | |
//////////////////// | |
// Concat | |
Func f_inception_5aoutput_1; | |
// -> f_inception_5a1x1_2 float[1, 256, 6, 6] | |
// -> f_inception_5a3x3_2 float[1, 320, 6, 6] | |
// -> f_inception_5a5x5_2 float[1, 128, 6, 6] | |
// -> f_inception_5apool_proj_2 float[1, 128, 6, 6] | |
// <- f_inception_5aoutput_1 float[1, 832, 6, 6] | |
f_inception_5aoutput_1(d3,d2,d1,d0) = undef<float>(); | |
RDom f_inception_5aoutput_1_0(0,256); | |
f_inception_5aoutput_1(d3,d2,f_inception_5aoutput_1_0[0],d0) = f_inception_5a1x1_2(d3,d2,f_inception_5aoutput_1_0[0]-0,d0); | |
RDom f_inception_5aoutput_1_1(256,320); | |
f_inception_5aoutput_1(d3,d2,f_inception_5aoutput_1_1[0],d0) = f_inception_5a3x3_2(d3,d2,f_inception_5aoutput_1_1[0]-256,d0); | |
RDom f_inception_5aoutput_1_2(576,128); | |
f_inception_5aoutput_1(d3,d2,f_inception_5aoutput_1_2[0],d0) = f_inception_5a5x5_2(d3,d2,f_inception_5aoutput_1_2[0]-576,d0); | |
RDom f_inception_5aoutput_1_3(704,128); | |
f_inception_5aoutput_1(d3,d2,f_inception_5aoutput_1_3[0],d0) = f_inception_5apool_proj_2(d3,d2,f_inception_5aoutput_1_3[0]-704,d0); | |
f_inception_5aoutput_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5b1x1_1; | |
// -> f_inception_5aoutput_1 float[1, 832, 6, 6] | |
// -> f_inception_5b1x1_w_0 float[384, 832, 1, 1] | |
// -> f_inception_5b1x1_b_0 float[384] | |
// <- f_inception_5b1x1_1 float[1, 384, 6, 6] | |
RDom f_inception_5b1x1_1_r(0,832,0,1,0,1); | |
Func f_inception_5b1x1_1_padded = f_inception_5aoutput_1; | |
f_inception_5b1x1_1(d3,d2,d1,d0) = sum(f_inception_5b1x1_1_padded(d3*1+f_inception_5b1x1_1_r[2]*1-0,d2*1+f_inception_5b1x1_1_r[1]*1-0,f_inception_5b1x1_1_r[0]+cast<int>(floor(d1/384))*832,d0)*f_inception_5b1x1_w_0(f_inception_5b1x1_1_r[2],f_inception_5b1x1_1_r[1],f_inception_5b1x1_1_r[0],d1))+f_inception_5b1x1_b_0(d1); | |
f_inception_5b1x1_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5b1x1_2; | |
// -> f_inception_5b1x1_1 float[1, 384, 6, 6] | |
// <- f_inception_5b1x1_2 float[1, 384, 6, 6] | |
f_inception_5b1x1_2(d3,d2,d1,d0) = select(f_inception_5b1x1_1(d3,d2,d1,d0)>0,f_inception_5b1x1_1(d3,d2,d1,d0),0); | |
f_inception_5b1x1_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5b3x3_reduce_1; | |
// -> f_inception_5aoutput_1 float[1, 832, 6, 6] | |
// -> f_inception_5b3x3_reduce_w_0 float[192, 832, 1, 1] | |
// -> f_inception_5b3x3_reduce_b_0 float[192] | |
// <- f_inception_5b3x3_reduce_1 float[1, 192, 6, 6] | |
RDom f_inception_5b3x3_reduce_1_r(0,832,0,1,0,1); | |
Func f_inception_5b3x3_reduce_1_padded = f_inception_5aoutput_1; | |
f_inception_5b3x3_reduce_1(d3,d2,d1,d0) = sum(f_inception_5b3x3_reduce_1_padded(d3*1+f_inception_5b3x3_reduce_1_r[2]*1-0,d2*1+f_inception_5b3x3_reduce_1_r[1]*1-0,f_inception_5b3x3_reduce_1_r[0]+cast<int>(floor(d1/192))*832,d0)*f_inception_5b3x3_reduce_w_0(f_inception_5b3x3_reduce_1_r[2],f_inception_5b3x3_reduce_1_r[1],f_inception_5b3x3_reduce_1_r[0],d1))+f_inception_5b3x3_reduce_b_0(d1); | |
f_inception_5b3x3_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5b3x3_reduce_2; | |
// -> f_inception_5b3x3_reduce_1 float[1, 192, 6, 6] | |
// <- f_inception_5b3x3_reduce_2 float[1, 192, 6, 6] | |
f_inception_5b3x3_reduce_2(d3,d2,d1,d0) = select(f_inception_5b3x3_reduce_1(d3,d2,d1,d0)>0,f_inception_5b3x3_reduce_1(d3,d2,d1,d0),0); | |
f_inception_5b3x3_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5b3x3_1; | |
// -> f_inception_5b3x3_reduce_2 float[1, 192, 6, 6] | |
// -> f_inception_5b3x3_w_0 float[384, 192, 3, 3] | |
// -> f_inception_5b3x3_b_0 float[384] | |
// <- f_inception_5b3x3_1 float[1, 384, 6, 6] | |
RDom f_inception_5b3x3_1_r(0,192,0,3,0,3); | |
Func f_inception_5b3x3_1_padded = constant_exterior(f_inception_5b3x3_reduce_2, 0, {{0,6},{0,6},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_5b3x3_1(d3,d2,d1,d0) = sum(f_inception_5b3x3_1_padded(d3*1+f_inception_5b3x3_1_r[2]*1-1,d2*1+f_inception_5b3x3_1_r[1]*1-1,f_inception_5b3x3_1_r[0]+cast<int>(floor(d1/384))*192,d0)*f_inception_5b3x3_w_0(f_inception_5b3x3_1_r[2],f_inception_5b3x3_1_r[1],f_inception_5b3x3_1_r[0],d1))+f_inception_5b3x3_b_0(d1); | |
f_inception_5b3x3_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5b3x3_2; | |
// -> f_inception_5b3x3_1 float[1, 384, 6, 6] | |
// <- f_inception_5b3x3_2 float[1, 384, 6, 6] | |
f_inception_5b3x3_2(d3,d2,d1,d0) = select(f_inception_5b3x3_1(d3,d2,d1,d0)>0,f_inception_5b3x3_1(d3,d2,d1,d0),0); | |
f_inception_5b3x3_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5b5x5_reduce_1; | |
// -> f_inception_5aoutput_1 float[1, 832, 6, 6] | |
// -> f_inception_5b5x5_reduce_w_0 float[48, 832, 1, 1] | |
// -> f_inception_5b5x5_reduce_b_0 float[48] | |
// <- f_inception_5b5x5_reduce_1 float[1, 48, 6, 6] | |
RDom f_inception_5b5x5_reduce_1_r(0,832,0,1,0,1); | |
Func f_inception_5b5x5_reduce_1_padded = f_inception_5aoutput_1; | |
f_inception_5b5x5_reduce_1(d3,d2,d1,d0) = sum(f_inception_5b5x5_reduce_1_padded(d3*1+f_inception_5b5x5_reduce_1_r[2]*1-0,d2*1+f_inception_5b5x5_reduce_1_r[1]*1-0,f_inception_5b5x5_reduce_1_r[0]+cast<int>(floor(d1/48))*832,d0)*f_inception_5b5x5_reduce_w_0(f_inception_5b5x5_reduce_1_r[2],f_inception_5b5x5_reduce_1_r[1],f_inception_5b5x5_reduce_1_r[0],d1))+f_inception_5b5x5_reduce_b_0(d1); | |
f_inception_5b5x5_reduce_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5b5x5_reduce_2; | |
// -> f_inception_5b5x5_reduce_1 float[1, 48, 6, 6] | |
// <- f_inception_5b5x5_reduce_2 float[1, 48, 6, 6] | |
f_inception_5b5x5_reduce_2(d3,d2,d1,d0) = select(f_inception_5b5x5_reduce_1(d3,d2,d1,d0)>0,f_inception_5b5x5_reduce_1(d3,d2,d1,d0),0); | |
f_inception_5b5x5_reduce_2.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5b5x5_1; | |
// -> f_inception_5b5x5_reduce_2 float[1, 48, 6, 6] | |
// -> f_inception_5b5x5_w_0 float[128, 48, 5, 5] | |
// -> f_inception_5b5x5_b_0 float[128] | |
// <- f_inception_5b5x5_1 float[1, 128, 6, 6] | |
RDom f_inception_5b5x5_1_r(0,48,0,5,0,5); | |
Func f_inception_5b5x5_1_padded = constant_exterior(f_inception_5b5x5_reduce_2, 0, {{0,6},{0,6},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_5b5x5_1(d3,d2,d1,d0) = sum(f_inception_5b5x5_1_padded(d3*1+f_inception_5b5x5_1_r[2]*1-2,d2*1+f_inception_5b5x5_1_r[1]*1-2,f_inception_5b5x5_1_r[0]+cast<int>(floor(d1/128))*48,d0)*f_inception_5b5x5_w_0(f_inception_5b5x5_1_r[2],f_inception_5b5x5_1_r[1],f_inception_5b5x5_1_r[0],d1))+f_inception_5b5x5_b_0(d1); | |
f_inception_5b5x5_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5b5x5_2; | |
// -> f_inception_5b5x5_1 float[1, 128, 6, 6] | |
// <- f_inception_5b5x5_2 float[1, 128, 6, 6] | |
f_inception_5b5x5_2(d3,d2,d1,d0) = select(f_inception_5b5x5_1(d3,d2,d1,d0)>0,f_inception_5b5x5_1(d3,d2,d1,d0),0); | |
f_inception_5b5x5_2.compute_root(); | |
//////////////////// | |
// MaxPool | |
Func f_inception_5bpool_1; | |
// -> f_inception_5aoutput_1 float[1, 832, 6, 6] | |
// <- f_inception_5bpool_1 float[1, 832, 6, 6] | |
RDom f_inception_5bpool_1_r(0,3,0,3); | |
Func f_inception_5bpool_1_pad = constant_exterior(f_inception_5aoutput_1, cast<float >(Expr(-FLT_MAX)), {{0,6},{0,6},{Expr(),Expr()},{Expr(),Expr()}}); | |
f_inception_5bpool_1(d3,d2,d1,d0) = maximum(f_inception_5bpool_1_pad(d3*1+f_inception_5bpool_1_r[1]-1,d2*1+f_inception_5bpool_1_r[0]-1,d1,d0)); | |
f_inception_5bpool_1.compute_root(); | |
//////////////////// | |
// Conv | |
Func f_inception_5bpool_proj_1; | |
// -> f_inception_5bpool_1 float[1, 832, 6, 6] | |
// -> f_inception_5bpool_proj_w_0 float[128, 832, 1, 1] | |
// -> f_inception_5bpool_proj_b_0 float[128] | |
// <- f_inception_5bpool_proj_1 float[1, 128, 6, 6] | |
RDom f_inception_5bpool_proj_1_r(0,832,0,1,0,1); | |
Func f_inception_5bpool_proj_1_padded = f_inception_5bpool_1; | |
f_inception_5bpool_proj_1(d3,d2,d1,d0) = sum(f_inception_5bpool_proj_1_padded(d3*1+f_inception_5bpool_proj_1_r[2]*1-0,d2*1+f_inception_5bpool_proj_1_r[1]*1-0,f_inception_5bpool_proj_1_r[0]+cast<int>(floor(d1/128))*832,d0)*f_inception_5bpool_proj_w_0(f_inception_5bpool_proj_1_r[2],f_inception_5bpool_proj_1_r[1],f_inception_5bpool_proj_1_r[0],d1))+f_inception_5bpool_proj_b_0(d1); | |
f_inception_5bpool_proj_1.compute_root(); | |
//////////////////// | |
// Relu | |
Func f_inception_5bpool_proj_2; | |
// -> f_inception_5bpool_proj_1 float[1, 128, 6, 6] | |
// <- f_inception_5bpool_proj_2 float[1, 128, 6, 6] | |
f_inception_5bpool_proj_2(d3,d2,d1,d0) = select(f_inception_5bpool_proj_1(d3,d2,d1,d0)>0,f_inception_5bpool_proj_1(d3,d2,d1,d0),0); | |
f_inception_5bpool_proj_2.compute_root(); | |
//////////////////// | |
// Concat | |
Func f_inception_5boutput_1; | |
// -> f_inception_5b1x1_2 float[1, 384, 6, 6] | |
// -> f_inception_5b3x3_2 float[1, 384, 6, 6] | |
// -> f_inception_5b5x5_2 float[1, 128, 6, 6] | |
// -> f_inception_5bpool_proj_2 float[1, 128, 6, 6] | |
// <- f_inception_5boutput_1 float[1, 1024, 6, 6] | |
f_inception_5boutput_1(d3,d2,d1,d0) = undef<float>(); | |
RDom f_inception_5boutput_1_0(0,384); | |
f_inception_5boutput_1(d3,d2,f_inception_5boutput_1_0[0],d0) = f_inception_5b1x1_2(d3,d2,f_inception_5boutput_1_0[0]-0,d0); | |
RDom f_inception_5boutput_1_1(384,384); | |
f_inception_5boutput_1(d3,d2,f_inception_5boutput_1_1[0],d0) = f_inception_5b3x3_2(d3,d2,f_inception_5boutput_1_1[0]-384,d0); | |
RDom f_inception_5boutput_1_2(768,128); | |
f_inception_5boutput_1(d3,d2,f_inception_5boutput_1_2[0],d0) = f_inception_5b5x5_2(d3,d2,f_inception_5boutput_1_2[0]-768,d0); | |
RDom f_inception_5boutput_1_3(896,128); | |
f_inception_5boutput_1(d3,d2,f_inception_5boutput_1_3[0],d0) = f_inception_5bpool_proj_2(d3,d2,f_inception_5boutput_1_3[0]-896,d0); | |
f_inception_5boutput_1.compute_root(); | |
//////////////////// | |
// AveragePool | |
Func f_pool57x7_s1_1; | |
// -> f_inception_5boutput_1 float[1, 1024, 6, 6] | |
// <- f_pool57x7_s1_1 float[1, 1024, 1, 1] | |
RDom f_pool57x7_s1_1_r(0,7,0,7); | |
Func f_pool57x7_s1_1_pad = constant_exterior(f_inception_5boutput_1, 0, {{0,6},{0,6},{Expr(),Expr()},{Expr(),Expr()}}); | |
Func f_pool57x7_s1_1_count; | |
Func f_pool57x7_s1_1_ones; | |
f_pool57x7_s1_1_ones(d3,d2) = 1; | |
Func f_pool57x7_s1_1_pad_ones = constant_exterior(f_pool57x7_s1_1_ones, 0, {{0,6},{0,6}}); | |
f_pool57x7_s1_1_count(d3,d2) = sum(f_pool57x7_s1_1_pad_ones(d3*1+f_pool57x7_s1_1_r[1]-0,d2*1+f_pool57x7_s1_1_r[0]-0)); | |
f_pool57x7_s1_1(d3,d2,d1,d0) = sum(f_pool57x7_s1_1_pad(d3*1+f_pool57x7_s1_1_r[1]-0,d2*1+f_pool57x7_s1_1_r[0]-0,d1,d0)) / f_pool57x7_s1_1_count(d3,d2); | |
f_pool57x7_s1_1.compute_root(); | |
//////////////////// | |
// Dropout | |
Func f_pool57x7_s1_2; | |
Func f__pool57x7_s1_mask_1; | |
// -> f_pool57x7_s1_1 float[1, 1024, 1, 1] | |
// <- f_pool57x7_s1_2 float[1, 1024, 1, 1] | |
// <- f__pool57x7_s1_mask_1 float[1, 1024, 1, 1] | |
f_pool57x7_s1_2(d3,d2,d1,d0) = f_pool57x7_s1_1(d3,d2,d1,d0); | |
f_pool57x7_s1_2.compute_root(); | |
f__pool57x7_s1_mask_1.compute_root(); | |
//////////////////// | |
// Reshape | |
Func f_OC2_DUMMY_0; | |
// -> f_pool57x7_s1_2 float[1, 1024, 1, 1] | |
// -> f_OC2_DUMMY_1 int64_t[2] | |
// <- f_OC2_DUMMY_0 float[1, 1024] | |
Func f_OC2_DUMMY_0_flattened; | |
f_OC2_DUMMY_0_flattened(d0) = f_pool57x7_s1_2(cast<int>(floor(d0/1))%1,cast<int>(floor(d0/1))%1,cast<int>(floor(d0/1))%1024,cast<int>(floor(d0/1024))%1); | |
f_OC2_DUMMY_0(d1,d0) = f_OC2_DUMMY_0_flattened((d0*1024)+(d1*1)); | |
f_OC2_DUMMY_0.compute_root(); | |
//////////////////// | |
// Reshape | |
Func f_OC2_DUMMY_2; | |
// -> f_loss3classifier_w_0 float[1, 1, 1000, 1024] | |
// -> f_OC2_DUMMY_3 int64_t[2] | |
// <- f_OC2_DUMMY_2 float[1000, 1024] | |
Func f_OC2_DUMMY_2_flattened; | |
f_OC2_DUMMY_2_flattened(d0) = f_loss3classifier_w_0(cast<int>(floor(d0/1))%1024,cast<int>(floor(d0/1024))%1000,cast<int>(floor(d0/1024000))%1,cast<int>(floor(d0/1024000))%1); | |
f_OC2_DUMMY_2(d1,d0) = f_OC2_DUMMY_2_flattened((d0*1024)+(d1*1)); | |
f_OC2_DUMMY_2.compute_root(); | |
//////////////////// | |
// Gemm | |
Func f_loss3classifier_1; | |
// -> f_OC2_DUMMY_0 float[1, 1024] | |
// -> f_OC2_DUMMY_2 float[1000, 1024] | |
// -> f_loss3classifier_b_0 float[1000] | |
// <- f_loss3classifier_1 float[1, 1000] | |
RDom f_loss3classifier_1_r(0,1024); | |
Func f_loss3classifier_1_norm_A; | |
Func f_loss3classifier_1_norm_B; | |
Func f_loss3classifier_1_norm_C; | |
f_loss3classifier_1_norm_A = f_OC2_DUMMY_0; | |
f_loss3classifier_1_norm_B(d1,d0) = f_OC2_DUMMY_2(d0,d1); | |
f_loss3classifier_1_norm_C(d1,d0) = f_loss3classifier_b_0(d1); | |
f_loss3classifier_1(d1,d0) = cast<float>(Expr(1))*f_loss3classifier_1_norm_C(d1,d0)+cast<float>(Expr(1))*sum(f_loss3classifier_1_norm_A(f_loss3classifier_1_r[0],d0)*f_loss3classifier_1_norm_B(d1,f_loss3classifier_1_r[0])); | |
f_loss3classifier_1.compute_root(); | |
//////////////////// | |
// Softmax | |
// -> f_loss3classifier_1 float[1, 1000] | |
// <- f_prob_1 float[1, 1000] | |
RDom f_prob_1_r(0,1000); | |
Func f_prob_1_max_x; | |
f_prob_1_max_x(d1,d0) = maximum(f_loss3classifier_1(f_prob_1_r[0],d0)); | |
Func f_prob_1_exp_x; | |
f_prob_1_exp_x(d1,d0) = exp(f_loss3classifier_1(d1,d0)-f_prob_1_max_x(d1,d0)); | |
f_prob_1(d1,d0) = f_prob_1_exp_x(d1,d0)/sum(f_prob_1_exp_x(f_prob_1_r[0],d0)); | |
f_prob_1.compute_root(); | |
//////////////////// | |
}; | |
}; | |
} | |
HALIDE_REGISTER_GENERATOR(HalOGen, halogen) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment