Tensorflow Graph disconnected:无法获取层“处的tensor tensor()的值;输入“U 1”;

Tensorflow Graph disconnected:无法获取层“处的tensor tensor()的值;输入“U 1”;,tensorflow,keras,graph,neural-network,disconnected,Tensorflow,Keras,Graph,Neural Network,Disconnected,这个问题的代码相当复杂,因为我试图实现分形网,但将卷积基块更改为一个密集层。我试图分别构建两个分形网(一个接一个,所以我认为它们不应该相互干扰)。一个用于策略,一个用于值函数 到目前为止,我还看到了一些可能相关也可能无关的问题。一是我不能将numpy作为np导入并使用np,这就是我被迫使用numpy()的原因。另一个是,我的代码似乎试图同时在不同的部分处理张量tf.Tensor[stuff]以及Tensor[stuff]。下面的build_model函数从输入调用输出Tensor[stuff],

这个问题的代码相当复杂,因为我试图实现分形网,但将卷积基块更改为一个密集层。我试图分别构建两个分形网(一个接一个,所以我认为它们不应该相互干扰)。一个用于策略,一个用于值函数

到目前为止,我还看到了一些可能相关也可能无关的问题。一是我不能将numpy作为np导入并使用np,这就是我被迫使用numpy()的原因。另一个是,我的代码似乎试图同时在不同的部分处理张量
tf.Tensor[stuff]
以及
Tensor[stuff]
。下面的build_model函数从输入调用输出
Tensor[stuff]
,而神经网络生成器代码使用
tf.Tensor[stuff]
。我试着坚持打字,但没用

下面是一直终止代码的完整错误:

/home/ryan/.local/lib/python3.6/site-packages/keras/engine/network.py:190: UserWarning: Model inputs must come from `keras.layers.Input` (thus holding past layer metadata), they cannot be the output of a previous non-Input layer. Here, a tensor specified as input to your model was not an Input tensor, it was generated by layer activation_1.
Note that input tensors are instantiated via `tensor = keras.layers.Input(shape)`.
The tensor that caused the issue was: activation_1/Relu:0
  str(x.name))
Traceback (most recent call last):
  File "train.py", line 355, in <module>
    main(**vars(args))
  File "train.py", line 302, in main
    val_func = NNValueFunction(bl,c,layersizes,dropout,deepest,obs_dim) # Initialize the value function
  File "/home/ryan/trpo_fractalNN/trpo/value.py", line 37, in __init__
    self.model = self._build_model()
  File "/home/ryan/trpo_fractalNN/trpo/value.py", line 56, in _build_model
    model = Model(inputs=obs_input, outputs=outputs)
  File "/home/ryan/.local/lib/python3.6/site-packages/keras/legacy/interfaces.py", line 91, in wrapper
    return func(*args, **kwargs)
  File "/home/ryan/.local/lib/python3.6/site-packages/keras/engine/network.py", line 94, in __init__
    self._init_graph_network(*args, **kwargs)
  File "/home/ryan/.local/lib/python3.6/site-packages/keras/engine/network.py", line 241, in _init_graph_network
    self.inputs, self.outputs)
  File "/home/ryan/.local/lib/python3.6/site-packages/keras/engine/network.py", line 1511, in _map_graph_network
    str(layers_with_complete_input))
ValueError: Graph disconnected: cannot obtain value for tensor Tensor("input_1:0", shape=(None, 29), dtype=float32) at layer "input_1". The following previous layers were accessed without issue: []

我发现了这个问题。问题是,由于我试图合并多个文件,我接到了一个“密集”的电话,将obs_len调到所需的大小,然后将其插入到分形网代码中。然而,我没有意识到这会破坏一切。我通过删除最初的密集调用并将其放入fractalNet代码本身解决了这个问题


所以这个故事的寓意是,不要试图将NN层的不同部分分解成单独的文件。正如旁白所说,在当前的fractalNN代码中,它称为fractal_net,然后称为致密层,显然这仍然有效。但我认为,试图扭转这一顺序是不正确的。我希望这对其他人有所帮助。

我发现了这个问题。问题是,由于我试图合并多个文件,我接到了一个“密集”的电话,将obs_len调到所需的大小,然后将其插入到分形网代码中。然而,我没有意识到这会破坏一切。我通过删除最初的密集调用并将其放入fractalNet代码本身解决了这个问题


所以这个故事的寓意是,不要试图将NN层的不同部分分解成单独的文件。正如旁白所说,在当前的fractalNN代码中,它称为fractal_net,然后称为致密层,显然这仍然有效。但我认为,试图扭转这一顺序是不正确的。我希望这对其他人有所帮助。

所有文件的导入通常都是这样的。“”Patrick Coady编写的状态值函数(pat Coady.github.io)”“从keras导入keras导入模型从keras.layers导入输入,来自keras.optimizers从keras导入后端导入Adam作为K导入numpy作为np从fractalnet_regularNN导入*,有人知道在这个代码中是否有keras或tensorflow代码,我一直在修改它以适应这个代码,这个代码专门用作卷积代码,而不是常规的神经网络?因为我得到了一些其他的结果,这些结果似乎表明分形代码需要一个卷积的基本层,但我不确定这些是导入所有文件时通常的样子。”“Patrick Coady编写的状态值函数(pat Coady.github.io)”从keras导入keras从keras导入模型。层从keras导入输入,稠密从keras导入。优化器从keras导入后端导入Adam作为K导入numpy作为np从fractalnet_regularNN导入*同样,有人知道在这个代码中是否有keras或tensorflow代码,我一直在修改它以适应这个代码,这个代码专门用作卷积代码,而不是常规的神经网络?因为我得到了一些其他的结果,似乎表明分形代码需要一个卷积的基本层,但我不确定
def _build_model(self):
    """ Construct TensorFlow graph, including loss function, init op and train op """
    # hid1 layer size is 10x obs_dim, hid3 size is 10, and hid2 is geometric mean
    # hid3_units = 5  # 5 chosen empirically on 'Hopper-v1'
    # hid2_units = int(np.sqrt(hid1_units * hid3_units))
    # heuristic to set learning rate based on NN size (tuned on 'Hopper-v1')

    obs = keras.layers.Input(shape=(self.obs_dim,))
    # I'm not sure why it won't work with np??????????????????????????????????????????????????????????????????????????????????
    obs_input = Dense(int(self.layersizes[0][0].numpy()))(obs) # Initial fully-connected layer that brings obs number up to a len that will work with fractal architecture
    obs_input = Activation('relu')(obs_input)
    self.lr = 1e-2 / np.sqrt(self.layersizes[2][0])  # 1e-2 empirically determined
    print('Value Params -- lr: {:.3g}'
          .format(self.lr))
    outputs = fractal_net(self,bl=self.bl,c=self.c,layersizes=self.layersizes,
        drop_path=0.15,dropout=self.dropout,
        deepest=self.deepest)(obs_input)
    model = Model(inputs=obs_input, outputs=outputs)
    optimizer = Adam(self.lr)
    model.compile(optimizer=optimizer, loss='mse')



    return model