Tensorflow-Вероятность.- Сохранение и восстановление контрольных точек для байесовской нейронной сети. - PullRequest
0 голосов
/ 12 февраля 2019

Я просматривал библиотеку вероятностей Tensorflow и пытался изменить пример в примере байесовской сети , надеясь, что смогу сохранить контрольные точки и затем восстановить их.Сначала я попытался использовать tf.train.Checkpoint, но, хотя я не получал никаких ошибок ни при сохранении, ни при восстановлении, похоже, не перезапускал тренировку с предыдущей контрольной точки, поскольку точность была совершенно другим значением.Затем я попытался использовать tf.keras.models.model.save, который снова сохраняет файл, но при попытке восстановить я получаю ошибку: ValueError: Неизвестный слой: Conv2DFlipout, когда он пытается десериализовать слой.Если честно, я не знаю, куда идти сейчас, если кто-то может указать мне правильное направление.Спасибо!Джованна

Это то, что я до сих пор должен восстановить:

 if FLAGS.architecture == "resnet":
    model_fn = bayesian_resnet.bayesian_resnet
else:
    model_fn = bayesian_vgg.bayesian_vgg

model = model_fn(
  IMAGE_SHAPE,
  num_classes=4,
  kernel_posterior_scale_mean=FLAGS.kernel_posterior_scale_mean,
  kernel_posterior_scale_constraint=FLAGS.kernel_posterior_scale_constraint)
print(images)

#check if saved checkpoint exists
exists = os.path.isfile(FLAGS.model_dir+"checkpoint.hdf5")
if exists:
  model = tf.keras.models.load_model(FLAGS.model_dir+"checkpoint.hdf5") 

logits = model(images)
labels_distribution = tfd.Categorical(logits=logits)

# Perform KL annealing. The optimal number of annealing steps
# depends on the dataset and architecture.
t = tf.Variable(0.0)
#kl_regularizer = t / (FLAGS.kl_annealing * len(x_train) / FLAGS.batch_size)
...
...