我已经用Tensorflow训练了我的神经网络,并保存了如下模型:
def neural_net(x):
layer_1 = tf.layers.dense(inputs=x, units=195, activation=tf.nn.sigmoid)
out_layer = tf.layers.dense(inputs=layer_1, units=6)
return out_layer
train_x = pd.read_csv("data_x.csv", sep=" ")
train_y = pd.read_csv("data_y.csv", sep=" ")
train_x = train_x / 6 - 0.5
train_size = 0.9
train_cnt = int(floor(train_x.shape[0] * train_size))
x_train = train_x.iloc[0:train_cnt].values
y_train = train_y.iloc[0:train_cnt].values
x_test = train_x.iloc[train_cnt:].values
y_test = train_y.iloc[train_cnt:].values
x = tf.placeholder("float", [None, 386])
y = tf.placeholder("float", [None, 6])
nn_output = neural_net(x)
cost = tf.reduce_mean(tf.losses.mean_squared_error(labels=y, predictions=nn_output))
optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost)
training_epochs = 5000
display_step = 1000
batch_size = 30
keep_prob = tf.placeholder("float")
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch in range(training_epochs):
total_batch = int(len(x_train) / batch_size)
x_batches = np.array_split(x_train, total_batch)
y_batches = np.array_split(y_train, total_batch)
for i in range(total_batch):
batch_x, batch_y = x_batches[i], y_batches[i]
_, c = sess.run([optimizer, cost],
feed_dict={
x: batch_x,
y: batch_y,
keep_prob: 0.8
})
saver.save(sess, 'trained_model', global_step=1000)
现在我想在另一个文件中使用经过训练的模型。当然,有很多恢复和保存模型的例子,我看过很多。但我还是不能让它们工作,总有一些错误。这是我的还原文件,你能帮我还原保存的模型吗?
saver = tf.train.import_meta_graph('trained_model-1000.meta')
y_pred = []
with tf.Session() as sess:
saver.restore(sess, tf.train.latest_checkpoint('./'))
sess.run([y_pred], feed_dict={x: input_values})
这个尝试给了我一个错误“会话图是空的。在调用run()之前向图中添加操作。“那么应该向图中添加什么操作以及如何添加?”?我不知道在我的模型中应该做什么。。。我不理解Tensorflow中保存/恢复的整个概念。或者我应该做完全不同的恢复?提前谢谢!
你可以知道使用
tf.saved_model.builder.SavedModelBuilder
函数。保存的主要行:
保存模型的代码:
恢复模型的代码:
其中
nn_output
是网络最后一层的输出变量。可以使用以下命令保存变量:因此在你的代码中:
应该是:
还原:
现在您应该可以访问图的那个节点了。如果未指定名称,则很难恢复该特定层。
如果我错了,请原谅,但是
tf.train.Saver()
只保存变量值,而不保存图形本身。这意味着,如果要在不同的文件中加载模型,则需要重新生成图形或以某种方式加载图形。Tensorflow文档说明:请考虑以下示例:
保存模型的一个文件:
加载先前保存的模型的另一个文件:
相关问题 更多 >
编程相关推荐