【问题标题】:Conditional in keras model based on input data / features基于输入数据/特征的keras模型中的条件
【发布时间】:2022-12-13 08:23:33
【问题描述】:

我有一个 keras 模型,我想接受两个输入特征,每个特征都将通过其自己的嵌入层和密集层进行编码。然后将这两个特征相加以创建最终输出。

数据集:

row1 -> {x1: 'tag', x2: null, y: 'y1'}
row2 -> {x1: null, x2: 'long text field', y: 'y2'}

没有行同时包含 x1x2,因此模型中编码每个特征的部分需要看到空值并返回一个零向量。

对于长文本字段,我没有使用自己的模型,而是使用预训练的 LM,这意味着我无法添加特殊标记来返回全零——标记器和嵌入是固定的。

我将如何在模型中添加一个条件,当数据为零时将跳过该层并返回零,从而允许我将两个塔的输出相加。

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    我对此有一个 hacky 修复...

    我正在读取 '' 的输入,所以模型类中的空字符串,并添加了一个自定义调用来屏蔽值:

    def call(self, inputs):
        outputs = self.model(inputs)
        boolean_mask = tf.equal(inputs, tf.constant(''))
        boolean_mask = tf.reshape(boolean_mask, [-1, 1])
        zeros = tf.zeros_like(outputs)
        return tf.where(boolean_mask, zeros, outputs)
    

    我认为有更好的方法并且很乐意听到它!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 2018-11-18
      • 2018-10-16
      • 2015-06-21
      • 1970-01-01
      • 2019-06-22
      • 1970-01-01
      相关资源
      最近更新 更多