【问题标题】:How to make predictions on test image after training inception model from scratch on custom dataset? [closed]在自定义数据集上从头开始训练初始模型后,如何对测试图像进​​行预测? [关闭]
【发布时间】:2017-05-04 02:31:25
【问题描述】:

我刚刚在我的自定义数据集(1675 个训练图像,400 个验证图像,2 个类)上从头开始训练 inceptionv3:

  1. 我不知道如何使用我新训练的模型对测试图像进​​行预测。(模型的 label_image.py 指向哪里)

  2. 我新训练的模型保存在哪里?
    关注一些关于我的设置/运行的元数据:---

  3. 我在 train_dir 中生成了以下文件:

    • events.out.tfevents.1481980070.airig-Inspiron-7559(4.9GB)
    • graph.pbtxt(18.5MB)
    • 还有一堆model.ckpt-.meta和model.ckpt-.index文件

运行火车脚本后,我得到:-

....
INFO:tensorflow:Stopping Training.
INFO:tensorflow:Finished training! Saving model to disk.

运行 eval 脚本后我得到:--

.....
INFO:tensorflow:Evaluation [0/25]
INFO:tensorflow:Evaluation [1/25]
INFO:tensorflow:Evaluation [2/25]
INFO:tensorflow:Evaluation [3/25]
INFO:tensorflow:Evaluation [5/25]
INFO:tensorflow:Evaluation [5/25]
INFO:tensorflow:Evaluation [6/25]
INFO:tensorflow:Evaluation [7/25]
INFO:tensorflow:Evaluation [8/25]
INFO:tensorflow:Evaluation [9/25]
INFO:tensorflow:Evaluation [10/25]
INFO:tensorflow:Evaluation [11/25]
INFO:tensorflow:Evaluation [13/25]
INFO:tensorflow:Evaluation [13/25]
INFO:tensorflow:Evaluation [14/25]
INFO:tensorflow:Evaluation [15/25]
INFO:tensorflow:Evaluation [16/25]
INFO:tensorflow:Evaluation [17/25]
INFO:tensorflow:Evaluation [18/25]
INFO:tensorflow:Evaluation [19/25]
INFO:tensorflow:Evaluation [20/25]
INFO:tensorflow:Evaluation [21/25]
INFO:tensorflow:Evaluation [22/25]
INFO:tensorflow:Evaluation [23/25]
INFO:tensorflow:Evaluation [25/25]
I tensorflow/core/kernels/logging_ops.cc:79] eval/Recall@5[1]
I tensorflow/core/kernels/logging_ops.cc:79] eval/Accuracy[1]
INFO:tensorflow:Finished evaluation at 2016-12-19-03:59:04

【问题讨论】:

  • 能否请您指出您的训练脚本和训练命令?

标签: tensorflow machine-learning dataset


【解决方案1】:

我新训练的模型保存在哪里?

您的完整 TensorFlow 图(即所有变量、操作、集合等)保存在 .meta 文件中。 .cpkt 文件是一个检查点文件。该文件包含权重、偏差、梯度和所有其他变量的所有值。

我不知道如何使用我新训练的模型对测试图像进​​行预测。(模型的 label_image.py 指向哪里)

要恢复您训练的模型,请使用:

withth tf.Session() as sess:    
   saver = tf.train.import_meta_graph('my-model-1000.meta')
   saver.restore(sess,tf.train.latest_checkpoint('./'))

请注意,图层的名称已设置。例如:

out_layer = tf.layers.dense(inputs=layer_1, units=6, name='prediction')

现在您可以使用它进行预测:

sess.run(prediction, feed_dict)

其中 prediction 是网络最后一层的输出变量的名称。

【讨论】:

    【解决方案2】:

    一般情况:

    1. 模型保存为检查点文件 (model.ckpt)

    2. 您可以通过将模型的路径作为保护程序对象的参数与会话一起传递来加载模型:Saver.restore(sess, "path to you model.ckpt files")

    3. 因为你正在恢复模型,所以不要初始化全局变量,不要这样做:sess.run(tf.globale_variables_intializer().init())

    4. 恢复模型后,只需执行以下操作:Sess.run(prediction, feed-dict{your input image here})

    5. 既然你提到它是一个2类分类,5的输出应该是一个2维向量,例如[0.22331,-23.21]代表你的图像是哪个类的概率,所以你只需需要使用 numpy 运行,例如: np.argmax([0.22331,-23.21] ) 这将为您提供第一个元素的索引,因为第一个元素大于第二个元素,这意味着您的图像的可能性更高第一堂课。

    【讨论】:

      猜你喜欢
      • 2021-05-05
      • 2020-04-06
      • 2017-03-28
      • 2020-07-26
      • 2018-11-10
      • 2017-12-11
      • 1970-01-01
      • 2021-11-08
      • 2018-08-12
      相关资源
      最近更新 更多