python 深度学习 记录遇到的报错问题11
六、ValueError: cannot convert float NaN to integer
报错:
原因:这个错误通常是因为在尝试将NaN值转换为整数时发生的。NaN表示“非数字”,它无法转换为整数。在 Python 中,NaN 表示 Not a Number,表示数据集中缺失的条目。 它是一种特殊的 float 值,不能转换为 float 以外的其他类型。
解决方法:先检查代码是否有不合理的地方,如果代码没有逻辑错误。
(1)然后检查输入数据,确保没有NaN值。例如,使用Pandas DataFrame时,可以使用.isna()
方法检查数据中是否有NaN值。
(2)在转换之前检查数据类型,确保它们是可以转换为整数的数据类型。例如,在Python中,可以使用内置的isinstance()
函数来检查数据类型。
(3)也可以使用 fillna() 方法修复python错误 ValueError: cannot convert float NaN to integer
fillna()
方法用 Python 中的给定值替换 NaN 值, 它检查列中的 NaN 值并用指定值填充它们。
df_new = df.fillna(0)
print(df_new)
(4)更新matplotlib_venn包,
pip install --upgrade matplotlib_venn
七、AttributeError: module 'tensorflow' has no attribute 'reset_default_graph'
报错:
原因:这个错误是因为在TensorFlow 2.0及更高版本中,reset_default_graph函数已经被移除了。在TensorFlow 1.x版本中,reset_default_graph函数用于清除默认图形堆栈并重置全局默认图形。但在TensorFlow 2.0及更高版本中,由于引入了急切执行(Eager Execution)模式,不再需要使用此函数。
解决方法:如果你需要在TensorFlow 2.0中使用类似于reset_default_graph的功能,你可以创建一个新的tf.Graph实例,并使用tf.function装饰器将你的计算封装在这个新图中。这样,每次你创建一个新的tf.Graph实例时,都相当于重置了图形。
八、If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
解决方法:
在当前conda环境下,先卸载已经安装了的版本,
pip uninstall protobuf
重新安装3.20版本,
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple protobuf==3.19.6
九、undefined symbol: __nvJitLinkAddData_12_1, version libnvJitLink.so.12
报错:undefined symbol: __nvJitLinkAddData_12_1, version libnvJitLink.so.12
原因:
解决:linux服务器安装gpu版本的pytorch
运行命令,首先看一下cuda的版本,我的是右上角显示12.2,
nvidia-smi
选择Linux ,这里没有我的cuda12.2版本,
找过往版本Previous PyTorch Versions | PyTorch
发现有12.1版本,但是没有12.2版本,查阅得知可以向下兼容安装12.1版本的,
因此就使用这个命令安装。
conda install pytorch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 pytorch-cuda=12.1 -c pytorch -c nvidia
十、AttributeError: module 'networkx' has no attribute 'read_gpickle'
报错:
原因:安装的是networkx
的2.8版本。在networkx
2.8版本中,确实没有read_gpickle
函数。
解决方法:如果你需要使用read_gpickle
函数,你可以尝试升级到较新的版本。
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com networkx==2.8.8
OK,问题解决。