Python 访问列表字典中列表的最小元素

Python 访问列表字典中列表的最小元素,python,python-3.x,keras,callback,Python,Python 3.x,Keras,Callback,kerasmodel.fit(…)返回一个回调历史对象,我们可以从中检索所有时代的模型度量日志的历史,即: hist = model.fit(..) off_history = hist.history 以便: pprint(off_history) {'accuracy': [0.5884908437728882, 0.6860442757606506, 0.7116397619247437, 0.72079

keras
model.fit(…)
返回一个回调历史对象,我们可以从中检索所有时代的模型度量日志的历史,即:

hist = model.fit(..)
off_history = hist.history
以便:

pprint(off_history)
{'accuracy': [0.5884908437728882,
              0.6860442757606506,
              0.7116397619247437,
              0.7207977771759033,
              0.7276809811592102],
 'loss': [1.5214883089065552,
          0.9418172836303711,
          0.8826016187667847,
          0.8565425276756287,
          0.8384354114532471],
 'val_accuracy': [0.569063663482666,
                  0.6021720170974731,
                  0.6034634709358215,
                  0.6066920757293701,
                  0.607513964176178],
 'val_loss': [1.3138036727905273,
              1.2316004037857056,
              1.201686143875122,
              1.1939105987548828,
              1.1881093978881836]}
我感兴趣的是检索所有型号匹配的最小
val_损失
。我知道我能做到:

off_history['val_loss'][-1]
但由于我不确定keras是否始终返回
准确度、损失、val_准确度的排序列表…
,因此我无法依赖此操作


那么,在
model.fit()
的所有情况下,获得最小
val_损耗的最佳方法是什么?

如果需要精确的输出,可以尝试使用for loop

for k,v in off_history.items():
    if k == 'val_loss':
        print(v[-1])
这使得:

1.1881093978881836
Keras
fit()
返回训练日志的历史对象。 因此,如果您设置:

hist = model.fit()
此历史对象包含模型训练的所有
epoch
日志:

type(history.epoch) #epochs list [0,1,2,,...n_epochs]
list
因此,您所参考的
hist.history
字典包含上面列表中
history.epoch
中每个历元的相应度量值

为了回答您的问题,keras
fit()
将按照历代运行的顺序返回这些度量。1,2,3,4,5

实现目标的一种方法是使用
numpy
min
函数,如下所示:

validation_loss = np.min(hist.history['val_loss'])

要在keras的所有时代检索最小验证损失
fit()

,内置的
min
可能有助于。。。