2016-09-18 5 views
0

Я пытаюсь сохранить некоторые переменные (веса и уклоны), чтобы использовать их позже, но я обнаружил ошибку, я не знаю, если мои шаги правильно или нет:сохранить некоторые переменные в tensorflow

graph = tf.Graph() 

with graph.as_default(): 

    weights = { 
    'wc1_0': tf.Variable(tf.random_normal([patch_size_1, patch_size_1, num_channels, depth],stddev=0.1)), 
    'wc1_1': tf.Variable(tf.random_normal([patch_size_2, patch_size_2, depth, depth], stddev=0.1)), 
    ...... 
    } 

    biases = { 
    'bc1_0' : tf.Variable(tf.zeros([depth])), 
    'bc1_1' : tf.Variable(tf.constant(1.0, shape=[depth])), 
    ..... 
    } 

def model(data): 

    conv_1 = tf.nn.conv2d(data, wc1_0 , [1, 2, 2, 1], padding='SAME') 

    hidden_1 = tf.nn.relu(conv_1 + bc1_0) 

    pool_1 = tf.nn.max_pool(hidden_1,ksize = [1,5,5,1], strides= [1,2,2,1],padding ='SAME') 
    ....... 
    ....... 

weights_saver = tf.train.Saver(var_list=weights) 
biases_saver = tf.train.Saver(var_list=biases) 

with tf.Session(graph=graph) as sess: 

    sess.run() 
    for loop.... 
    ...... 
    save_path_weights = weights_saver.save(sess, "my_path") 
    save_path_biases = biases_saver.save(sess, "my_path") 

когда я запускаю код, я получаю этот erorr:

conv_1 = tf.nn.conv2d(data, wc1_0 , [1, 2, 2, 1], padding='SAME') 
    NameError: global name 'wc1_0' is not defined 

Как я могу назначить переменную в conv_1?

ответ

1

Вы определили два словаря: 1 для весов и 1 для смещений. Вы заполнили словари объектами переменных Tensorflow. Итак, почему бы вам не использовать их?

conv_1 = tf.nn.conv2d(data, weights['wc1_0'] , [1, 2, 2, 1], padding='SAME') 
    hidden_1 = tf.nn.relu(conv_1 + biases['bc1_0']) 
    pool_1 = tf.nn.max_pool(hidden_1,ksize = [1,5,5,1], strides= [1,2,2,1],padding ='SAME') 
Смежные вопросы