微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法只激活张量流中几个神经元中的一个特定神经元?

如何解决有没有办法只激活张量流中几个神经元中的一个特定神经元?

我正在尝试创建一个看起来像这样的设计:

enter image description here

现在,我正在尝试使用以下代码,但我需要的是第二层隐藏层的输出,该输出位于下一层的第15个位置。就我而言,它是使用此代码添加到第31位的。

inputs = Input(shape=(30,),name='first_input')
hn = Dense(4,activation='relu')(inputs)
output = Dense(1,activation='linear')(hn)

first_model = Model(inputs=inputs,outputs=output)

second_input = Input(shape=(30,name='second_input')

from_first_model = first_model.output

merge_layer = concatenate([second_input,from_first_model ])
hn = Dense(4,activation="relu")(merge_layer)
dnn_op_layer = Dense(1,activation='linear')(hn)
  
model_b = Model(inputs=[second_input,first_model.input],outputs=dnn_op_layer)

解决方法

这应该工作-将张量切成两部分,然后将两部分与第二个隐藏层的输出连接起来。

test = tf.convert_to_tensor(np.random.rand(30),dtype=tf.float32)
test2 = tf.convert_to_tensor([100],dtype=tf.float32)
# create layer 3 as desired
temp,temp2 = test[:15],test[15:]
layer3 = tf.concat([temp,test2,temp2],axis=0)

edit-您遇到的错误可能是使用功能性api引起的。另外,前面的示例假定输入的形状为(30,),而实际上输入的形状应为(1,30),以与张量流一致。

class model(tf.keras.Model):
    def __init__(self):
        super().__init__()
        self.hidden1 = tf.keras.layers.Dense(4,activation='relu')
        self.hidden2 = tf.keras.layers.Dense(1)
        self.hidden4 = tf.keras.layers.Dense(4,activation='relu')
        self.hidden5 = tf.keras.layers.Dense(1)

    def call(self,inputs):
        x = self.hidden1(inputs)
        x = self.hidden2(x)
        temp,temp2 = inputs[:,:15],inputs[:,15:]
        layer3 = tf.concat([temp,x,axis=1)
        x = self.hidden4(layer3)
        x = self.hidden5(x)
        return x

# test
mymodel = model()
inputs = tf.convert_to_tensor(np.random.rand(1,30),dtype=tf.float32)
mymodel(inputs)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。