AttributeError: ‘NoneType‘ object has no attribute ‘dtype‘

0.参考链接

大佬链接

1.问题源

北大曹健老师的tensorflow2020年的课程,class6 的源码一直报错。

2.解决方式

本人笔记本配置:TensorFlow2.1GPU版本(显卡:Nvidia RTX2060),Numpy版本:Version 1.20.3。
注意:有些大佬只更新Tensorflow的版本就解决了问题,可能是他的显卡支持更高版本的Tensorflow,Tensorflow的版本还是尽量看显卡是否支持。

2.1失败方式

看大佬们的帖子说 tensor 和 numpy 的版本不兼容,所以在一开始曾尝试着将源代码中的 np.shape() 替换为 tf.shape() ,然而依旧会报出这个错误,看来应该是某个底层逻辑出了问题。

2.2成功方式

于是将Numpy版本修改为1.18.5,问题解决。
后又尝试将Numpy换回原版本,又继续报出error,目前可以理解为确实是版本不对应。

3.操作步骤

1.打开pycharm的Terminal
Terminal

2.如下操作

#1.输入(卸载原版本):
pip uninstall numpy
#2.在弹出来的选项后输入:y
#3.输入(该操作为用国内镜像源安装):
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade numpy==1.18.5
### 解决 RVC 训练时遇到的 `AttributeError` 错误 当在 TensorFlow 中执行模型拟合操作并收到 `'NoneType' object has no attribute 'dtype'` 报错时,这通常意味着某些预期返回张量或数组的操作实际上返回了 None。这种情况下,程序试图访问一个不存在的对象属性。 #### 可能的原因和解决方案: - **数据预处理问题** 如果输入到 `model.fit()` 函数的数据集存在问题,比如未正确加载或转换成张量,则可能导致该错误。建议验证用于训练的数据是否已正确定义并且不是 None[^1]。 - **环境配置差异** 不同计算机上的 Python 环境可能存在差异,特别是库版本的不同可能会引发此类异常行为。确保所有依赖项都处于相同版本,并考虑创建虚拟环境来隔离项目所需的特定软件栈[^3]。 - **代码逻辑缺陷** 检查是否有条件分支未能正常工作而意外地使变量被赋值为 None。例如,在构建自定义层或其他组件的过程中可能出现这种情况。审查相关部分以确认没有任何地方不当设置了这些对象的状态[^5]。 为了更具体地帮助解决问题,可以采取以下措施之一: ```python import tensorflow as tf from tensorflow import keras # 打印调试信息前先检查输入数据的有效性 print(f"x_train type: {type(x_train)}, shape: {tf.shape(x_train) if isinstance(x_train, tf.Tensor) else x_train.shape}") print(f"y_train type: {type(y_train)}, shape: {tf.shape(y_train) if isinstance(y_train, tf.Tensor) else y_train.shape}") if x_train is not None and y_train is not None: try: history = model.fit( x=x_train, y=y_train, batch_size=64, epochs=50, validation_data=(x_val, y_val), verbose=1 ) except Exception as e: print(e) else: raise ValueError("Training data cannot be None.") ``` 上述代码片段展示了如何通过打印语句诊断潜在的问题所在,并且加入了额外的安全机制防止传入无效参数给 `fit` 方法调用。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值