Jump to content
Compvision.ru
Sign in to follow this  
Pechkin80

Преобразование модели из hdf5(Keras) в protobuf(Tensorflow)

Recommended Posts

Добрый день столкнулся с проблемой при попытки преобразования моделей

Ошибка не гуглиться и моих скромных знаний явно не хватает чтобы понять в чём дело.

Вот собственно скрипт (юпитер ноутбук):

import tensorflow as tf
from tensorflow.python.tools import freeze_graph
from tensorflow.python.tools import optimize_for_inference_lib
from keras.models import load_model 
from keras import backend as K
from keras.losses import binary_crossentropy

SMOOTH = 1.

def dice_coef(y_true, y_pred):
    global SMOOTH
    y_true_f = K.flatten(y_true)
    y_pred_f = K.flatten(y_pred)
    intersection = K.sum(y_true_f * y_pred_f)
    return (2. * intersection + SMOOTH) / (K.sum(y_true_f) + K.sum(y_pred_f) + SMOOTH)

def bce_dice_loss(y_true, y_pred):
    return 0.5 * binary_crossentropy(y_true, y_pred) - dice_coef(y_true, y_pred)



custom_objects = {'bce_dice_loss': bce_dice_loss, 'dice_coef':dice_coef}
model = load_model('road_lane.hdf5', custom_objects=custom_objects)

export_path = './out'

with tf.keras.backend.get_session() as sess:
    tf.saved_model.simple_save(
        sess,
        export_path,
        inputs={'input': model.input},
        outputs={'output': model.output})
Цитата
Цитата

 

 

Ошибка вот такая:

 

Цитата

FailedPreconditionError: Attempting to use uninitialized value training/Adam/Variable_50 [[{{node training/Adam/Variable_50}}]] [[{{node training/Adam/Variable_66}}]] During handling of the above exception, another exception occurred:

В чём может быть дело ?

И я заранее предвижу ещё одну ошибку так как версия protobuf для tensorflow из pip и для плюсов разная.

converter_h5_to_pb2.ipynb

Share this post


Link to post
Share on other sites

Проблема вроде решена:

init_op = tf.initialize_all_variables()
with tf.keras.backend.get_session() as sess:
    sess.run(init_op)
    tf.saved_model.simple_save(
        sess,
        export_path,
        inputs={'input': model.input},
        outputs={'output': model.output})
 

Share this post


Link to post
Share on other sites

Скрипт заморозки модельки, на всякий случай. Keras2pb.py

Share this post


Link to post
Share on other sites
В 9/1/2019 at 11:06, Smorodov сказал:

Скрипт заморозки модельки, на всякий случай. Keras2pb.py

Ага спасибо, только щас про него вспомнил. Он как раз с заморозкой.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×