Нейросеть переподготовки Tensorflow с различными данными - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть список inputs для нейронной сети, например

list_of_inputs = [inputs1, inputs2, inputs3, ... ,inputsN]

*, а также соответствующий список меток *

list_of_labels = [label1, label2, label3, ..., labelN]

Я хочу кормить / тренироватьсякаждую пару input,label в нейронную сеть запишите потерю, а затем обучите следующую пару input,label в той же сети и запишите потерю и т. д. для всех пар input,label.

Примечание: Я не хочу повторно инициализировать веса каждый раз, когда добавляется новый input,label, я хочу использовать обученные веса из предыдущей пары.Сеть показана ниже (где вы можете видеть, что я также печатаю потери).Как мне поступить об этом?

with tf.name_scope("nn"):
    model = tf.keras.Sequential([
        tfp.layers.DenseFlipout(64, activation=tf.nn.relu),
        tfp.layers.DenseFlipout(64, activation=tf.nn.softmax),
        tfp.layers.DenseFlipout(np.squeeze(labels).shape[0])
    ])

logits = model(inputs)
loss = tf.reduce_mean(tf.square(labels - logits))
train_op_bnn = tf.train.AdamOptimizer().minimize(loss)


init_op = tf.group(tf.global_variables_initializer(),tf.local_variables_initializer())

with tf.Session() as sess:
    sess.run(init_op)
    for i in range(100):   
        sess.run(train_op_bnn)
        print(sess.run(loss))

РЕДАКТИРОВАТЬ:

Проблема заключается в том, что, когда я пытаюсь отформатировать сеть в функции, как показано ниже:

init_op = tf.group(tf.global_variables_initializer(),tf.local_variables_initializer())

with tf.Session() as sess:
    sess.run(init_op)

    inputs,labels = MEMORY[0]

    logits, model_losses = build_graph(inputs)
    loss = tf.reduce_mean(tf.square(labels - logits))
    train_op_bnn = tf.train.AdamOptimizer().minimize(loss)

    sess.run(train_op_bnn)
    print(sess.run(loss))   

Я получаю ошибку:

FailedPreconditionError                   Traceback (most recent call last)
<ipython-input-95-5ca77fa0606a> in <module>()
     36     train_op_bnn = tf.train.AdamOptimizer().minimize(loss)
     37 
---> 38     sess.run(train_op_bnn)
     39     print(sess.run(loss))
     40 

1 Ответ

0 голосов
/ 18 декабря 2018
logits, model_losses = build_graph(inputs)
loss = tf.reduce_mean(tf.square(labels - logits))
train_op_bnn = tf.train.AdamOptimizer().minimize(loss)

должно быть выше

with tf.Session() as sess:

и выше вашего init_op определения

...