Vega 没有从 python `time.time()` 中正确读取时间戳
Vega does not correctly read timestamps from python `time.time()`
我有以下织女星图表:
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"name": "data",
"values": [
{
"action_hidden_size": 128,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 168.8265306122449,
"episode return": 1.0714285714285714,
"epsilon": 0.0001,
"fps": 427.7912197785782,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.04117301106452942,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0009,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": -0.028508108109235764,
"num_envs": 16,
"num_steps": 5,
"resnet": false,
"rnn": false,
"run ID": 1459,
"seed": 0,
"step": 64000,
"subcommand": "sweep",
"sweep_id": 19,
"time": 1625243790.698869,
"training_steps": -1
},
{
"action_hidden_size": 64,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 178.2111111111111,
"episode return": 1.288888888888889,
"epsilon": 0.00001,
"fps": 437.3014892700601,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.0920964702963829,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0005,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": 0.008676287718117237,
"num_envs": 16,
"num_steps": 10,
"resnet": false,
"rnn": false,
"run ID": 1456,
"seed": 0,
"step": 64000,
"subcommand": "sweep",
"sweep_id": 23,
"time": 1625243788.6341043,
"training_steps": -1
},
{
"action_hidden_size": 64,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 178.75581395348837,
"episode return": 1.430232558139535,
"epsilon": 0.00001,
"fps": 462.03207466360925,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.041478127241134644,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0005,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": 0.0075914873741567135,
"num_envs": 16,
"num_steps": 10,
"resnet": false,
"rnn": false,
"run ID": 1452,
"seed": 0,
"step": 64000,
"subcommand": "sweep",
"sweep_id": 23,
"time": 1625243776.3521159,
"training_steps": -1
},
{
"action_hidden_size": 128,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 161.39583333333334,
"episode return": 0.9166666666666666,
"epsilon": 0.0001,
"fps": 271.2519726477831,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.0941310003399849,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0009,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": -0.025099074468016624,
"num_envs": 16,
"num_steps": 5,
"resnet": false,
"rnn": false,
"run ID": 1455,
"seed": 0,
"step": 32000,
"subcommand": "sweep",
"sweep_id": 19,
"time": 1625243760.262077,
"training_steps": -1
},
{
"action_hidden_size": 128,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 156.8181818181818,
"episode return": 0.8863636363636364,
"epsilon": 0.0001,
"fps": 279.50948832177323,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.06209081411361694,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0009,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": -0.02385426126420498,
"num_envs": 16,
"num_steps": 5,
"resnet": false,
"rnn": false,
"run ID": 1459,
"seed": 0,
"step": 32000,
"subcommand": "sweep",
"sweep_id": 19,
"time": 1625243755.579455,
"training_steps": -1
}
]
},
"encoding": {
"x": {
"type": "temporal",
"field": "time"
},
"y": {
"type": "quantitative",
"field": "episode return"
},
"color": {
"type": "nominal",
"field": "run ID"
}
},
"height": 400,
"mark": "line",
"width": 600
}
这是 link 给 vega 编辑器的这张图表。
如您所见,时间戳似乎没有正确呈现。 “时间”字段派生自 python 的 time.time()
方法。我应该使用不同的格式吗?
根据 documentation,vega 应该接受“时间”字段的“时间戳编号(例如,1552199579097)”。
我还查看了 this issue,这似乎表明这应该适用于最新的 Vega,尽管根据那个问题,我不确定我是否需要一个类似于 [=18] 的字段=]
"format": {
"parse": {
"date": "number"
}
}
谢谢。
Python 的 time.time()
returns 自零纪元以来 seconds 中的时间戳。
Javascript 时间戳预计在 milliseconds 自零纪元以来。
因此,要在 vega-lite 图表中正确使用 Python 时间戳,您必须将它们乘以 10^6:
"transform": [
{"calculate": "1000000 * datum.time", "as": "time"}
],
我有以下织女星图表:
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {
"name": "data",
"values": [
{
"action_hidden_size": 128,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 168.8265306122449,
"episode return": 1.0714285714285714,
"epsilon": 0.0001,
"fps": 427.7912197785782,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.04117301106452942,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0009,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": -0.028508108109235764,
"num_envs": 16,
"num_steps": 5,
"resnet": false,
"rnn": false,
"run ID": 1459,
"seed": 0,
"step": 64000,
"subcommand": "sweep",
"sweep_id": 19,
"time": 1625243790.698869,
"training_steps": -1
},
{
"action_hidden_size": 64,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 178.2111111111111,
"episode return": 1.288888888888889,
"epsilon": 0.00001,
"fps": 437.3014892700601,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.0920964702963829,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0005,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": 0.008676287718117237,
"num_envs": 16,
"num_steps": 10,
"resnet": false,
"rnn": false,
"run ID": 1456,
"seed": 0,
"step": 64000,
"subcommand": "sweep",
"sweep_id": 23,
"time": 1625243788.6341043,
"training_steps": -1
},
{
"action_hidden_size": 64,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 178.75581395348837,
"episode return": 1.430232558139535,
"epsilon": 0.00001,
"fps": 462.03207466360925,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.041478127241134644,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0005,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": 0.0075914873741567135,
"num_envs": 16,
"num_steps": 10,
"resnet": false,
"rnn": false,
"run ID": 1452,
"seed": 0,
"step": 64000,
"subcommand": "sweep",
"sweep_id": 23,
"time": 1625243776.3521159,
"training_steps": -1
},
{
"action_hidden_size": 128,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 161.39583333333334,
"episode return": 0.9166666666666666,
"epsilon": 0.0001,
"fps": 271.2519726477831,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.0941310003399849,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0009,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": -0.025099074468016624,
"num_envs": 16,
"num_steps": 5,
"resnet": false,
"rnn": false,
"run ID": 1455,
"seed": 0,
"step": 32000,
"subcommand": "sweep",
"sweep_id": 19,
"time": 1625243760.262077,
"training_steps": -1
},
{
"action_hidden_size": 128,
"async_envs": true,
"charts_path": "charts/sweep",
"entropy_coef": 0.01,
"env": "BreakoutNoFrameskip-v0",
"episode length": 156.8181818181818,
"episode return": 0.8863636363636364,
"epsilon": 0.0001,
"fps": 279.50948832177323,
"gamma": 0.99,
"gpt": "1558M",
"gradient norm": 0.06209081411361694,
"jit": true,
"lambda_": 1,
"learning_rate": 0.0009,
"log_interval": 100,
"log_level": "INFO",
"logger": "hasura",
"loss": -0.02385426126420498,
"num_envs": 16,
"num_steps": 5,
"resnet": false,
"rnn": false,
"run ID": 1459,
"seed": 0,
"step": 32000,
"subcommand": "sweep",
"sweep_id": 19,
"time": 1625243755.579455,
"training_steps": -1
}
]
},
"encoding": {
"x": {
"type": "temporal",
"field": "time"
},
"y": {
"type": "quantitative",
"field": "episode return"
},
"color": {
"type": "nominal",
"field": "run ID"
}
},
"height": 400,
"mark": "line",
"width": 600
}
这是 link 给 vega 编辑器的这张图表。
如您所见,时间戳似乎没有正确呈现。 “时间”字段派生自 python 的 time.time()
方法。我应该使用不同的格式吗?
根据 documentation,vega 应该接受“时间”字段的“时间戳编号(例如,1552199579097)”。
我还查看了 this issue,这似乎表明这应该适用于最新的 Vega,尽管根据那个问题,我不确定我是否需要一个类似于 [=18] 的字段=]
"format": {
"parse": {
"date": "number"
}
}
谢谢。
Python 的 time.time()
returns 自零纪元以来 seconds 中的时间戳。
Javascript 时间戳预计在 milliseconds 自零纪元以来。
因此,要在 vega-lite 图表中正确使用 Python 时间戳,您必须将它们乘以 10^6:
"transform": [
{"calculate": "1000000 * datum.time", "as": "time"}
],