如何将 Scikit Learn 逻辑回归模型转换为 TensorFlow

数据挖掘 scikit-学习 张量流
2022-02-18 15:59:44

我想在BigQuery ML中使用现有的 Scikit Learn LogisticRegression 模型。但是,BQ ML 目前有 50 个唯一标签的硬性限制,我的模型需要处理更多。

BQ 接受TensorFlow 模型,似乎没有这个限制。

如何将现有的 Scikit 逻辑回归模型转换为 TensorFlow 模型?

1个回答

当然,这是 TF 2.0 中的骨架。

import tensorflow as tf

weights = tf.Variable(tf.random.normal(shape=(784, 10), dtype=tf.float64))
biases  = tf.Variable(tf.random.normal(shape=(10,), dtype=tf.float64))

def logistic_regression(x):
    lr = tf.add(tf.matmul(x, weights), biases)
    return lr

def cross_entropy(y_true, y_pred):
    y_true = tf.one_hot(y_true, 10)
    loss = tf.nn.softmax_cross_entropy_with_logits(labels=y_true, logits=y_pred)
    return tf.reduce_mean(loss)

def grad(x, y):
    with tf.GradientTape() as tape:
        y_pred = logistic_regression(x)
        loss_val = cross_entropy(y, y_pred)
    return tape.gradient(loss_val, [weights, biases])