2017-05-06 52 views
1

처음의 두 레이어를 동결시키고 트레이닝 속도를 낮추고 전체 시작을 미세 조정하는 꽤 일반적인 사용 사례가 있습니다. 모델. 여기 다른 트레이닝 가능 변수로 Inception-3 체크 포인트에서 트레이스를 복원하는 방법

는 두 번째 부분을 두 번째 부분에서, 나는 통과하지 않는

train_dir='/home/ubuntu/pynb/TF play/log-inceptionv3flowers' 
with tf.Graph().as_default(): 
    tf.logging.set_verbosity(tf.logging.INFO) 

    dataset = get_dataset() 
    images, _, labels = load_batch(dataset, batch_size=32) 

    # Create the model, use the default arg scope to configure the batch norm parameters. 
    with slim.arg_scope(inception.inception_v3_arg_scope()): 
     logits, _ = inception.inception_v3(images, num_classes=5, is_training=True) 

    # Specify the loss function: 
    one_hot_labels = slim.one_hot_encoding(labels, 5) 
    tf.losses.softmax_cross_entropy(one_hot_labels, logits) 
    total_loss = tf.losses.get_total_loss() 
    # Create some summaries to visualize the training process: 
    tf.summary.scalar('losses/Total Loss', total_loss) 

    # Specify the optimizer and create the train op: 
    optimizer = tf.train.RMSPropOptimizer(0.0001, 0.9, 
            momentum=0.9, epsilon=1.0) 
    train_op = slim.learning.create_train_op(total_loss, optimizer) 

    # Run the training: 
    final_loss = slim.learning.train(
     train_op, 
     logdir=train_dir, 
     init_fn=get_init_fn(), 
     number_of_steps=10000, 
     save_summaries_secs=30, 
     save_interval_secs=30, 
     session_config=tf.ConfigProto(gpu_options=gpu_options)) 

print('Finished training. Last batch loss %f' % final_loss) 

공지 사항을 실행하기위한, 제대로 다음 내 코드를 실행하는 첫 번째 부분

train_dir='/home/ubuntu/pynb/TF play/log-inceptionv3flowers' 
with tf.Graph().as_default(): 
    tf.logging.set_verbosity(tf.logging.INFO) 

    dataset = get_dataset() 
    images, _, labels = load_batch(dataset, batch_size=32) 

    # Create the model, use the default arg scope to configure the batch norm parameters. 
    with slim.arg_scope(inception.inception_v3_arg_scope()): 
     logits, _ = inception.inception_v3(images, num_classes=5, is_training=True) 

    # Specify the loss function: 
    one_hot_labels = slim.one_hot_encoding(labels, 5) 
    tf.losses.softmax_cross_entropy(one_hot_labels, logits) 
    total_loss = tf.losses.get_total_loss() 

    # Create some summaries to visualize the training process: 
    tf.summary.scalar('losses/Total Loss', total_loss) 

    # Specify the optimizer and create the train op: 
    optimizer = tf.train.RMSPropOptimizer(0.001, 0.9, 
            momentum=0.9, epsilon=1.0) 
    train_op = slim.learning.create_train_op(total_loss, optimizer, variables_to_train=get_variables_to_train()) 

    # Run the training: 
    final_loss = slim.learning.train(
     train_op, 
     logdir=train_dir, 
     init_fn=get_init_fn(), 
     number_of_steps=4500, 
     save_summaries_secs=30, 
     save_interval_secs=30, 
     session_config=tf.ConfigProto(gpu_options=gpu_options)) 

print('Finished training. Last batch loss %f' % final_loss) 

를 실행하기위한 내 코드입니다 아무것도 create_train_opvariables_to_train 매개 변수로. 나는 이전 체크 포인트에서 해당 레이어를 훈련하지 않았기 때문에이 오류는 다음

NotFoundError (see above for traceback): Key InceptionV3/Conv2d_4a_3x3/BatchNorm/beta/RMSProp not found in checkpoint 
    [[Node: save_1/RestoreV2_49 = RestoreV2[dtypes=[DT_FLOAT], _device="/job:localhost/replica:0/task:0/cpu:0"](_recv_save_1/Const_0, save_1/RestoreV2_49/tensor_names, save_1/RestoreV2_49/shape_and_slices)]] 
    [[Node: save_1/Assign_774/_1550 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/gpu:0", send_device="/job:localhost/replica:0/task:0/cpu:0", send_device_incarnation=1, tensor_name="edge_2911_save_1/Assign_774", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"]()]] 

나는 그것이 존재입니다 InceptionV3/Conv2d_4a_3x3 층에 대한 RMSProp 변수에 대한 찾고 있다고 의심

을 표시됩니다. 어떻게해야하는지에 대한 문서에서 예제를 볼 수 없기 때문에 원하는 것을 달성하는 방법을 잘 모르겠습니다.

답변