【发布时间】:2017-10-27 07:50:30
【问题描述】:
我正在训练一个 CNN,我相信我对 sess.run() 的使用导致我的训练非常缓慢。
本质上,我使用的是mnist 数据集...
from tensorflow.examples.tutorials.mnist import input_data
...
...
features = input_data.read_data_sets("/tmp/data/", one_hot=True)
问题是,CNN 的第一层必须接受[batch_size, 28, 28, 1] 形式的图像,这意味着我必须在将每个图像输入到 CNN 之前对其进行转换。
我使用我的脚本执行以下操作...
x = tf.placeholder(tf.float32, [None, 28, 28, 1])
y = tf.placeholder(tf.float32, [None, 10])
...
...
with tf.Session() as sess:
for epoch in range(25):
total_batch = int(features.train.num_examples/500)
avg_cost = 0
for i in range(total_batch):
batch_xs, batch_ys = features.train.next_batch(10)
# Notice this line.
_, c = sess.run([train_op, loss], feed_dict={x:sess.run(tf.reshape(batch_xs, [10, 28, 28, 1])), y:batch_ys})
avg_cost += c / total_batch
if (epoch + 1) % 1 == 0:
print("Epoch:", '%04d' % (epoch + 1), "cost=", "{:.9f}".format(avg_cost))
注意注释行。我正在从训练集中获取第一批,并且正在将其重塑为正确的格式[batch_size, 28, 28, 1]。我每次都必须打电话给sess.run(),我相信这就是训练如此缓慢的原因。
我该如何防止这种情况发生。我尝试使用numpy 在另一个脚本中重新格式化数据,但它仍然给我带来了问题,因为我无法在不运行sess.run() 的情况下提供numpy 数组。有人可以告诉我如何在培训课程之外格式化数据吗?也许我可以在另一个脚本中格式化数据并将其加载到包含我的 CNN 的脚本中?
【问题讨论】:
标签: python numpy machine-learning tensorflow