【发布时间】:2020-11-10 00:12:01
【问题描述】:
对于我最近的工作,我必须针对给定的非线性问题尝试不同的机器学习模型。我使用 TensorFlow 和 Keras 构建了逻辑回归和神经网络的工作版本。现在我必须为同样的问题构建一个 SVM 分类器。由于我在 TensorFlow 中找不到有效的 SVM 估计器,因此我正在考虑使用 scikit-learn 代替。在我的前两个模型中,我使用 tf.feature_column 来预处理我的数据(bucketized_column、embedding_column、crossed_column 等)。由于这种预处理有点复杂并且效果很好,我想知道是否可以将 TensorFlow 预处理与 scikit-learn 结合使用。
这有可能吗?或者我可以在 TensorFlow 中以某种方式使用 scikit-learn(类似于 Keras),所以我也可以使用 TensorBoard 来分析我的结果?
这里是我代码中相关部分的概述:
(feature_columns, train_ds, val_ds, test_ds) = preprocessing.getPreProcessedData(args.data, args.zip, args.batchSize)
在模型模块中,我使用此函数调用来获取预处理数据。 feature_columns 是 tf.feature_column 的不同类型映射的数组。 train_ds 等是 TensorFlow 数据集。
借助数组 feature_columns 创建 DenseFeature:
feature_layer = tf.keras.layers.DenseFeatures(feature_columns, trainable=False)
利用预处理构建 Keras 模型:
model = tf.keras.models.Sequential([
feature_layer,
tf.keras.layers.Dense(1, activation=tf.nn.sigmoid)
])
模型的拟合:
model.fit(train_ds,
validation_data=val_ds,
epochs=args.epoch,
callbacks=[tensorboard_callback])
【问题讨论】:
-
您能解释一下您创建的模型中的
feature_layer是什么吗?只要格式正确且有效,TensorFlow 或 Keras 就不会创建您创建数据的方式。所以,假设train_ds是所需的格式,应该没问题。假设您在创建模型时传递了正确的输入形状 -
感谢您的回答!我忘了首先添加这一行(现在我已经编辑了问题)。如您现在所见,它是
tensorflow.python.feature_column.dense_features_v2.DenseFeatures类的对象。
标签: python tensorflow machine-learning keras scikit-learn