1. 程式人生 > >Tensorflow簡易用法

Tensorflow簡易用法

1、outputs_collections用法,方便獲取各層的end_points

    with tf.variable_scope(scope, 'resnet_v1', [inputs], reuse=reuse) as sc:
        end_points_collection = sc.name + '_end_points'
        with slim.arg_scope([slim.conv2d, bottleneck,
                             resnet_utils.stack_blocks_dense],
                            outputs_collections=end_points_collection):
            with
slim.arg_scope([slim.batch_norm], is_training=is_training): net = inputs if include_root_block: if output_stride is not None: if output_stride % 4 != 0: raise ValueError('The output_stride needs to be a multiple of 4.'
) output_stride /= 4 net = resnet_utils.conv2d_same(net, 64, 7, stride=2, scope='conv1') net = slim.max_pool2d(net, [3, 3], stride=2, scope='pool1') net = slim.utils.collect_named_outputs(end_points_collection, 'pool2'
, net) net = resnet_utils.stack_blocks_dense(net, blocks, output_stride) end_points = slim.utils.convert_collection_to_dict(end_points_collection) # end_points['pool2'] = end_points['resnet_v1_50/pool1/MaxPool:0'] try: end_points['pool3'] = end_points['resnet_v1_50/block1'] end_points['pool4'] = end_points['resnet_v1_50/block2'] except: end_points['pool3'] = end_points['Detection/resnet_v1_50/block1'] end_points['pool4'] = end_points['Detection/resnet_v1_50/block2'] end_points['pool5'] = net