复现差分隐私联邦学习代码时遇SyntaxError报错求助
问题解决:Python语法错误(raise语句版本兼容问题)
问题场景
复现论文《Differentially Private Federated Learning: A Client Level Perspective》代码时,执行bash RUNME.sh后运行命令python sample.py --m 100 --sigma 1,触发如下语法错误:
Traceback (most recent call last):
File "sample.py", line 5, in
from MNIST_reader import Data
File "/content/drive/MyDrive/Colab_Notebooks/machine-learning-diff-private-federated-learning-main/MNIST_reader.py", line 20
raise ValueError, "dataset must be 'testing' or 'training'"
SyntaxError: invalid syntax
原因分析
该错误是因为代码使用了Python2的raise语句语法,而当前运行环境为Python3。Python2中raise 异常类, 异常信息的写法在Python3中已被废弃,必须改为raise 异常类(异常信息)的格式。
解决方案
- 打开
MNIST_reader.py文件,定位到第20行 - 将原代码:
raise ValueError, "dataset must be 'testing' or 'training'"
替换为Python3兼容写法:
raise ValueError("dataset must be 'testing' or 'training'")
- 修正运行命令的参数格式:原命令中的
--m 100, sigma 1存在错误,需改为--m 100 --sigma 1(将逗号替换为空格,且sigma前添加--) - 重新运行命令即可
内容的提问来源于stack exchange,提问作者Yi Eric
相关产品推荐
相关产品推荐

