我已经阅读了类似的问题,但是即使我尝试了几种方法,答案也对我不起作用。这是我搜索并在此处尝试的一些问题:
或
我将解释我的代码。 数据集是1500万行,具有4个维度,代表一天的device_id位置。 我有两种类型的数据:数字数据和分类日期。分类数据非常庞大(超过400万个不同的device_id),因此我不能使用一个热编码器,因为它会创建令人难以置信的巨大稀疏矩阵。我确实将Tensorflow嵌入用于分类数据。 我确实使用了功能模型,并将分类层和数字层合并为一个。神经网络的目标是预测将来的device_id位置。 我将先截取一部分数据,然后编写代码和代码
device_id seconds latitude longitude
jg4M/taYRc2cBJPGa8c7vw== 752 53.392060 -2.069796
jg4M/taYRc2cBJPGa8c8vw== 753 53.392060 -2.069796
PdhyfpkIT8Weslb54thwuQ== 754 51.496483 0.116620
我将设备ID放入一个熊猫系列中,并转换为张量
data1000 = data1['device_id']
data_tf = tf.convert_to_tensor(data1000)
sess = tf.InteractiveSession()
print(data_tf.eval())
sess.close()
我对每个数字列(长,纬度和秒)进行了相同的操作。 由于现在具有维度(1,),但是嵌入层将添加另一个维度,即输出维度,那么分类层将变为(none,1,1)我确实将数值数据重塑为(1,1) 我这样做是为了使数字层和分类层合并时它们可以具有相同的形状。我知道这是因为它会引发错误。 这是此代码。由于过程相同,我将仅显示纬度代码,并假设其对经度和秒数具有解释性。
data1_lat = data1['latitude']
type(data1_sec)
pandas.core.series.Series
data1_lat.values.reshape(15904370,1)
data_tf_lat = tf.convert_to_tensor(data1_lat)
sess = tf.InteractiveSession()
print(data_tf_lat.eval())
sess.close()
现在我们去神经网络
data_tf_lat = Input(shape=(1,1))
data_tf_long = Input(shape=(1,1))
data_tf_sec = Input(shape=(1,1))
cat_in = Input(shape=(1,))
embed_layer = Embedding(input_dim=1, output_dim=1, input_length=(len_data1000))(cat_in)
#embed_layer = Flatten(embed_layer)
merged_layer = concatenate([embed_layer,data_tf_lat,data_tf_long,data_tf_sec])
output = LSTM(128)(merged_layer)
output = Dense(10)(output)
output = Dense(1)
model = Model(inputs=[data_tf_lat,data_tf_long,data_tf_sec, cat_in], outputs=[output])
ValueError: Output tensors to a Model must be the output of a Keras `Layer` (thus holding past layer metadata). Found: <keras.layers.core.Dense object at 0x7ff04499db38>
任何帮助 我尝试了在这里和其他地方找到的几种方法,但是找不到解决方案? 谢谢