我看到如果输入列不是浮点值,我的 keras 模型不能很好地处理它们。我希望能够使用包含“标签”的列来训练模型,标签是指排序的 ID,或编码的字符串名称。理想情况下,它将能够将这些标签列集成到其模型中,从而决定这些分类列中的哪些值表示更高的准确性。
例如,我正在尝试预测比赛的结果(Win=1,Loss=0),我想在历史数据中包含“团队名称”和“教练名称”。理想情况下,该模型将确定哪些球队和教练更有可能获胜。
但是,当我运行model.fit
并且 training_set 包含除 int/float 值以外的任何值(本质上是统计的,而不是分类的)时,它会为每个 epoch 生成相同的准确度,并具有非常高的损失分数。
这是我定义模型的方式:
model = keras.Sequential([
keras.layers.Dense(1024, activation=tf.nn.relu, kernel_initializer=init_ru, bias_initializer=init_ru),
keras.layers.Dense(512, activation=tf.nn.relu, kernel_initializer=init_ru, bias_initializer=init_ru),
keras.layers.Dense(256, activation=tf.nn.relu),
keras.layers.Dense(128, activation=tf.nn.relu),
keras.layers.Dense(32, activation=tf.nn.relu),
keras.layers.Dense(1, activation=tf.nn.sigmoid)
])
opt = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=True)
model.compile(optimizer=opt,
loss='binary_crossentropy',
metrics=['accuracy'])
如果我不包含任何分类数据,它会很好用,但我认为如果我能让它与分类数据一起工作,它会改进得更多。