keras.callbacks使用TensorBoard时,如果logs里有字典元素是不支持的,例如下面代码里的logs['b'],此时如果想使用TensorBoard正常记录日志,需要将字典元素转成单值元素。例如,这里将字典元素里的每个子元素提取出来生成新的字典,并与原字典的非字典元素合并。
logs = {'a': 0.1,
'b': {
'b1': 1.1,
'b2': 1.2,
}
}
dict_items = []
logs_add = {}
for item in logs:
if isinstance(logs[item], dict):
dict_items.append(item)
for sub_item in logs[item]:
logs_add[item + '_' + sub_item] = logs[item][sub_item]
# 弹出字典元素
for i in dict_items:
logs.pop(i)
# 合并字典元素扩展的元素
logs.update(logs_add)