Tensorboard 1.13.1无法运行,报错OSError: [Errno 22] Invalid argument ; (dt - datetime.datetime ...

问题现象

我的版本是13.1,运行Tensorboard 命令的时候直接报错,无法运行。从网上查了很多大部分的提示错误,跟我的不一样,我猜测是版本不同的原因,但是根据他们的原理来进行了一下构思,解决了问题。其中问题出现的情况如下:

  File "c:\users\ict_sjf\anaconda3\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\ict_sjf\anaconda3\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\ICT_SJF\Anaconda3\Scripts\tensorboard.exe\__main__.py", line 9, in <module>
  File "c:\users\ict_sjf\anaconda3\lib\site-packages\tensorboard\main.py", line 57, in run_main
    app.run(tensorboard.main, flags_parser=tensorboard.configure)
  File "c:\users\ict_sjf\anaconda3\lib\site-packages\absl\app.py", line 300, in run
    _run_main(main, args)
  File "c:\users\ict_sjf\anaconda3\lib\site-packages\absl\app.py", line 251, in _run_main
    sys.exit(main(argv))
  File "c:\users\ict_sjf\anaconda3\lib\site-packages\tensorboard\program.py", line 228, in main
    self._register_info(server)
  File "c:\users\ict_sjf\anaconda3\lib\site-packages\tensorboard\program.py", line 274, in _register_info
    manager.write_info_file(info)
  File "c:\users\ict_sjf\anaconda3\lib\site-packages\tensorboard\manager.py", line 270, in write_info_file
    payload = "%s\n" % _info_to_string(tensorboard_info)
  File "c:\users\ict_sjf\anaconda3\lib\site-packages\tensorboard\manager.py", line 130, in _info_to_string
    for k in _TENSORBOARD_INFO_FIELDS
  File "c:\users\ict_sjf\anaconda3\lib\site-packages\tensorboard\manager.py", line 130, in <dictcomp>
    for k in _TENSORBOARD_INFO_FIELDS
  File "c:\users\ict_sjf\anaconda3\lib\site-packages\tensorboard\manager.py", line 51, in <lambda>
    (dt - datetime.datetime.fromtimestamp(0)).total_seconds()),
OSError: [Errno 22] Invalid argument

主要问题点在于:
(dt - datetime.datetime.fromtimestamp(0)).total_seconds()),
在这里出现了错误,导致无法运行。


解决方法

根据提示的路径信息,找到manager.py这个文件,找到里面报错的那一行
(dt - datetime.datetime.fromtimestamp(0)).total_seconds()),
将其改为:
(dt - datetime.datetime.fromtimestamp(90000)).total_seconds()),
尝试运行一下,试试看。


问题解析

  • 这个问题挺奇葩的,也能搜到类似的问题,位置应该都在这里,他们的错误也是一样的。很多人会说是这个serialize=lambda dt: int(dt.strftime("%s")),改了里面的小s为大S就可以了。但是我去我的那个文件里面找了,根本没有没有这条命令啊!!! 可能对于某些版本可行,但是对于我这个版本,并没有。
  • 于是只能针对这个代码去查了,datetime.datetime.fromtimestamp()这个的功能其实挺简单的,就是将UNIX时间戳改成标准时间,于是我去stackoverflow上面查了一下,自己又试验了一下, **结果发现输入为0的时候,也就是datetime.datetime.fromtimestamp(0)会直接报错,我记得理论上应该是1970年1月1日0点吧,这个错误很是奇怪。
  • 所以我尝试了让他转换一个大于0的时间,发现低于90000,也就是1970年1月1日9点之前的任何时间都会报错(这个好奇葩啊,难道是因为win10?)。所以我就把那个时间点输入改成90000,结果就运行起来了。
  • 运行是可以了,时间就不知道准不准了,哈哈!那个不是我关心的重点。。。

另外

在windows下面后面的--logdir “C:\” 是需要使用双引号的。留给自己提个醒。


参考

https://stackoverflow.com/questions/49224621/python-datetime-datetime-fromtimestamp-bug
https://blog.csdn.net/qq_18644873/article/details/88091336
https://blog.csdn.net/u013244846/article/details/88380860

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值