получить проверку не удалось: input_shapes.size () == model_flags- > input_arrays_size (), когда pb to tflite

Я понимаю, что этот вопрос старый, но я нашел несколько довольно приемлемое решение.

Успение:

Вы знаете все производные классы заранее (учитывая ваше редактирование, это true).

Trick:

Использование boost :: variant ( http://www.boost.org/doc/libs/1_57_0/doc/html/variant. html )

Примеры классов:

class Animal {
public:
    virtual void eat() = 0;
};

class Cat : public Animal {
    virtual void eat() final override {
        std::cout << "Mmh, tasty fish!" << std::endl;
    }
};

class Dog: public Animal {
    virtual void eat() final override {
        std::cout << "Mmh, tasty bone!" << std::endl;
    }
};

Пример варианта / посетитель:

typedef boost::variant AnimalVariant;

class AnimalVisitor : public boost::static_visitor {
public:
    Animal& operator()(Cat& a) const {
        return a;
    }

    Animal& operator()(Dog& a) const {
        return a;
    }
};

Пример использования:

std::vector list;
list.push_back(Dog());
list.emplace_back(Cat());

for(int i = 0; i < 5; i++) {
    for(auto& v : list) {
        Animal& a = v.apply_visitor(AnimalVisitor());
        a.eat();
    }
}

Пример вывода

Mmh, tasty bone!
Mmh, tasty fish!
Mmh, tasty bone!
Mmh, tasty fish!
Mmh, tasty bone!
Mmh, tasty fish!
Mmh, tasty bone!
Mmh, tasty fish!
Mmh, tasty bone!
Mmh, tasty fish!

0
задан Meister96Fels 18 January 2019 в 10:46
поделиться