Python/Tensorflow-所有精度值为“0”是否正常;1“;在这种情况下?

Python/Tensorflow-所有精度值为“0”是否正常;1“;在这种情况下?,python,tensorflow,Python,Tensorflow,我有以下二进制文件,其中包括标签、文件名和数据(即像素): 当我运行该程序时,我得到了以下5个阶段: EPOCH 0 0 1.0 1 1.0 2 0.0 3 0.0 4 0.0 5 1.0 6 0.0 7 0.0 8 0.0 9 0.0 10 0.0 11 1.0 12 1.0 13 0.0 14 0.0 15 0.0 16 1.0 17 0.0 18 0.0 19 0.0 20 1.0 21 1.0 22 0.0 23 1.0 24 0.0 25 1.0 26 0.0 27 0.0 28 0.

我有以下二进制文件,其中包括标签、文件名和数据(即像素):

当我运行该程序时,我得到了以下5个阶段:

EPOCH 0
0 1.0
1 1.0
2 0.0
3 0.0
4 0.0
5 1.0
6 0.0
7 0.0
8 0.0
9 0.0
10 0.0
11 1.0
12 1.0
13 0.0
14 0.0
15 0.0
16 1.0
17 0.0
18 0.0
19 0.0
20 1.0
21 1.0
22 0.0
23 1.0
24 0.0
25 1.0
26 0.0
27 0.0
28 0.0
29 1.0
DONE WITH EPOCH
EPOCH 1
0 0.0
1 1.0
2 1.0
3 1.0
4 0.0
5 0.0
6 1.0
7 1.0
8 0.0
9 0.0
10 1.0
11 1.0
12 1.0
13 0.0
14 1.0
15 1.0
16 1.0
17 0.0
18 0.0
19 1.0
20 1.0
21 0.0
22 0.0
23 1.0
24 1.0
25 1.0
26 0.0
27 0.0
28 0.0
29 1.0
DONE WITH EPOCH
EPOCH 2
0 0.0
1 0.0
2 0.0
3 1.0
4 1.0
5 0.0
6 1.0
7 0.0
8 1.0
9 0.0
10 1.0
11 0.0
12 0.0
13 0.0
14 1.0
15 1.0
16 0.0
17 0.0
18 1.0
19 1.0
20 0.0
21 0.0
22 1.0
23 1.0
24 1.0
25 0.0
26 1.0
27 1.0
28 1.0
29 0.0
DONE WITH EPOCH
EPOCH 3
0 0.0
1 1.0
2 1.0
3 0.0
4 0.0
5 1.0
6 0.0
7 0.0
8 1.0
9 1.0
10 1.0
11 0.0
12 0.0
13 1.0
14 0.0
15 0.0
16 0.0
17 1.0
18 1.0
19 0.0
20 1.0
21 1.0
22 1.0
23 0.0
24 0.0
25 1.0
26 0.0
27 1.0
28 0.0
29 1.0
DONE WITH EPOCH
EPOCH 4
0 1.0
1 1.0
2 0.0
3 1.0
4 1.0
5 0.0
6 1.0
7 1.0
8 1.0
9 1.0
10 1.0
11 1.0
12 1.0
13 1.0
14 0.0
15 0.0
16 1.0
17 1.0
18 0.0
19 0.0
20 1.0
21 1.0
22 0.0
23 1.0
24 0.0
25 1.0
26 0.0
27 0.0
28 1.0
29 1.0
DONE WITH EPOCH
根据上述数据,这些值(精度)是否正常?我询问的原因是,对于其他数据(但包含10个类的大量数据),我注意到原始程序(我做了一些调整,使其与我的数据一起工作)返回的结果(精度)如下所示:

EPOCH 0
1 0.104
2 0.1
3 0.136
4 0.14
5 0.124
6 0.156
7 0.16
8 0.172
9 0.16
10 0.164
11 0.148
...
...
...
EPOCH 0
0 0.466667
15 0.666667
DONE WITH EPOCH
EPOCH 1
0 0.666667
15 0.6
DONE WITH EPOCH
EPOCH 2
0 0.333333
15 0.333333
DONE WITH EPOCH
EPOCH 3
0 0.333333
15 0.333333
DONE WITH EPOCH
EPOCH 4
0 0.533333
15 0.666667
DONE WITH EPOCH
您认为我得到的结果是否正常(即仅
0
1

编辑-1

我已将批次大小更改为:

batch_size = len(data) // 2
我现在得到的结果如下:

EPOCH 0
1 0.104
2 0.1
3 0.136
4 0.14
5 0.124
6 0.156
7 0.16
8 0.172
9 0.16
10 0.164
11 0.148
...
...
...
EPOCH 0
0 0.466667
15 0.666667
DONE WITH EPOCH
EPOCH 1
0 0.666667
15 0.6
DONE WITH EPOCH
EPOCH 2
0 0.333333
15 0.333333
DONE WITH EPOCH
EPOCH 3
0 0.333333
15 0.333333
DONE WITH EPOCH
EPOCH 4
0 0.533333
15 0.666667
DONE WITH EPOCH
是这样吗?所以,我有30张图片(我知道它们很少,但只是为了演示)。分批生产的最好方法是什么?如果上面的输出现在是正确的,有没有更好的方法来表示它?或者,对于如此小的数据集,我们可以将它们全部放在一个批中(即
batch\u size=len(data)

例如,当我设置batch_size=len(数据)时,我得到以下结果:

EPOCH 0
0 0.333333
DONE WITH EPOCH
EPOCH 1
0 0.666667
DONE WITH EPOCH
EPOCH 2
0 0.666667
DONE WITH EPOCH
EPOCH 3
0 0.333333
DONE WITH EPOCH
EPOCH 4
0 0.366667
DONE WITH EPOCH

谢谢。

代码中的
批处理大小的值是1,因此每次运行时

sess.run([train_op, accuracy], feed_dict={x: batch_data, y: batch_onehot_vals})
你只检查一张图片。然后有以下两行:

correct_pred = tf.equal(tf.argmax(model_op, 1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32))
correct_pred = tf.equal(tf.argmax(model_op, 1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32))
因此,实际上,
correct\u pred
仅为1个数字(0或1),因为它基于一张图片(因此,如果
tf.argmax(model\u op,1)=tf.argmax(y,1)
correct\u pred=1
。否则,它等于0)

那么
准确度就等于这个数字。因此,其值始终为0或1

响应编辑1:从数字上讲,这些值是有意义的。您的
batch\u size=15
,因此精度应该是1/15=0.0667的整数倍,表中的所有值似乎都是这样。 它应该是1/15的整数倍的原因是因为以下两行:

correct_pred = tf.equal(tf.argmax(model_op, 1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32))
correct_pred = tf.equal(tf.argmax(model_op, 1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32))
数组
correct\u pred
只是一个0-1向量(因为它是
tf.equal
的结果)
精度
只是
correct_pred
中的值之和除以批次大小15


关于最佳批量大小,它取决于许多因素。例如,您可以在讨论中了解更多有关这方面的信息

谢谢你的友好回复。在原始代码中,“batch\u size”如下所示:batch\u size=len(data)//200。数据长度为50000,批量大小为250。那么,这是否意味着我们每次检查250张图片?是的,这意味着他们同时计算所有图片的模型输出。这就是为什么在x_reformated=tf.reformate(x,shape=[-1150150,1])中有-1。-1表示图片的数量,这不是已知的头部,但一旦您在提要中传递它,就知道了。正如您所看到的,所有卷积等都应用于整个批数据(因为您在提要中有x_整形=批数据)。谢谢。你能在我的问题中看到EDIT-1吗?非常感谢Miriam,你的回答帮了大忙。谢谢你!