Восстановить ошибку модели в Tensorflow с помощью ноутбука Jupyter - PullRequest
0 голосов
/ 18 февраля 2019

После того, как модель обучена тензорному потоку, я хочу загрузить обученную модель, используя класс заставки.Этот код делает ошибку или работает нормально или работает неправильно, когда я активирую или деактивирую tf.reset_default_graph().Я не знаю, почему это происходит, и, пожалуйста, дайте мне знать, как решить эту проблему.

graphs and errors

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt

def shuffle_data(x_train, y_train):
    temp_index = np.arange(len(x_train))
    np.random.shuffle(temp_index)

    x_temp = np.zeros(x_train.shape)
    y_temp = np.zeros(y_train.shape)
    x_temp = x_train[temp_index]
    y_temp = y_train[temp_index]

    return x_temp, y_temp

def main():
    num_points = 2000
    vectors_set = []
    for i in range(num_points):
        x1=np.random.normal(0,1.0)
        y1=np.sin(x1)+np.random.normal(0.,0.1)
        vectors_set.append([x1,y1])

    x_data = [v[0] for v in vectors_set]
    y_data = [v[1] for v in vectors_set]

    plt.plot(x_data, y_data, 'go')
    plt.legend("t")
    plt.show()

    BATCH_SIZE = 100
    BATCH_NUM = int(len(x_data)/BATCH_SIZE)

    x_data = np.reshape(x_data, [len(x_data),1])
    y_data = np.reshape(y_data, [len(y_data),1])

    input_data = tf.placeholder(tf.float32, shape = [None,1])
    output_data = tf.placeholder(tf.float32, shape = [None,1])

    W1 = tf.Variable(tf.random_uniform([1,5],-1.0,1.0),name="w1")
    W2 = tf.Variable(tf.random_uniform([5,3],-1.0,1.0),name="w2")
    W_out = tf.Variable(tf.random_uniform([3,1],-1.0,1.0),name="wo")


    hidden1=tf.nn.sigmoid(tf.matmul(input_data,W1))
    hidden2=tf.nn.sigmoid(tf.matmul(hidden1,W2))
    output = tf.matmul(hidden2, W_out, name="output")

    loss=tf.reduce_mean(tf.square(output-output_data))
    optimizer = tf.train.AdamOptimizer(0.01)
    train=optimizer.minimize(loss)

    init = tf.global_variables_initializer()

    saver = tf.train.Saver()

    sess = tf.Session()

    ckpt=tf.train.get_checkpoint_state("tmp")

    if(ckpt!=None) and tf.train.checkpoint_exists(ckpt.model_checkpoint_path):
        print("varaible is restored")
        tf.reset_default_graph()
        print(ckpt.model_checkpoint_path)
        saver.restore(sess, ckpt.model_checkpoint_path)

    else:
        print("failed to restor. init graph")
        sess.run(init)

        for step in range(num_points+1):
            index = 0

            x_data, y_data = shuffle_data(x_data, y_data)

            for batch_iter in range(BATCH_NUM-1):
                feed_dict = {input_data: x_data[index:index+BATCH_SIZE],
                             output_data:y_data[index:index+BATCH_SIZE]}
                sess.run(train, feed_dict = feed_dict)
                index += BATCH_SIZE

            if (step%1000==0):
                print("Step=%5d, Loss Value = %f" %(step, sess.run(loss, feed_dict = feed_dict)))

                save_path = saver.save(sess, "tmp/train", global_step=step)
                print("Model saved in file: %s" % save_path)

    feed_dict = {input_data: x_data}
    plt.plot(x_data, y_data, 'go')
    plt.plot(x_data, sess.run(output, feed_dict=feed_dict), 'k*')
    plt.xlabel('x')
    plt.xlim(-4,3)
    plt.ylabel('y')
    plt.ylim(-1.5, 1.5)
    plt.legend("f")
    plt.show()

if __name__ == "__main__":
    main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...