ValueError:在给定提供的输出Tensor的情况下,无法达到找到的输入Tensor,请确保TensorKerasTensor

irtuqstp  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(165)

ValueError:在给定提供的输出Tensor的情况下,无法达到找到的输入Tensor。请确保在构建功能模型时,将TensorKerasTensor(type_spec=TensorSpec(shape=(None,128,128,3),dtype=tf.float32,name ='Sec_data'),name ='Sec_data',description=“由层'Sec_data'创建”)包括在模型输入中。
ValueError Traceback(最近调用最后)/Users/zhhh/AstrocyteSegmentation-1/train.ipynb〈cell line:中的单元格3 1〉()----〉1 GESU_网络列车()
194 print(“正在加载数据”)--〉195 model = self.get_gesunet()197 model_checkpoint =模型检查点(“Model_GESU.hdf5”,监视器=“丢失”,verbose=1,保存_best_only=True)198 print(“正在拟合模型...”)
(conv 10 t)174 conv 10 t = Conv 2D(1,1,激活=“S形”)(conv 10 t)--〉176模型B =模型(输入=输入T,输出= conv 10 t)179输出1 =模型A(输入)180输出=模型B(输出1)
文件/usr/local/lib/python3.9/site-packages/tensorflow/python/training/tracking/base.py:587,在没有自动依赖跟踪的情况下.._方法 Package 器(self,*args,**kwargs)585 self._self_setattr_tracking = False # pylint:禁用=受保护访问586尝试:--〉587 result =方法(self,*args,**kwargs)588最后:589自我.自我设置属性跟踪=上一个值# pylint:禁用=受保护访问
文件/usr/local/lib/python3.9/site-packages/keras/engine/functional.py:147,在函数中.init(自我,输入,输出,名称,可训练,**kwargs)144如果tf.compat.v1.执行外部函数:145如果不是全部([functional_utils.is_input_keras_tensor(t)146用于tf中t.嵌套.展平(输入)]):--〉147个输入,输出=功能实用程序.克隆图节点(输入,输出)148个自定义.初始化图网络(输入,输出)
文件/usr/local/lib/python3.9/site-packages/keras/engine/functional_utils.py:146,在克隆图节点(输入,输出)中128定义克隆图节点(输入,输出):这个函数用于从任何中间(...)创建一个新的功能模型。144创建一个新的功能模型。145“"“--〉146 nodes_to_clone = find_nodes_by_inputs_and_outputs(输入、输出和节点)输出)147克隆的输入= [] 148克隆的输出= []
File /usr/local/lib/python3.9/site-packages/keras/engine/functional_utils.py:113,in find_nodes_by_inputs_and_outputs(inputs,outputs)108 #如果这是tf.keras.Input节点,我们已经到达了上游节点的109 #跟踪的结尾。任何进一步的跟踪都将是一个110 #无限循环。我们应该在这里引发一个错误,因为我们在用户指定的输入中没有找到111 #输入。112 if inbound_node.is_input:--〉113 raise ValueError('Found input tensor cannot reached given provided ' 114 'output tensor.请确保在构建' 116 '功能模型时,Tensor{}是包含在模型输入中的' 115 '。'. format(kt))117 nodes_to_visit.append(inbound_node)119 #执行最后检查,并确保我们已到达所有用户指定的输入
ValueError:在给定提供的输出Tensor的情况下,无法达到找到的输入Tensor。请确保在构建功能模型时,将TensorKerasTensor(type_spec=TensorSpec(shape=(None,128,128,3),dtype=tf.float32,name ='Sec_data'),name ='Sec_data',description=“由层'Sec_data'创建”)包括在模型输入中。

u91tlkcl

u91tlkcl1#

我没有答案,但我可以包含足够的代码来显示我是如何遇到这个错误的,因为OP似乎忽略了这个问题。

price_sheet_in = tf.keras.Input(shape=(MAX_PACKAGES, 2 * N_PRODUCTS + 1), name="price_sheet_in")
    job_inputs = tf.keras.Input(shape=(103), name="job_in")
    studio_inputs = tf.keras.Input(shape=(15), name="studio_in")
    # non_hist_model is a sales prediction for this job without factoring in this user's history
    this_job_estimate = non_hist_model([price_sheet_in, job_inputs, studio_inputs])
    hist_price_sheets = tf.keras.Input(shape=(HIST_JOB_COUNT, MAX_PACKAGES, 2 * N_PRODUCTS + 1),
                                       name="hist_price_sheets")
    hist_job_inputs = tf.keras.Input(shape=(HIST_JOB_COUNT, 103), name="hist_job_in")
    hist_revenues = tf.keras.Input(shape=(HIST_JOB_COUNT), name="hist_revenues_in")
    expanded_studio_input = tf.keras.layers.RepeatVector(HIST_JOB_COUNT, name="studio_repeat")(studio_inputs)

    flatish_hist_price_sheets = tf.keras.layers.Reshape((HIST_JOB_COUNT, MAX_PACKAGES * (2 * N_PRODUCTS + 1)),
                                                        name="flattenish")(hist_price_sheets)
    # stupid_non_hist_model is a version of non_hist_model that takes a flattened input as required by TimeDistributed
    hist_estimates = tf.keras.layers.TimeDistributed(
        stupid_non_hist_model, name="hist_predictions"
    )([flatish_hist_price_sheets, hist_job_inputs, expanded_studio_input])
    hist_estimates = tf.keras.layers.Flatten()(hist_estimates)
    # get a percent error for each estimate
    hist_comparisons = tf.keras.layers.Subtract(name="hist_pred_minus_true")([hist_estimates, hist_revenues])
    hist_revenues = tf.math.add(hist_revenues, tf.keras.backend.epsilon())
    hist_comparisons = tf.math.divide(hist_comparisons, hist_revenues)
    hist_mod = tf.keras.layers.Dense(1, name="hist_mod", activation="softplus")(hist_comparisons)
    out = tf.keras.layers.Multiply()([hist_mod, this_job_estimate])
    model = tf.keras.Model(inputs=[price_sheet_in, job_inputs, studio_inputs,
                                   hist_price_sheets, hist_job_inputs, hist_revenues],
                           outputs=[out], name="full_model")

hist_revenue是给我带来误差的输入。这个模型使用了一个子模型,它接受一些输入并预测输出。当使用IRL时,我们有特定用户的历史数据,所以我试图根据子模型的预测和地面真实值之间的差异创建某种修改器,用于后续的预测。
这个错误似乎暗示输出不依赖于输入,但这并不是真的。任何帮助都非常感谢。
编辑:我立即自己修复了它。问题是如果变量是一个keras输入,你就不能重用变量名。

hist_revenues = tf.keras.Input(shape=(HIST_JOB_COUNT), name="hist_revenues_in")
hist_revenues = tf.math.add(hist_revenues, tf.keras.backend.epsilon())

变成了

hist_revenues = tf.keras.Input(shape=(HIST_JOB_COUNT), name="hist_revenues_in")
nonzero_hist_revenues = tf.math.add(hist_revenues, tf.keras.backend.epsilon())

并且问题被解决。

相关问题