【发布时间】:2019-08-02 05:24:10
【问题描述】:
我想将三个不同格式的输入(例如,一个是数字,一个是一个热编码数组,另一个是嵌入问题)传入我的 Keras 函数模型并得到一个数字(回归问题)。我过去只使用过顺序模型,所以我很难理解它是如何工作的。
这是我当前的模型架构(input_a 是一个热门,input_b 是一个从 0 到 1 的数字,input_c 是另一个热门,大小不同):
但是,我不确定这是否是我的模型应该按照我的意图进行格式化的“正确”方式。因为当我将第三个输入更改为嵌入输入时,Keras 抱怨输入形状不正确。该数据集应该是一个整数数组,所以我将input_size 设置为 1,但嵌入层说它得到了一个 129 大小的数组。这是我在它上面的密集层的长度,所以我认为它接收的是密集层的输出而不是我的输入。
这是我的模型格式相同,但嵌入(失败):
input_a = Input(shape=genres.shape[1:], name='input_a')
x = Dense(128, activation='relu')(input_a)
output_a = Dense(128, activation='relu')(x)
input_b = Input(shape=(1,), name='input_b')
x = keras.layers.concatenate([output_a, input_b])
x = Dense(128, activation='relu')(x)
output_b = Dense(128, activation='relu')(x)
input_c = Input(shape=(1,), name='input_c')
x = keras.layers.concatenate([output_b, input_c])
x = Embedding(max(directors) + 1, 16, input_length=1)(x)
x = Flatten()(x)
x = Dense(128, activation='relu')(x)
x = Dense(128, activation='relu')(x)
output_c = Dense(1)(x)
model = Model(inputs=[input_a, input_b, input_c], outputs=output_c)
但我得到"input_length" is 1, but received input has shape (None, 129)
如何让input_c 接收实际的第三个输入,而不是上述层的输出?
【问题讨论】:
-
您将连接的输出传递给嵌入层,这是不正确的。
input_c代表董事吗?如果是这样,那么只需将其直接传递给嵌入层。