我有一个内置在keras,tensorflow 2.0中的模型,我想强制它最后一层的第一个输出为零。我该怎么做呢?
下面是我建立的模型和我对这个过程的尝试:
import tensorflow as tf
X = Input(shape=(32,))
Y = Dense(256, activation= 'relu', kernel_initializer=ini)(X)
下面是我尝试做的。我尝试创建另一个图层,它的所有值都是零,除了第一个值,这类似于图层Y的输出
def zeros_assign(Y):
a = tf.zeros(256,)
aa = aa[0].assign[-Y[0]]
out = aa + Y
return out
Y_out = Lambda(lambda x: channel(x))(Y)
但是当我运行该层时,它会给予出如下错误:TypeError:“Functional”对象不支持项赋值
1条答案
按热度按时间des4xlb01#
下面是一个解决方案,其中BlockFirstNode层传递来自上一层的所有输出,除了第一个被阻塞的节点(设置为0)。这是由Snoopy博士建议的乘以零。
代码示例:
在这里我们可以看到,除了第一个节点被强制为零之外,所有输出都与之前的层相同。
现在按照萨贾德的要求,对任意n个阻塞进行运算。