我是张量流和深度神经网络的新手。我目前正在尝试使用自动编码器对轨迹进行异常检测,但我的模型有问题。
我无法获得正确的权重矩阵/不知道该怎么做。
这是我的模型:
- 我的编码器的每个输入神经元都会收到一个具有 4 个特征的向量(这个向量对应于一个观察,它是我轨迹的一部分)。
- 输入神经元的数量对应于观察的数量(即 289)。
- 我总共有 336 条轨迹对应于我的批次
因此我的输入数据形状就像 (336,289,4)
- 我有两个隐藏层;在每一个上,我们将前面神经元的数量除以 2,因此对于h1,我们有144 个神经元,而h2 有 72 个神经元
对于我的体重,我有:
weights = {
'encoder_h1': tf.Variable(tf.random_normal([336, n_hidden_1, 289])),
'encoder_h2': tf.Variable(tf.random_normal([336, n_hidden_2, n_hidden_1])),
'decoder_h1': tf.Variable(tf.random_normal([336, n_hidden_1, n_hidden_2])),
'decoder_h2': tf.Variable(tf.random_normal([336, n_input, n_hidden_1 ])),
}
我的激活函数是一个 sigmoid
tf.nn.sigmoid(tf.add(tf.matmul(weights['encoder_h1'],x),
biases['encoder_b1'])
但我担心这会通过轨迹给出一个重量矩阵,或者我想要的是我所有轨迹的权重矩阵,它应该是一个二维张量,但我不知道如何进行。
我尝试了很多事情,例如从我的体重形状中删除 336 部分,但 tensorflow 说它不可能在 3d 和 2d 张量上做 matmul。
你有什么想法吗?
在此先感谢您的帮助