Neural network 如何在tensorflow.js中创建自己的层

Neural network 如何在tensorflow.js中创建自己的层,neural-network,tensorflow.js,Neural Network,Tensorflow.js,我是tensorflow.js的新手,我想知道您是否能够创建一个如下所示的神经网络: 到目前为止,我只看到了密集层(tf.layers.dense),但我不知道是否可能/如何创建这个输入层 一个完全连接的神经网络,也称为密集层,可以用来表示上述结构。实际上,在完全连接的情况下,输入和输出之间的关系是线性的WX+b,这意味着如果对于某些W值,权重为0,则输入的某些值与隐藏层的某些节点之间将没有连接 当以这种方式定义网络架构时,可以初始化神经网络的权重: const model=tf.seque

我是tensorflow.js的新手,我想知道您是否能够创建一个如下所示的神经网络:


到目前为止,我只看到了密集层(tf.layers.dense),但我不知道是否可能/如何创建这个输入层

一个完全连接的神经网络,也称为密集层,可以用来表示上述结构。实际上,在完全连接的情况下,输入和输出之间的关系是线性的
WX+b
,这意味着如果对于某些W值,权重为0,则输入的某些值与隐藏层的某些节点之间将没有连接

当以这种方式定义网络架构时,可以初始化神经网络的权重:

const model=tf.sequential()
const kernel=tf.eye(3).expandDims(-1).最小值(tf.ones([3,2])).转置([0,2,1]).重塑([6,3]))
kernel.print()
add(tf.layers.dense({inputShape:[6],单位:3,权重:[kernel],useBias:false}))
add(tf.layers.dense({units:8}))
model.add(tf.layers.dense({units:2}))

如果要使用变量匹配条目进行预测,可以使用LSTM

因为几乎所有的输入都是相同的“性质”,我个人会让模型之间的权重共享

const model = tf.sequential()
model.add(tf.layers.timeDistributed({
   layer: tf.layers.dense({units: 4}),
   inputShape: [3, 2],
}));
model.add(tf.layers.flatten())
model.add(tf.layers.dense({units: 8}))
model.add(tf.layers.dense({units: 2}))
但得出了与我的评论类似的结论。您将在更深的层中融合匹配项,但它们将继续合并。我认为没有必要使用传统的MLP以外的网络。当您需要简化问题或限制问题时(例如,视频中帧的重要性。首先使用稠密时间分布提取特征,然后使用稠密时间分布融合特征),这种限制非常有趣

这些解决方案的问题在于匹配顺序确实很重要,为了避免此问题,您可以使用此体系结构(fuse使用sum):


通过创建这样的体系结构,您试图实现什么?我不希望它将属于其他两个输入的两个输入混为一谈。这有意义吗?或者也可以使用密集层吗?我认为你可以通过密集层实现你想要的。但是你能显示你有什么样的输入和你在等待什么样的响应吗?输入应该是足球比赛的结果,输出应该是下一场足球比赛的结果。这是预测足球结果即使你没有在第一层使用完全连接的,你也会继续混合数据。你真正感兴趣的是从中得到一个预测。您可以在第一层完美地使用fc,您唯一要做的就是“之前”混合数据。
const model = tf.sequential()
model.add(tf.layers.timeDistributed({
   layer: tf.layers.dense({units: 4}),
   inputShape: [3, 2],
}));

model.add(tf.layers.sum(0))
model.add(tf.layers.dense({units: 8}))
model.add(tf.layers.dense({units: 2}))