Gui*_*ido 6 python conv-neural-network tensorflow tensorflow-estimator
假设我已经训练了Tensorflow Estimator:
estimator = tf.contrib.learn.Estimator(
model_fn=model_fn,
model_dir=MODEL_DIR,
config=some_config)
Run Code Online (Sandbox Code Playgroud)
我适合一些火车数据:
estimator.fit(input_fn=input_fn_train, steps=None)
Run Code Online (Sandbox Code Playgroud)
我的想法是模型适合我的MODEL_DIR.此文件夹包含一个检查站和几个文件.meta和.index.
这非常有效.我想用我的函数做一些预测:
estimator = tf.contrib.Estimator(
model_fn=model_fn,
model_dir=MODEL_DIR,
config=some_config)
predictions = estimator.predict(input_fn=input_fn_test)
Run Code Online (Sandbox Code Playgroud)
我的解决方案完美无缺,但有一个很大的缺点:你需要知道model_fn,这是我在Python中定义的模型.但是,如果我通过在Python代码中添加密集层来更改模型,则此模型对于MODEL_DIR中保存的数据不正确,从而导致不正确的结果:
NotFoundError (see above for traceback): Key xxxx/dense/kernel not found in checkpoint
Run Code Online (Sandbox Code Playgroud)
我该如何应对?如何加载我的模型/估算器,以便我可以对一些新数据进行预测?如何从MODEL_DIR加载model_fn或估算器?
仅当模型和检查点兼容时,从检查点恢复模型的状态才有效。例如,假设您训练了一个DNNClassifier包含两个隐藏层的估计器,每个隐藏层有 10 个节点:
classifier = tf.estimator.DNNClassifier(
feature_columns=feature_columns,
hidden_units=[10, 10],
n_classes=3,
model_dir='models/iris')
classifier.train(
input_fn=lambda:train_input_fn(train_x, train_y, batch_size=100),
steps=200)
Run Code Online (Sandbox Code Playgroud)
训练后(因此,在 中创建检查点后models/iris),假设您将每个隐藏层中的神经元数量从 10 更改为 20,然后尝试重新训练模型:
classifier2 = tf.estimator.DNNClassifier(
feature_columns=my_feature_columns,
hidden_units=[20, 20], # Change the number of neurons in the model.
n_classes=3,
model_dir='models/iris')
classifier.train(
input_fn=lambda:train_input_fn(train_x, train_y, batch_size=100),
steps=200)
Run Code Online (Sandbox Code Playgroud)
由于检查点中的状态与 中描述的模型不兼容classifier2,因此重新训练失败并出现以下错误:
...
InvalidArgumentError (see above for traceback): tensor_name =
dnn/hiddenlayer_1/bias/t_0/Adagrad; shape in shape_and_slice spec [10]
does not match the shape stored in checkpoint: [20]
Run Code Online (Sandbox Code Playgroud)
要运行训练和比较略有不同的模型版本的实验,请保存创建每个版本的代码的副本model_dir,可能通过为每个版本创建单独的 git 分支来保存。这种分离将使您的检查点保持可恢复性。
从张量流检查点文档复制。
https://www.tensorflow.org/get_started/checkpoints
希望可以帮助你。
| 归档时间: |
|
| 查看次数: |
1035 次 |
| 最近记录: |