예제 #1
0
def make_network(env, h=None, w=None):
    with env.create_network() as net:
        if h is None:
            img = O.placeholder('img', shape=(1, None, None, 3))
        else:
            img = O.variable('img', np.zeros([1, h, w, 3]))
        net.add_output(img, name='img')

        _ = img
        _ = _ - get_env('neural_style.image_mean').reshape(1, 1, 1, 3)
        _ = O.pad_rb_multiple_of(_, 32)

        def stacked_conv(prefix, nr_convs, in_, channel, kernel=(3, 3), padding='SAME', nonlin=O.relu):
            for i in range(1, nr_convs + 1):
                in_ = O.conv2d('{}_{}'.format(prefix, i), in_, channel, kernel, padding=padding, nonlin=nonlin)
            return in_

        _ = stacked_conv('conv1', 2, _, 64)
        _ = O.pooling2d('pool1', _, (2, 2))
        _ = stacked_conv('conv2', 2, _, 128)
        _ = O.pooling2d('pool2', _, (2, 2))
        _ = stacked_conv('conv3', 3, _, 256)
        _ = O.pooling2d('pool3', _, (2, 2))
        _ = stacked_conv('conv4', 3, _, 512)
        _ = O.pooling2d('pool4', _, (2, 2))
        _ = stacked_conv('conv5', 3, _, 512)
        _ = O.pooling2d('pool5', _, (2, 2))

        for l in get_env('neural_style.content_layers'):
            net.add_output(net.find_var_by_name(l[0] + '/bias'), name=l[0])
        for l in get_env('neural_style.style_layers'):
            net.add_output(net.find_var_by_name(l[0] + '/bias'), name=l[0])
예제 #2
0
            def forward(img):
                _ = img
                _ = conv2d('conv1.1', _, 16, (3, 3), padding='SAME')
                _ = conv2d('conv1.2', _, 16, (3, 3), padding='SAME')
                _ = O.pooling2d('pool1', _, kernel=3, stride=2)
                _ = conv2d('conv2.1', _, 32, (3, 3), padding='SAME')
                _ = conv2d('conv2.2', _, 32, (3, 3), padding='SAME')
                _ = O.pooling2d('pool2', _, kernel=3, stride=2)
                _ = conv2d('conv3.1', _, 64, (3, 3), padding='VALID')
                _ = conv2d('conv3.2', _, 64, (3, 3), padding='VALID')
                _ = conv2d('conv3.3', _, 64, (3, 3), padding='VALID')

                dpc.add_output(_, name='feature')
예제 #3
0
 def forward(img):
     _ = img
     _ = O.conv2d('conv1',
                  _,
                  16, (3, 3),
                  padding='SAME',
                  nonlin=O.relu)
     _ = O.pooling2d('pool1', _, kernel=2)
     _ = O.conv2d('conv2',
                  _,
                  32, (3, 3),
                  padding='SAME',
                  nonlin=O.relu)
     _ = O.pooling2d('pool2', _, kernel=2)
     dpc.add_output(_, name='feature')
예제 #4
0
 def forward(img):
     _ = img
     _ = O.conv2d('conv1',
                  _,
                  16, (3, 3),
                  padding='SAME',
                  nonlin=O.identity)
     _ = O.batch_norm('bn1', _)
     _ = O.relu(_)
     _ = O.pooling2d('pool1', _, kernel=2)
     _ = O.conv2d('conv2',
                  _,
                  32, (3, 3),
                  padding='SAME',
                  nonlin=O.identity)
     _ = O.batch_norm('bn2', _)
     _ = O.relu(_)
     _ = O.pooling2d('pool2', _, kernel=2)
     dpc.add_output(_, name='feature')
예제 #5
0
def make_network(env, end, h, w):
    with env.create_network() as net:
        img = O.variable('img', np.zeros([1, h, w, 3]))
        net.add_output(img, name='img')

        _ = img
        _ = _ - get_env('deep_dream.image_mean').reshape(1, 1, 1, 3)
        _ = O.pad_rb_multiple_of(_, 32)

        def stacked_conv(prefix,
                         nr_convs,
                         in_,
                         channel,
                         kernel=(3, 3),
                         padding='SAME',
                         nonlin=O.relu):
            for i in range(1, nr_convs + 1):
                in_ = O.conv2d('{}_{}'.format(prefix, i),
                               in_,
                               channel,
                               kernel,
                               padding=padding,
                               nonlin=nonlin)
            return in_

        _ = stacked_conv('conv1', 2, _, 64)
        _ = O.pooling2d('pool1', _, (2, 2))
        _ = stacked_conv('conv2', 2, _, 128)
        _ = O.pooling2d('pool2', _, (2, 2))
        _ = stacked_conv('conv3', 3, _, 256)
        _ = O.pooling2d('pool3', _, (2, 2))
        _ = stacked_conv('conv4', 3, _, 512)
        _ = O.pooling2d('pool4', _, (2, 2))
        _ = stacked_conv('conv5', 3, _, 512)
        _ = O.pooling2d('pool5', _, (2, 2))

        net.add_output(net.find_var_by_name(end + '/bias'), name='end')
예제 #6
0
 def residual(name, x, first=False, inc_dim=False):
     in_channel = x.static_shape[3]
     out_channel = in_channel
     stride = 1
     if inc_dim:
         out_channel = in_channel * 2
         stride = 2
     with env.variable_scope(name):
         _ = x if first else O.bn_relu(x)
         _ = conv_bn_relu('conv1', _, out_channel, stride=stride)
         _ = conv2d('conv2', _, out_channel)
         if inc_dim:
             x = O.pooling2d('pool', x, kernel=2)
             x = O.pad(x, [[0, 0], [0, 0], [0, 0],
                           [in_channel // 2, in_channel // 2]])
     print(name, x.static_shape)
     _ = _ + x
     return _