Тензор потока сохранить модель потерять переменную - PullRequest
0 голосов
/ 29 апреля 2018

это нейронная сеть из 12 уровней полного соединения и 2 уровня CNN. У меня есть образец для обучения, и я хочу сохранить модель во время процесса обучения. Но когда я хочу использовать модель сохранения для прогнозирования моей новой выборки, я обнаруживаю, что модель не сохранила всю переменную. Вот кроме моего кода сохранения модели.

W_hidden_4 = tf.Variable(weight_initializer([n_neurons_3,n_neurons_4]))
bias_hidden_4 = tf.Variable(bias_initializer([n_neurons_4]))
hidden_4 = tf.nn.relu(tf.add(tf.matmul(hidden_3,W_hidden_4),bias_hidden_4))
# Output layer: Variables for output weights and biases
W_out = tf.Variable(weight_initializer([n_neurons_6,n_rot]),name="W_out")
bias_out = tf.Variable(bias_initializer([n_rot]),name="bias_out")
out = tf.add(tf.matmul(hiddens['hidden_14'], W_out), bias_out,name="out")
# Cost function
# tf.reduce_mean:count the average value
mse = tf.reduce_mean(tf.squared_difference(out, Y))

opt = tf.train.AdamOptimizer().minimize(mse)

# Run initializer
net.run(tf.global_variables_initializer())

for e in range(epochs):
print(str(e) + ":")
# Shuffle training data
shuffle_indices = np.random.permutation(np.arange(len(y_train)))
X_train = X_train[shuffle_indices]
y_train = y_train[shuffle_indices]

# Minibatch training
for i in range(0, len(y_train) // batch_size):
    start = i * batch_size
    batch_x = X_train[start:start + batch_size]
    batch_y = y_train[start:start + batch_size]
    # Run optimizer with batch
    net.run(opt, feed_dict={X: batch_x, Y: batch_y})

    # Show progress
    if np.mod(i, 50) == 0:
        # Prediction
        pred = net.run(out, feed_dict={X: X_test})
        mse_final = net.run(mse, feed_dict={X: batch_x, Y: batch_y})
        print(mse_final)            
if e%50 == 0:
    model_path = "/home/student/fulldata/src/fc_bigpara/model_" + str(e/50)
    save_path = saver.save(net, model_path)

и следующий - мой код восстановления

X_test = np.loadtxt('test_x.txt')
sess = tf.Session()
# First let's load meta graph and restore weights
saver =tf.train.import_meta_graph('/home/student/fulldata/src/old_model/fc_bigpara_14/model_19.0.meta')
#all_vars = tf.trainable_variables()
#for v in all_vars:
#    print(v.name)
#print v.name,v.eval(self.sess)
 saver.restore(sess,
"/home/student/fulldata/src/old_model/fc_bigpara_14/model_19.0")

all_vars = tf.trainable_variables()
for v in all_vars:
    #print(v.name, v.eval(sess))
    print(v.name)
    print(v.shape)

# Now, let's access and create placeholders variables and
# create feed-dict to feed new data
graph = tf.get_default_graph()

X = tf.placeholder(dtype=tf.float32, shape=[None, 3])
Y = tf.placeholder(dtype=tf.float32, shape=[None, 6])
out=graph.get_tensor_by_name("Variable_25:0")
#todo
with open("result.txt","w") as f:
    #for i in range(0, len(X_test)):
        #start=i*batch_size
        #batch_x = X_test[start:start + batch_size]
        #batch_x=X_test[i]
        feed_dict={X:X_test}
        result=sess.run(out,feed_dict)
        #print(result.shape)

Я не могу найти параметр "out" в переменной модели, и у меня есть добавить "name = 'out'", но он не может работать. Поэтому я не могу запустить код, следующий за

result=sess.run(out,feed_dict)

как я могу изменить свой код, чтобы исправить ошибку ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...