对于我正在进行的图像分类项目,我生成了一个作为文本文件的报告。在每一次训练验证运行中,应用程序都会将一个标题写入报表文件,每一行将总结使用的模型的一个层,最后是一个结果行,它说明了该模型的准确性、损失以及花费了多少时间。下面是对报告文件的描述:
>>>test 1<<<
input convolution channels: 8 activation: relu l1 regularization: 0.0
hidden maxpool pool size: 2
hidden convolution channels: 64 activation: relu l1 regularization: 0.0
hidden maxpool pool size: 2
hidden convolution channels: 64 activation: relu l1 regularization: 0.0
hidden flatten
hidden dense neurons: 64 activation: relu l1 regularization: 0.0
output dense neurons: 10 activation: softmax l1 regularization: 0.0
Best validation at epoch 10 with loss 0.65450 and accuracy 0.96423
>>>test 2<<<
input convolution channels: 16 activation: relu l1 regularization: 0.0
hidden maxpool pool size: 2
hidden convolution channels: 64 activation: relu l1 regularization: 0.0
hidden maxpool pool size: 2
hidden convolution channels: 64 activation: relu l1 regularization: 0.0
hidden flatten
hidden dense neurons: 64 activation: relu l1 regularization: 0.0
output dense neurons: 10 activation: softmax l1 regularization: 0.0
Best validation at epoch 12 with loss 0.47489 and accuracy 0.97593现在,我需要查看该报告文件,并找到给我提供最佳结果的测试模型,因此我创建了一个函数,使用readline()导航到我所寻求的信息行(“.最佳验证at .”在前面的报告描述中)。我希望恢复这一行并在其上使用str.split()可以让我获得嵌入在这些结果行中的数据,但是运行失败了,因为我找到的不是要找的行,而是后面的行。看到没有理由在代码中跳过这一行,我只打印了22行readline().split(),看看我会得到什么(22行,因为这足够文件中的前2条reports语句)。下面是我运行的调试代码:
ioData = open(REPORT_FILE, 'r')
for i in range(22):
print("{}".format(ioData.readline().split()))
ioData.close()我从中得到的输出:
['>>>test', '1<<<']
['input', 'convolution', 'channels:', '8', 'activation:', 'relu', 'l1', 'regularization:', '0.0']
['hidden', 'maxpool', 'pool', 'size:', '2']
['hidden', 'convolution', 'channels:', '64', 'activation:', 'relu', 'l1', 'regularization:', '0.0']
['hidden', 'maxpool', 'pool', 'size:', '2']
['hidden', 'convolution', 'channels:', '64', 'activation:', 'relu', 'l1', 'regularization:', '0.0']
['hidden', 'flatten']
['hidden', 'dense', 'neurons:', '64', 'activation:', 'relu', 'l1', 'regularization:', '0.0']
['output', 'dense', 'neurons:', '10', 'activation:', 'softmax', 'l1', 'regularization:', '0.0']
[]
['>>>test', '2<<<']
['input', 'convolution', 'channels:', '16', 'activation:', 'relu', 'l1', 'regularization:', '0.0']
['hidden', 'maxpool', 'pool', 'size:', '2']
['hidden', 'convolution', 'channels:', '64', 'activation:', 'relu', 'l1', 'regularization:', '0.0']
['hidden', 'maxpool', 'pool', 'size:', '2']
['hidden', 'convolution', 'channels:', '64', 'activation:', 'relu', 'l1', 'regularization:', '0.0']
['hidden', 'flatten']
['hidden', 'dense', 'neurons:', '64', 'activation:', 'relu', 'l1', 'regularization:', '0.0']
['output', 'dense', 'neurons:', '10', 'activation:', 'softmax', 'l1', 'regularization:', '0.0']
[]
['>>>test', '3<<<']
['input', 'convolution', 'channels:', '32', 'activation:', 'relu', 'l1', 'regularization:', '0.0']如您所见,printout以正确的顺序显示word列表中的每一行拆分,但它跳过结果行(每个报表语句的最后一行)。因此,我没有只获得22行的两个report语句,而是使用了第三个report语句的前两行。
我没有看到任何错误可以解释为什么每次跳过特定的行。有谁可以帮我?
发布于 2020-06-25 18:14:13
哦,我刚想明白。我有一个相同名称的重复文件(必须在调试报表模块时生成该文件),该文件与我的报告完全相同,其中缺少测试结果行的差异。这段时间,我用结果来索引文件而不是文件。
抱歉浪费你的时间。
https://stackoverflow.com/questions/62569467
复制相似问题