Skip to content

Instantly share code, notes, and snippets.

@jerryz123
Created November 30, 2018 01:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jerryz123/525336f72aedea651a5e91f0a2fbd021 to your computer and use it in GitHub Desktop.
Save jerryz123/525336f72aedea651a5e91f0a2fbd021 to your computer and use it in GitHub Desktop.
inception_v1 generated
#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