最近跑了一个一维数据转二维图像的代码。代码链接如下:
Geração de imagens GASF-GADF-MTF para classificação por aprendizagem profunda residual (ResNet)https://github.com/kalishcode/GASF-GADF-MTF到最后输出结果遇到了idxmin一直报错,卡了一天,就总结下之间的过程。
log = pd.DataFrame(hist.history)
log['time'] = (time.time() - start)
print('----------- Resultados -----------')
print('Loss: ', log.loc[log['loss'].idxmin]['loss'])# 报错位置
print('Acc: ', log.loc[log['loss'].idxmin]['val_accuarcy'])
print('Tempo de processamento: %.2f segundos.' % (time.time() - start))
log.to_pickle('Resultados_' + datafile)
错误信息如下:
The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
查了半天,是这段代码中的idxmin使用不规范,应该有括号的。
print('Loss: ', log.loc[log['loss'].idxmin()]['loss'])
最后修改成这样便可以顺利通过,而且idxmin是返回的索引,
看的最简洁的一个理解方式是下图:图中student_info.idxmin()就是指chinese, math, english中的最小值的索引,所以print(student_info.idxmin())最终输出的结果是:
chinese :4
math:0
english:0
把这个图看懂后就很容易理解文中用的print('Loss: ', log.loc[log['loss'].idxmin()]['loss']),这句代码指从loss当中找到最小的,返回索引,根据这个索引,输出对应的loss列的内容,同理,输出对应的val_accuracy列的内容。代表着输出ResNet模型的loss值和对应的val_accuracy值