Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Erro na importação do Tensor Flow

Olá pessoal tudo bem? Estou fazendo um projeto na faculdade com o teachable machine e estou tendo problemas para rodar ele no VS code, estou com o Python 3.10 e com as versões

  • tensorflow==2.9.0
  • keras==2.9.0
  • opencv-python==4.8.1.78
  • numpy==1.24.4

Código do Tensor Flow:

from keras.models import load_model
import cv2  # Install opencv-python
import numpy as np

# Disable scientific notation for clarity
np.set_printoptions(suppress=True)

# Load the model
model = load_model('/content/keras_model.h5')

# Load the labels
class_names = open("labels.txt", "r").readlines()

# CAMERA can be 0 or 1 based on default camera of your computer
camera = cv2.VideoCapture(0)

while True:
    # Grab the webcamera's image.
    ret, image = camera.read()

    # Resize the raw image into (224-height,224-width) pixels
    image = cv2.resize(image, (224, 224), interpolation=cv2.INTER_AREA)

    # Show the image in a window
    cv2.imshow("Webcam Image", image)

    # Make the image a numpy array and reshape it to the models input shape.
    image = np.asarray(image, dtype=np.float32).reshape(1, 224, 224, 3)

    # Normalize the image array
    image = (image / 127.5) - 1

    # Predicts the model
    prediction = model.predict(image)
    index = np.argmax(prediction)
    class_name = class_names[index]
    confidence_score = prediction[0][index]

    # Print prediction and confidence score
    print("Class:", class_name[2:], end="")
    print("Confidence Score:", str(np.round(confidence_score * 100))[:-2], "%")

    # Listen to the keyboard for presses.
    keyboard_input = cv2.waitKey(1)

    # 27 is the ASCII for the esc key on your keyboard.
    if keyboard_input == 27:
        break

camera.release()
cv2.destroyAllWindows()

Também estou com os caminhos corretos para o Keras_models e Labels conforme mostra no código e por fim o erro que me mostra quando tento executar é esse aqui:

from tensorflow.python.framework import sparse_tensor as _sparse_tensor
  File "C:\Users\mf056\OneDrive\Área de Trabalho\IA 5° Semestre\.venv\lib\site-packages\tensorflow\python\framework\sparse_tensor.py", line 24, in <module>
    from tensorflow.python.framework import constant_op
  File "C:\Users\mf056\OneDrive\Área de Trabalho\IA 5° Semestre\.venv\lib\site-packages\tensorflow\python\framework\constant_op.py", line 25, in <module>
    from tensorflow.python.eager import execute
  File "C:\Users\mf056\OneDrive\Área de Trabalho\IA 5° Semestre\.venv\lib\site-packages\tensorflow\python\eager\execute.py", line 23, in <module>
    from tensorflow.python.framework import dtypes
  File "C:\Users\mf056\OneDrive\Área de Trabalho\IA 5° Semestre\.venv\lib\site-packages\tensorflow\python\framework\dtypes.py", line 34, in <module>
    _np_bfloat16 = _pywrap_bfloat16.TF_bfloat16_type()
TypeError: Unable to convert function return value to a Python type! The signature was
        () -> handle
2 respostas
solução!

O erro está acontecendo porque há conflito de versões entre o TensorFlow e outras bibliotecas, provavelmente o NumPy. O TensorFlow 2.x normalmente funciona bem com NumPy até 1.26, se estiver com NumPy 2.0 ou superior, vai quebrar.

Como solução rápida, eu testaria reinstalar os dois com versões compatíveis:

pip install tensorflow==2.15
pip install numpy==1.26.4
pip install --upgrade pip setuptools

Agora, como regra geral, eu te recomendaria utilizar ambientes virtuais (venv). Evita problemas de incompatibilidade de dependencias, que é bem comum se você instalar na sua máquina, diretamente.

Ei, Matheus! Tudo bom?

O erro pode estar sendo causado devido à incompatibilidade entre as versões do TensorFlow e do Python, que por sinal é mais recente.

Como sugestão, tente ajustar as versões. Por exemplo, teste usar uma mais antiga do Python ( 3.8 ou 3.9) e observe se funciona como esperado. Por ser versões mais estáveis para esta versão do TensorFlow, pode rodar sem problemas.

Conteúdo relacionado

Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

Até mais, Matheus!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!