我想实现一个前馈神经网络,与我通常手动控制输入特征和第一个隐藏层神经元之间的对应关系的唯一区别 . 例如,在输入层I中具有特征f1,f2,...,f100,并且在第一隐藏层中我具有h1,h2,...,h10 . 我希望前10个功能f1-f10输入h1,f11-f20输入h2等 .
图形上,与常见的深度学习技术丢失不同,这是为了防止某些图层忽略过度拟合 randomly 忽略隐藏 nodes ,这里我想要的是 statically (fixed) 省略输入和隐藏之间的某些隐藏 edges .
我使用Tensorflow实现它,并没有找到指定此要求的方法 . 我也调查了其他平台,如pytourch和theano,但仍然没有得到答案 . 任何使用Python的实现的想法将不胜感激!
2 回答
拿下面的代码:
假设要素是您的输入要素,tf.slice它们被分割为单独的切片,每个切片在该点处是一个单独的图形(在此示例中它们与hidden_1和hidden_2相乘),最后它们与tf.concat合并在一起 .
结果是[1,2,6,8]因为[1,2]乘以[1,1]并且[2,3]乘以[2,2] .
以下是生成的图表:
我最终通过强制对应于第一层的权重矩阵的某些块为常数零来实现该要求 . 也就是说,我不是仅仅定义
w1 = tf.Variables(tf.random_normal([100,10]))
,而是定义十个10乘1的权重向量并将它们与零连接以形成块对角矩阵作为最终的w1 .