Cenário do projeto:
ROS 20.04
Python3.7
TensorFlow2.8
Configuração Conda
Muitos problemas são encontrados ao usar código ancestral. Em última análise, é também um problema de versão.
1) Instale o conda
Agradecimentos a: Etapas oficiais de download e instalação do Conda e introdução detalhada ao uso do conda - Datapotumas - Blog Park
https://blog.csdn.net/qq_41101213/article/details/
Página inicial oficial da Conda: https://github.com/conda/conda
Endereço oficial de download do Conda: Download oficial do Conda
Eu sou um sistema Linux x86_64, então baixe https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
O arquivo bin do conda será adicionado à variável de ambiente e precisa ser originado.
source ~/.bashrc
2) Crie um ambiente virtual Python
# 创建
conda create -n your_env_name python=3.7
3) Mudar de ambiente
# linux
source activate your_env_name
#若返回系统原本环境,退出conda(或返回上一级环境)
conda deactivate
4) Instale pacotes adicionais no ambiente virtual
conda install -n your_env_name [package]
TensorFlow2.x segue as modificações anteriores ao código 1.x
grato:
Como a biblioteca contrib é instável, a biblioteca contrib foi excluída na versão mais avançada.
O TensorFlow 2.0 fornece o pacote de código tensorflow.compat.v1 para ser compatível com o código 1.x original e pode ser executado quase sem modificações.
Vai:
import tensorflow as tf
Substituir com:
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
Use ferramentas de migração para migrar automaticamente o código 1.x para 2.0
O TensorFlow 2.0 fornece uma ferramenta de migração de linha de comando para converter automaticamente o código 1.x em código 2.0. A ferramenta é usada da seguinte forma (assumindo que o nome do arquivo do nosso programa seja first-tf.py):
tf_upgrade_v2 --infile first-tf.py --outfile first-tf-v2.py
Ou a pasta inteira:
tf_upgrade_v2 --intree tf_pose --outtree tf_pose
Pergunta 1: Nenhum módulo chamado '_pafprocess'
Solução:
$ cd ~/tf_pose/pafprocess/
$ swig -python -c++ pafprocess.i
$ python3 setup.py build_ext --inplace
问题2:ModuleNotFoundError: Nenhum módulo chamado 'tensorflow.contrib'
Parte da pergunta:
import tensorflow.contrib.slim as slim
Não há atributo contrib para versões acima do tensorflow2
Solução:
pip install --upgrade tf_slim --user
Modifique a parte da pergunta acima para:
import tf_slim as slim
问题3:AttributeError: módulo 'tensorflow' não possui atributo 'contrib'或者AttributeError: módulo 'tensorflow' não possui atributo 'layers'
Parte da pergunta:
_init_xavier = tf.contrib.layers.xavier_initializer()
Solução:
Modifique a parte da pergunta acima para:
_init_xavier = tf.truncated_normal_initializer(stddev=0.1)
问题4:AttributeError: módulo 'tensorflow_core.compat.v1' não possui atributo 'contrib'
Parte da pergunta:
_l2_regularizer_00004 = tf.contrib.layers.l2_regularizer(0.00004)
_l2_regularizer_convb = tf.contrib.layers.l2_regularizer(common.regularizer_conv)
O TensorFlow exclui interfaces duplicadas e basicamente reutiliza a interface Keras ao construir a rede, ou seja, tf.keras
Solução:
_l2_regularizer_00004 = tf.keras.regularizers.l2(0.00004)
_l2_regularizer_convb = tf.keras.regularizers.l2(common.regularizer_conv)
问题5:AttributeError: módulo 'tensorflow' não possui atributo 'slim'
Parte da pergunta:
slim = tf.slim
Solução:
import tf_slim as slim
Adicione o código acima e exclua a parte problemática
问题6;RuntimeError: módulo compilado na versão 0xe da API, mas esta versão do numpy
Solução:
pip3 install -U numpy
Atualizar versão numpy