nすべての入力に対してプレースホルダを持つネットワークがあり、それらをすべて共通の入力として別のプレースホルダ(後で作成)にリンクしたい。プレースホルダをテンソルフローの共通入力にグループ化する
class GroupOfNetworks(object):
def __init__(self,subtask_nets,ob_space):
self.x_inputs = [st_net.x for st_net in subtask_nets] #list of network inputs
ここで、st_net.x
は、次のように宣言されたプレースホルダです。
class Network(object):
def __init__(self, ob_space):
self.x = tf.placeholder(tf.float32, [None] + list(ob_space)) `#single network input
私は唯一の私feed_dict
に1つのキーと値のペアを持っている必要がありますので、これらのネットワークのすべてに単一の共通の入力を持っているしたいと思います。私はプレースホルダ(以下のコードスニペット)に代入演算を試みましたが、テンソルで変数ではないので、これはエラーをスローします。今まで
#in class GroupOfNetworks...
common_x = tf.placeholder(tf.float32, [None] + list(ob_space),"common_input")
set_input = tf.assign(self.x_inputs[0].x,common_x,"link_subtask_input") # DOES NOT WORK
私は、プログラム生成feed_dict
を使用した(下記参照)が、これはグラフ上ではなく、.meta
ファイルからグラフのロード中にインポートすることができません。
def make_common_feed_dict(self,x):
return {placeholder:x for placeholder in self.x_inputs}
もっと良い解決方法を知っている人はいますか?
はい、これは、 'Network'オブジェクトを単独で実行する必要がなく、変更することができれば機能します。 'Network'オブジェクトを変更することができず、プレースホルダへの参照のみを使用するケースを処理する方法があれば、あなたは気付いていますか? – yokian