### 🐛 Bug
嘿!
当我尝试记录一个 `dict` 时,我得到
self.run.track(
File "/home/hendrik/miniconda3/envs/tag/lib/python3.8/site-packages/aim/sdk/run.py", line 432, in track
self._track_impl(value, track_time, name, step, epoch, context=context)
File "/home/hendrik/miniconda3/envs/tag/lib/python3.8/site-packages/aim/sdk/run.py", line 452, in _track_impl
raise ValueError(f'Input metric of type {type(value)} is neither python number nor AimObject')
ValueError: Input metric of type <class 'dict'> is neither python number nor AimObject
但是在 [docs](https://aimstack.readthedocs.io/en/v3.10.1/quick_start/supported_types.html) 中它说:
Aim 支持多种数据源。基本的运行参数记录涵盖了 Python 内置类型(如 `int`、`float`、`bool`、`bytes` 和 `str`),以及将这些组合成任何深度的 **字典**、列表、元组。
#### 重现问题
run.track({"somekey": "somevalue"})
#### 预期行为
记录一个 `dict`。
#### 环境
* Aim 版本 3.10.1
* Python 版本 3.8
* pip 版本 20.2.4
* OS(例如,Linux)Ubuntu 20.04.4 LTS
* 其他相关信息
#### 附加上下文
`run.py` 中的相关部分显然是这个:
if is_number(value):
val = convert_to_py_number(value)
elif isinstance(value, (CustomObject, list, tuple)):
val = value
else:
raise ValueError(f'Input metric of type {type(value)} is neither python number nor AimObject')
所以我在想:我是不是用这种方式使用错误了,实现有误,还是文档有误?
谢谢!
PS:如果能简单地跟踪 pandas 数据框就更好了。但那是另一个故事,我想。
3条答案
按热度按时间0qx6xfy61#
嘿,@hendriks73!
Aim确实支持
dict
作为类型。问题是字典目前还不支持作为序列类型,但你可以将它们记录为Run本身的属性/属性,如下所示:inkz8wg92#
wrt: pandas支持;我们计划改进
track()
方法的用户体验,以接受更多输入并提供更好的错误报告。dataframe
似乎是一个相当合理的格式来支持。我可以请你打开一个单独的问题,描述你希望如何探索跟踪的数据吗?它是否应该分成多个序列(例如,每个列等)等等...hjqgdpho3#
感谢@alberttorosyan的快速回答。
关于跟踪 Dataframe :
也许可以将它们简单地显示为可以排序、搜索和转换的表格。
将它们解释为序列是另一个选择,也许带有一些魔法“步”列。
如果您仍然认为这是一个值得单独讨论的问题,我很乐意创建一个。
(但这不可否认不是我的优先事项)