TypeError: descriptor '__subclasses__' of 'type' object needs an argument

TypeError: descriptor ‘subclasses’ of ‘type’ object needs an argument

1、在用pip3 install motmetrics之后,出现了一系列问题(还把旁边同事的电脑做了一下实验,结果也搞崩了)。原先所有的环境都是ok的。

2、首先就是基操,导入tensorflow出现问题:

import tensorlfow as tf
TypeError: descriptor '__subclasses__' of 'type' object needs an argument

3、网上找通了一大遍,说是各种版本问题啥的,于是,降低tensorflow版本到1.10(内心是拒绝的),numpy的版本降到1.10.0然后,tensorflow的项目都恢复正常,开心。

4、但是,笔记偶尔也玩Pytorch,于是,测试Pytorch项目,崩溃了,项目无法正常使用,发现numpy的版本问题,于是升级numpy的版本到1.14.5,此时Pytorch能正常使用。回过头来再使用Tensorflow,又崩了,心累。也就是说,此时此刻要用Tensorflow就是降低numpy版本,再用Pytorch时,升级numpy版本。

5、对于这种模式,笔者内心是无法接受的,于是,再开始查找bug模式,看到有说是因为pandas版本太高了的原因,于是降低pandas版本(一定要多次卸载pandas,直到提示未安装)

>>> import pandas
>>> pandas.__version__
'0.23.4'

6、然后升级numpy到平常用的1.14.5版本,tensorflow-gpu升级到1.12.0版本,对于numpy来说,1.14.5 正是Pytorch需要的对应版本,再运行tensorflow时出现新的问题Cudnn版本匹配问题,结果发现,可能中途装tensorflow太多次,然后现在cuda9.0对应的cudnn有新的对应版本
在这里插入图片描述
7、然后重新配置cudnn

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
 
sudo chmod a+r /usr/local/cuda/include/cudnn.h
 
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

8、检查cudnn版本,在终端输入

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

9、如果出现下图所示版本信息,说明安装成功。

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"

于是,所有一切都正常。

>>> import numpy as np
>>> np.__version__
'1.14.5'
>>> import tensorflow as tf
>>> tf.__version__
'1.12.0'
>>> import torch

10、整体流程就是:
1)卸载pandas(切记,多次卸载),然后再安装

pip3 uninstall pandas
pip3 install -i https://pypi.tuna.singhua.edu.cn/simple pandas==0.23.4

2)卸载numpy(切记,多次卸载),然后再安装

pip3 uninstall numpy
pip3 install -i https://pypi.tuna.singhua.edu.cn/simple numpy==1.14.5

3)最后装tensorflow

pip3 install -i https://pypi.tuna.singhua.edu.cn/simple tensorflow==1.12.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值