我想使用 MLP 来解决回归问题。
我有可变长度的输入来解决这个问题,我想使用带有遮罩层的零填充。
我使用pandas库从csv文件中读取输入。以下是我的数据。
我只知道如何使用此命令用 0 填充 NaN 值x_train.fillna(0.0).values
x_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 中的单个特征。从数学上讲,我们谈论的是矩阵乘法。您唯一可以“忽略”的维度是循环层中的时间维度,因为权重的数量不会随时间维度而变化,因此单个层在时间维度上可以采用不同的大小。
如果您仅使用 Dense 层,则您无法跳过任何内容,因为您的唯一维度(除了批量维度)直接与权重数量成比例。