python - 在 MLP 的情况下,张量流如何使用填充和遮罩层?
问题描述
我想使用 MLP 来解决回归问题。
我有可变长度的输入来解决这个问题我想使用Zero-padding和masking layer。
我使用pandas库从csv文件中读取输入。这是我的数据的样子。
我只知道如何使用此命令用 0 填充 NaN 值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 中的单个特征。在数学上,我们谈论的是矩阵乘法。您可以“忽略”的唯一维度是循环层中的时间维度,因为权重的数量不随时间维度缩放,因此单个层可以在时间维度中采用不同的大小。
如果您只使用密集层,则不能跳过任何内容,因为您唯一的维度(除了批量维度)直接与权重数量成比例。
推荐阅读
- c++ - 如何在 Qt 项目中指定 -W4 (Visual Studio)?
- django - 在 Django 视图中与线程共享会话
- android - 如何使用改造正确地制作可重用类来捕获响应数据?
- c++ - 如何在纳秒内制作 gprof 报告?
- ios - 我应该将底部工作表作为子视图添加到当前视图控制器还是推送一个添加了子视图的 UIWindow?
- python - pandas 中的行排序和子排序
- tensorflow - 是否可以在一个数据集上训练一个 CNN 并在另一个具有不同类别的数据集上对其进行测试?
- php - 如何将 Windows 的运行时库可移植地包含到二进制 PHP CLI
- terraform - 使用 terraform 添加 azure SQL 用户
- ios - 如何创建混合开发 pod