2017-01-07 7 views
0

Я добавляю самоопределяемые операционные системы и используя ResourceMgr для создания дочернего класса ResourceBase, чтобы сохранить определенный статус и как записать статус в файл контрольной точки.Как сохранить и восстановить ResourceBase?

class FeatureTransformMap : public ResourceBase { 
public: 
    FeatureTransformMap(int32_t max_feature_count) : max_feature_count_(max_feature_count), feature_index_(0) { 
     cout<<"Max feature count is:"<<max_feature_count_<<endl; 
    } 
    string DebugString() {return "FeatureTransformMap";} 

    int32_t GetFeatureIndex(const string& feature) { 
     { 
      mutex_lock l(mu_); 
      feature_index_ += 1; 
     } 
     return feature_index_; 
    } 



private: 
    tensorflow::mutex mu_; 
    uint32_t feature_index_ GUARDED_BY(mu_); 
    const uint32_t max_feature_count_; 
}; 

как в коде выше, как я могу написать feature_index_ для файлов контрольных точек.

ответ

1

Там нет универсального способа сохранить tensorflow::ResourceBase экземпляр, но вы можете реализовать свою собственную поддержку контрольных точек следующим образом:

  1. Определение методов на вашем FeatureTransformMap класса, сериализовать состояние карты к и преобразовали это от одного или нескольких объектов tensorflow::Tensor. Например, см. MutableHashTableOfScalars::ExportValues() и MutableHashTableOfScalars::ImportValues().

  2. Внесите новые классы TensorFlow OpKernel, которые вызывают методы сериализации и десериализации. Например, см. LookupTableExportOp и LookupTableImportOp.

  3. В Python реализуем подкласс BaseSaverBuilder.SaveableObject для вашего ресурса, который включает в себя вызовы ваших новых операций. Например, см. MutableDenseHashTable._Saveable.

  4. В Python, когда вы создаете экземпляр вашего ресурса, добавьте его в коллекцию tf.GraphKeys.SAVEABLE_OBJECTS. Например, посмотрите, как это делается для MutableDenseHashTablehere.

Смежные вопросы