(name, x, nr1x1, nr3x3r, nr3x3, nr233r, nr233, nrpool, pooltype)
| 29 | image = image / 128.0 |
| 30 | |
| 31 | def inception(name, x, nr1x1, nr3x3r, nr3x3, nr233r, nr233, nrpool, pooltype): |
| 32 | stride = 2 if nr1x1 == 0 else 1 |
| 33 | with tf.variable_scope(name): |
| 34 | outs = [] |
| 35 | if nr1x1 != 0: |
| 36 | outs.append(Conv2D('conv1x1', x, nr1x1, 1)) |
| 37 | x2 = Conv2D('conv3x3r', x, nr3x3r, 1) |
| 38 | outs.append(Conv2D('conv3x3', x2, nr3x3, 3, strides=stride)) |
| 39 | |
| 40 | x3 = Conv2D('conv233r', x, nr233r, 1) |
| 41 | x3 = Conv2D('conv233a', x3, nr233, 3) |
| 42 | outs.append(Conv2D('conv233b', x3, nr233, 3, strides=stride)) |
| 43 | |
| 44 | if pooltype == 'max': |
| 45 | x4 = MaxPooling('mpool', x, 3, stride, padding='SAME') |
| 46 | else: |
| 47 | assert pooltype == 'avg' |
| 48 | x4 = AvgPooling('apool', x, 3, stride, padding='SAME') |
| 49 | if nrpool != 0: # pool + passthrough if nrpool == 0 |
| 50 | x4 = Conv2D('poolproj', x4, nrpool, 1) |
| 51 | outs.append(x4) |
| 52 | return tf.concat(outs, 3, name='concat') |
| 53 | |
| 54 | with argscope(Conv2D, activation=BNReLU, use_bias=False): |
| 55 | l = (LinearWrap(image) |
nothing calls this directly
no test coverage detected