Python 张量流在MLP情况下如何使用填充层和掩蔽层?

Python 张量流在MLP情况下如何使用填充层和掩蔽层?,python,pandas,tensorflow,masking,zero-padding,Python,Pandas,Tensorflow,Masking,Zero Padding,我想用MLPs来解决回归问题 我有可变长度的输入来解决这个问题,我想使用零填充和掩蔽层 我使用pandas库从csv文件读取输入。下面是我的数据的样子 我只知道如何使用此命令x\u train.fillna(0.0).values 像第一行一样: [4, 0, 0, 512, 1.0, 0.0, 1.0, 0.0, 128.0 , NaN] 填充后: [4, 0, 0, 512, 1.0, 0.0, 1.0, 0.0, 128.0 , 0.0] 面具应该是这样的: [1, 1, 1, 1,

我想用MLPs来解决回归问题

我有可变长度的输入来解决这个问题,我想使用零填充掩蔽层

我使用pandas库从csv文件读取输入。下面是我的数据的样子

我只知道如何使用此命令
x\u train.fillna(0.0).values

像第一行一样:

[4, 0, 0, 512, 1.0, 0.0, 1.0, 0.0, 128.0 , NaN]
填充后:

[4, 0, 0, 512, 1.0, 0.0, 1.0, 0.0, 128.0 , 0.0]
面具应该是这样的:

[1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
但我不知道如何添加遮罩层并将它们输入我的MLP

如果我有固定的输入长度。我的程序将如下所示

...
n_input = 10 #number og inputs

train_X = pd.read_csv('x_train.csv')
train_Y = pd.read_csv('y_train.csv')


X = tf.placeholder("float", [None, n_input])
Y = tf.placeholder("float", [None, n_output])

...
y_pred = multilayer_perceptron(X)
...

with tf.Session() as sess:
    sess.run(init)

            _, c = sess.run([train, loss], feed_dict={X: train_X,
                                                      Y: train_Y})
          ...

我不知道如何将零填充和屏蔽层结合起来?

您不能忽略MLP中的一个功能。从数学上讲,我们谈论的是矩阵乘法。唯一可以“忽略”的维度是重复层中的时间维度,因为权重的数量不随时间维度缩放,因此单个层可以在时间维度中采用不同的大小


如果您只使用密集层,您不能跳过任何内容,因为您的唯一维度(除了批次维度)直接与权重数量成比例。

谢谢@dennis ec您的答案非常精确。我想补充一下:

我们可以忽略给定功能的所有时间步长。这在具有LSTM的KERA中得到支持,但不支持密集层(我们不能忽略MLP中的单个功能)


我们可以使用填充(零填充或指定要使用的值,例如-1)来满足要求,并查看性能

之后你想对掩码和填充向量做什么?@gorjan,我有可变长度的输入,所以为了解决这个问题,我用填充将NaN值填充为零,我想用掩码忽略填充向量。你现在说的非常重要。请让我们讨论一下fb:。我真的想省去所有关于填充和掩蔽概念的模糊之处。谢谢。请你回答。我会照我们讨论的做。见下面的答案。