神经网络可以学习充当多路复用器吗?

假设我的输入是A和B。这些输入大致是这样的, A = [10、5、30、2],可以具有[1,100]范围内的任意值 B = [0,1,0,0],它是一个热向量。 预期输出C = = [5],它是两个输入向量C = A.B

的点积

类似地,对于A = [10,5,30,2]和B = [0,0,1,0],输出将为C = [30]。

本质上,我希望神经网络充当4路多路复用器(https://en.wikipedia.org/wiki/Multiplexer)。

我已经实现了具有两个隐藏层的神经网络。尽管它适用于训练数据,但无法对此进行概括。

对于神经网络来说,存在这个问题的根本原因吗?

jsjloveqx 回答:神经网络可以学习充当多路复用器吗?

根据通用逼近定理,具有单个隐藏层的完全连接的神经网络可以“实际上”是通用逼近器(考虑到一系列条件和考虑因素)。

更多信息在这里:https://en.wikipedia.org/wiki/Universal_approximation_theorem

是的,网络确实可以近似一个多路复用器。您必须考虑一些因素。也许您可以尝试对输入数据进行标准化或标准化(不同规模的输入数据可能会破坏网络学习过程),您可以在此处找到一些信息:

https://stats.stackexchange.com/questions/10289/whats-the-difference-between-normalization-and-standardization

另外,看看您的输入空间,您有100 ^ 4乘以4个可能的输入(大约4 x 10 ^ 8,基于此,您必须考虑训练数据的大小,因为有数千个示例由于数据非常分散(培训样本中的示例与验证数据中的示例可能会大不相同),因此不会成功。

,

基本上,您正在寻找A.T * B(以数字表示)。胡安的答案是对是错。神经网络不进行交互(只需检查数学),因此该公式没有“自然”的表示形式。但是,如果您的架构非常复杂,则可以将其近似

没有神经网络,只有裸露的Tf,它只是tf.math.reduce_sum(A * B)

示例:

>>> A = tf.constant([10,5,30,2])                                                                                             
>>> B = tf.constant([0,1,0]) 
>>> with  tf.Session() as sess: print(tf.math.reduce_sum(A * B).eval())
5
本文链接:https://www.f2er.com/3155543.html

大家都在问