每个输入神经元一个矢量的Tensorflow自动编码器

每个输入神经元一个矢量的Tensorflow自动编码器,tensorflow,neural-network,deep-learning,autoencoder,anomaly-detection,Tensorflow,Neural Network,Deep Learning,Autoencoder,Anomaly Detection,我不熟悉tensorflow和深层神经网络。 我目前正在尝试使用自动编码器对轨迹进行异常检测,我的模型有问题 我无法得到正确的权重矩阵/不确定如何做 这是我的模型: 我的编码器的每个输入神经元接收一个具有4个特征的向量(该向量对应于作为我轨迹一部分的观察值) 输入神经元的数量对应于观察的数量(289) 我总共有336条轨迹与我的批次对应 因此,我的输入数据形状类似于(336289,4) 我有两个隐藏层;在每一个神经元上,我们将先前神经元的数量除以2,因此对于h1我们有144个神经元和h2

我不熟悉tensorflow和深层神经网络。 我目前正在尝试使用自动编码器对轨迹进行异常检测,我的模型有问题

我无法得到正确的权重矩阵/不确定如何做

这是我的模型:

  • 我的编码器的每个输入神经元接收一个具有4个特征的向量(该向量对应于作为我轨迹一部分的观察值)
  • 输入神经元的数量对应于观察的数量(289)
  • 我总共有336条轨迹与我的批次对应
因此,我的输入数据形状类似于(336289,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 ])),
}
我的激活函数是一个S形函数

tf.nn.sigmoid(tf.add(tf.matmul(weights['encoder_h1'],x),
                                   biases['encoder_b1'])
但我担心这会给出一个按轨迹的wheight矩阵,或者我想要的是所有轨迹的权重矩阵,它应该是一个2d张量,但我不知道如何继续。

我试过很多方法,比如从我的体重模型中去掉336部分,但是tensorflow说在3d和2d tensor上做matmul是不可能的

你知道怎么做吗

提前谢谢你的帮助