Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对tf/keras网络功能的质疑_Python_Tensorflow_Keras_Regression_Data Science - Fatal编程技术网

Python 对tf/keras网络功能的质疑

Python 对tf/keras网络功能的质疑,python,tensorflow,keras,regression,data-science,Python,Tensorflow,Keras,Regression,Data Science,我正在研究分位数回归,我有一些问题要理解下面的网络是如何工作的: z = tf.keras.layers.Input((len(features),), name="Patient") x = tf.keras.layers.Dense(100, activation="relu", name="d1")(z) x = tf.keras.layers.Dense(100, activation="rel

我正在研究分位数回归,我有一些问题要理解下面的网络是如何工作的:

    z = tf.keras.layers.Input((len(features),), name="Patient")
    x = tf.keras.layers.Dense(100, activation="relu", name="d1")(z)
    x = tf.keras.layers.Dense(100, activation="relu", name="d2")(x)
    
    p1 = tf.keras.layers.Dense(3, activation="relu", name="p1")(x)
    p2 = tf.keras.layers.Dense(3, activation="relu", name="p2")(x)
    preds = tf.keras.layers.Lambda(lambda x: x[0] + tf.cumsum(x[1], axis=1),
                                   name="preds")([p1, p2])
    
    model = tf.keras.Model(z, preds)
特别是,当使用Lambda时,我不理解最后一层“preds”:我知道Lambda函数在python中如何工作,但我不理解Lambda层如何结合输入张量。我希望有人能帮助我理解这一点。 在Kaggle竞赛“osic肺纤维化进展”中,网络被大量用于笔记本电脑

行中:

preds = tf.keras.layers.Lambda(lambda x: x[0] + tf.cumsum(x[1], axis=1),
                               name="preds")([p1, p2])
Lambda层的输入是
[p1,p2]
。所以
x=[p1,p2]
。因此
x[0]=p1
x[1]=p2

因此,它执行的操作是
x[0]+tf.cumsum(x[1],轴=1)
,即
p1+tf.cumsum(p2,轴=1)
。你可以 关于
tf.cumsum()
函数,请参阅


希望这能消除你的疑虑。如果您还有其他问题,请随时发表评论。

您能澄清您的问题吗?理解Python中的lambda函数有困难吗?或者你有没有关于Keras的问题?你得到了意想不到的结果吗?您提供的示例的上下文是什么?你是从什么地方抄来的吗?@tomanizer我刚刚修改了帖子:)。主要的问题是我不明白输入张量是如何组合的谢谢!在你们的回答之后我还有一个问题:因为输入张量形状是(批量大小,p1/p2的尺寸),所以求和中的轴是1?如果是这样,该层的结果就是p1+p2的累积和?为什么很多人使用这个解决方案而不直接预测回归的结果?p1、p2和pred的形状都是(批次大小,3)(3,因为密集层)。是的,该层的结果只是p1+p2的累积和的总和,但要将其用作keras模型,需要将其添加到lambda层中。可能是模型需要使用cumsum()。与使用Conv2D的图像一样,对于文本,您使用LSTM、GRU等。因此,对于使用回归/稠密直接预测,您需要两个额外的稠密层,因此在不知道使用模型的原因的情况下简化了任务,无法解释为什么在那里使用模型