gpt4 book ai didi

python-3.x - 评估预测速度极慢

转载 作者:行者123 更新时间:2023-11-30 09:08:10 28 4
gpt4 key购买 nike

我正在使用以下占位符训练 CNN...

# mnist data image of shape [batch_size, 28, 28, 1].
x = tf.placeholder(tf.float32, [None, 28, 28, 1])

# 0-9 digits recognition => 10 classes.
y = tf.placeholder(tf.float32, [None, 10])

我在一个 session 中对其进行训练,并且由于每次在将数据提供给占位符之前我都必须重新调整数据,因此大致就是我正在做的事情...

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)

_, c = sess.run([train_op, loss], feed_dict={x:batch_xs.reshape([-1, 28, 28, 1]), y:batch_ys})

...
...

如您所见,在将数据提供给占位符之前,我正在 reshape 数据。 CNN 似乎工作正常,但是当我尝试计算预测的准确性时出现了问题。我使用 softmax 张量和我的 logits 层来预测它......

# Logits Layer.
# Create a dense layer with 10 neurons => 10 classes
# Output has a shape of [batch_size, 10]
logits = tf.layers.dense(inputs=dropout, units=10)

# Softmax layer for deriving probabilities.
pred = tf.nn.softmax(logits, name="softmax_tensor")

...所以在完成所有训练之后,这就是我计算预测的方式...

from tensorflow.examples.tutorials.mnist import input_data
...
...
features = input_data.read_data_sets("/tmp/data/", one_hot=True)
...
...

# list of booleans to determine the correct predictions
correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))

print(correct_prediction.eval({x:features.test.images.reshape([10000, 28, 28, 1]), y:features.test.labels}))

不幸的是,我必须将每个 features 数据转换为正确的格式,因为占位符 x 只接受格式 [batch_size, 28, 28, 1]。有 10,000 个图像和标签。当我这样做时,我的计算机速度大大减慢,并且使用大量计算,并且每次都需要重新启动计算机。显然将它们转换为这种格式在计算上不太友好。

有什么更好的方法可以做到这一点并且不会导致我的计算机崩溃?我已将以下代码用于其他神经网络...

print(correct_prediction.eval({x:features.test.images, y:features.test.labels}))

...但我从未遇到过这个问题,这让我相信原因是由 reshape 函数引起的。

最佳答案

我可能需要查看整个脚本,但从提供的代码片段来看,我认为问题在于您要立即推送整个测试集进行评估。

请注意,它不仅为输入张量及其池化变换分配 10000*28*28*4 (30Mb),卷积层执行大约 10000*25*25*1 *filter_size 整个批处理(仅第一层)的卷积。它的计算成本非常高,而且这很可能是整个时间所花费的,而不是reshape

您应该批量进行测试评估。这是简化的代码,需要更加小心地使用任意 batch_size 正确计算它:

total_accuracy = 0.0
for batch_xs, batch_ys in iterate_batches(features.test, batch_size):
accuracy = correct_prediction.eval({x: batch_xs.reshape([-1, 28, 28, 1]), y: batch_ys})
total_accuracy += np.mean(accuracy)
total_batches = features.test.num_examples / batch_size
total_accuracy /= total_batches

但它应该适用于 batch_size=10batch_size=100

关于python-3.x - 评估预测速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47064039/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com