es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Carga el modelo hdf5 con Chaquopy en Android Studio.

Mi amigo tiene entrenado un modelo hdf5 llamado train 1, quiero cargar ese modelo en Android Studio con chaquopy, pero fallé a pesar de intentar muchas formas.
Mi código es así, incluye pickle y keras:

import numpy as np
import pickle
from os.path import dirname, join
from keras.models import load_model

def predict(src):
    filename = join(dirname(__file__),"best_model.hdf5")
    pickle_in = open(filename,"rb")
    #model = pickle.load(pickle_in) carga con pickle
    model = load_model(filename)    #carga con keras
    samples, sample_rate = librosa.load(src, sr=8000)
    #classes = ['app', 'gmail', 'image', 'mess', 'phone']
    #prob = model.predict(samples.reshape(1,8000,1))
    #index = np.argmax(prob[0])
    return len(samples)

Con pickle, aparece el error “invalid load key, ‘H'”. Con load_model de keras, aparece el error “ValueError: Unknown layer: Functional”. He intentado cambiar la versión de keras y tensorflow pero el error persiste.
Estoy utilizando Python 3.9 y cuando instalo tensorflow 2.6.0, obtengo el error “error: could not find a version that satisfies the requirement tensorflow==2.6.0 (from versions: 2.1.0)”. ¿Cómo debo cargar este modelo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Android con Chaquopy, aquí están mis recomendaciones para cargar un modelo hdf5 de entrenamiento 1 en Android Studio con Chaquopy:

    1. Utilice la última versión de Keras y TensorFlow que sean compatibles entre sí. Puede verificar la compatibilidad de las versiones en el sitio web de TensorFlow o en el sitio web de Keras.
    2. Una vez que haya instalado las versiones compatibles tanto de Keras como de TensorFlow, intente utilizar el siguiente código:

    import numpy as np
    import pickle
    from os.path import dirname, join
    from tensorflow.keras.models import load_model
    
    def predict(src):
        filename = join(dirname(__file__),"best_model.hdf5")
        model = load_model(filename)
        samples, sample_rate = librosa.load(src, sr = 8000)
        #classes = ['app', 'gmail', 'image', 'mess', 'phone']
        #prob=model.predict(samples.reshape(1,8000,1))
        #index=np.argmax(prob[0])
        return len(samples)
    
    1. Si el código anterior no funciona, intente utilizar el siguiente código:
    import numpy as np
    import pickle
    from os.path import dirname, join
    from tensorflow.keras.models import model_from_json
    
    def predict(src):
        filename = "best_model"
        json_file = open(filename+'.json', 'r')
        loaded_model_json = json_file.read()
        json_file.close()
        model = model_from_json(loaded_model_json)
        model.load_weights(filename+".h5")
        samples, sample_rate = librosa.load(src, sr = 8000)
        #classes = ['app', 'gmail', 'image', 'mess', 'phone']
        #prob=model.predict(samples.reshape(1,8000,1))
        #index=np.argmax(prob[0])
        return len(samples)
    
    1. Si aún enfrenta el problema, asegúrese de haber incluido todas las dependencias y bibliotecas necesarias en su proyecto de Android Studio.

    Espero que esto le ayude a cargar correctamente su modelo hdf5 de entrenamiento 1 en Android Studio con Chaquopy.

Comments are closed.