2

我是张量流和深度神经网络的新手。我目前正在尝试使用自动编码器对轨迹进行异常检测,但我的模型有问题。

我无法获得正确的权重矩阵/不知道该怎么做。

这是我的模型:

  • 我的编码器的每个输入神经元都会收到一个具有 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。

你有什么想法吗?

在此先感谢您的帮助

4

0 回答 0