张量流保存模型丢失变量

时间:2018-04-29 03:26:19

标签: tensorflow

它是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)

如何修改我的代码以修复错误?

0 个答案:

没有答案
相关问题