を適用:私ははtf.contrib.layers.convolution2d_transposeでモデルを復元することはできません、私は次のコードを使用してモデル復元しようとしている
new_saver = tf.train.import_meta_graph(model_path+'.meta')
new_saver.restore(sess, model_path)
g=tf.get_default_graph()
、元のグラフの各重みやバイアスのために、 g.get_tensrr_by_name()
。 しかし、私は以下のようなものであるdeconv2d
層上にこれを実行しようとしたとき:
def deconv2d(self,inputs, num_outputs, kernel_shape, g,scope,strides=[1, 1]):
with tf.variable_scope(scope) as scope:
weights_initializer = g.get_tensor_by_name("prsr/conditioning/deconv/Conv2d_transpose/weights:0")
biases_initializer = g.get_tensor_by_name("prsr/conditioning/deconv/Conv2d_transpose/biases:0")
return tf.contrib.layers.convolution2d_transpose(inputs=inputs, num_outputs=num_outputs,kernel_size=kernel_shape,stride=strides, \
padding='SAME', weights_initializer=weights_initializer,biases_initializer=biases_initializer)
それが次のエラー失敗したと示した。
File "restore.py", line 41, in deconv2d
padding='SAME', weights_initializer=weights_initializer,biases_initializer=biases_initializer)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 177, in func_with_args
return func(*args, **current_args)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1126, in convolution2d_transpose
outputs = layer.apply(inputs)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/layers/base.py", line 323, in apply
return self.__call__(inputs, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/layers/base.py", line 289, in __call__
self.build(input_shapes[0])
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/layers/convolutional.py", line 1043, in build
dtype=self.dtype)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 1033, in get_variable
use_resource=use_resource, custom_getter=custom_getter)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 932, in get_variable
use_resource=use_resource, custom_getter=custom_getter)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 349, in get_variable
validate_shape=validate_shape, use_resource=use_resource)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/layers/base.py", line 278, in variable_getter
variable_getter=functools.partial(getter, **kwargs))
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/layers/base.py", line 228, in _add_variable
trainable=trainable and self.trainable)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1327, in layer_variable_getter
return _model_variable_getter(getter, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1316, in _model_variable_getter
custom_getter=getter, use_resource=use_resource)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 177, in func_with_args
return func(*args, **current_args)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/framework/python/ops/variables.py", line 259, in model_variable
use_resource=use_resource)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 177, in func_with_args
return func(*args, **current_args)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/framework/python/ops/variables.py", line 214, in variable
use_resource=use_resource)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 341, in _true_getter
use_resource=use_resource)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/variable_scope.py", line 638, in _get_single_variable
raise ValueError("If initializer is a constant, do not specify shape.")
ValueError: If initializer is a constant, do not specify shape.
を私はこれが参照しているshape
分かりません私はweights_initializer
とbiases_initializer
が定数であるとは思わない、彼らはテンソル、右ですか?ちなみに、prsr/conditioning/deconv/Conv2d_transpose/weights
とprsr/conditioning/deconv/Conv2d_transpose/biasess
という2つのテンソルは、print_tensors_in_checkpoint_file
を使用してチェックしているので、元のグラフには存在していますが、実際にその値を見ることができます。
このtf.contrib.layers.convolution2d_transpose()
レイヤーを適用するモデルを復元するにはどうすればよいですか?私はstackoverflowとgithubの両方で多くを検索しましたが、何も機能しませんでした。どんな助けもありがとう。
ありがとうございます。私はあなたが言ったことを試みましたが、まだ働いていません。そして私がこれをした理由は、テンソルフローの計算グラフでノードの値を復元することに問題があったためです。このスクリーンショットをご覧ください。 [screenshot](https://www.dropbox.com/s/12n6wug39t39zoy/Screen%20Shot%202017-04-05%20at%206.09.10%20PM.png?dl=0)私はそれを復元しようとしていました。 "c_logits "node = g.get_tensor_by_name(" prsr/conditioning/conv/c_logits:0 ")'、 'sess.run(node)'のようになりますが、値は異なっています。 –
聖なる、すみません、何が起こっているのか分かりました。私は誤ったノードに入力を供給していました!今は完全に機能しています!ありがとうございました! –