【发布时间】:2019-02-28 07:32:22
【问题描述】:
让我们考虑一个包含 6 列和 10 行的示例数据集。
在这 3 列中是数字,其余 3 列是分类变量。
分类列被转换为大小为 10x3 的多热编码数组。
我有我想要预测的目标列也是分类变量,它可以再次取 3 个可能的值。此列是一个热编码。
现在我想使用这个多热编码数组作为嵌入层的输入。嵌入层应输出 2 个单元。
然后我想使用数据集中的 3 个数字列和嵌入层的 2 个输出单元,总共 5 个单元作为隐藏层的输入。
这是我被困住的地方。我不知道如何使用 tensorflow keras 桥接嵌入层和我的其他特征列,也不知道如何为嵌入层和其他 2 个单元传递输入。
我已经用谷歌搜索过了。我尝试了以下代码,但仍然出现错误。 我猜 tf.keras 包中没有 Merge 层。
对此的任何帮助将不胜感激。
import tensorflow as tf
from tensorflow import keras
import numpy as np
num_data = np.random.random(size=(10,3))
multi_hot_encode_data = np.random.randint(0,2, 30).reshape(10,3)
target = np.eye(3)[np.random.randint(0,3, 10)]
model = keras.Sequential()
model.add(keras.layers.Embedding(input_dim=multi_hot_encode_data.shape[1], output_dim=2))
model.add(keras.layers.Dense(3, activation=tf.nn.relu, input_shape=(num_data.shape[1],)))
model.add(keras.layers.Dense(3, activation=tf.nn.softmax)
model.compile(optimizer=tf.train.RMSPropOptimizer(0.01),
loss=keras.losses.categorical_crossentropy,
metrics=[keras.metrics.categorical_accuracy])
#model.fit([multi_hot_encode_data, num_data], target) # I get error here
我的网络结构将是
multi-hot-encode-input num_data_input
| |
| |
| |
embedding_layer |
| |
| |
\ /
\ /
dense_hidden_layer
|
|
output_layer
【问题讨论】:
-
您尝试将它们连接起来吗?
-
@PMende 嗨.. 不确定连接是如何工作的。但我试过了,我又遇到了无效的语法错误。请在这里举个例子。
-
有谁知道上面的代码如何使用 tf.keras.Concatenate。
标签: python tensorflow keras