Keras 如何将神经网络中每一层的输入按特定的比例增加?

Keras 如何将神经网络中每一层的输入按特定的比例增加?,keras,Keras,如何将神经网络中每一层的输入按特定的比例增加 我正在研究Keras和TensorFlow的神经网络 我想在神经网络中实现一些特性。在培训期间,我希望删除每个层的特定输入范围。比如说 假设第一层的输入范围为[-2]。我想确保[0.5]没有输入。所以我想给所有值为[0.5]的输入加上0.5 我怎么能这么做?在培训过程中 非常感谢您可以尝试Lambda函数。下面是一个示例实现。我希望这有帮助 import tensorflow as tf from tensorflow import keras f

如何将神经网络中每一层的输入按特定的比例增加

我正在研究Keras和TensorFlow的神经网络

我想在神经网络中实现一些特性。在培训期间,我希望删除每个层的特定输入范围。比如说

假设第一层的输入范围为[-2]。我想确保[0.5]没有输入。所以我想给所有值为[0.5]的输入加上0.5

我怎么能这么做?在培训过程中


非常感谢

您可以尝试Lambda函数。下面是一个示例实现。我希望这有帮助

import tensorflow as tf
from tensorflow import keras

from tensorflow.keras import layers
import numpy as np

def myClippingFunction(x):
    y = tf.math.logical_and(tf.math.greater_equal(x, [[0]]), tf.math.less_equal(x, [[0.5]]) )
    z = tf.where(y,x+0.5,x)
    return z

#create simple model
inputA = layers.Input((1,)) 
x = layers.Lambda(myClippingFunction)(inputA)
myModel = keras.Model(inputs=inputA, outputs=x)


x_data = np.array([[-0.2],[0.6]])
myModel.predict(x_data)

只是好奇,为什么要修改图层的值?这有点难以解释。我正在进行软硬件协同设计。硬件部分我做不到,因为我不能改变物理。我想也许我可以在软件方面做点什么,让我的生活更轻松。非常感谢你的回复。这很有帮助。但是,我正在考虑将此功能作为Keras中的一个额外层。它弹出一个错误:ValueError:试图将“x”转换为张量,但失败了。错误:不支持任何值。class mylayer(层):def uu init uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,initializer='uniform',trainable=True)super(my,self)。build(input_shape)def call(self,x):为我的愚蠢问题感到抱歉,我对Keras和tensorflow不太熟悉。我在回调时做些什么吗?