Python 基于WALS方法的tensorflow2.0中的矩阵分解

Python 基于WALS方法的tensorflow2.0中的矩阵分解,python,tensorflow,tensorflow2.0,matrix-factorization,Python,Tensorflow,Tensorflow2.0,Matrix Factorization,我使用WALS方法来执行矩阵分解。最初在tensorflow 1.13中,我可以使用 from tensorflow.contrib.factorization.python.ops import factorization_ops 如中所述 Wals模型可以通过使用 factorization_ops.WALSModel 在tensorflow 2.0中使用相同的命令时出现以下错误 ModuleNotFoundError:没有名为“tensorflow.contrib.Factoriat

我使用WALS方法来执行矩阵分解。最初在tensorflow 1.13中,我可以使用

from tensorflow.contrib.factorization.python.ops import factorization_ops 
如中所述

Wals模型可以通过使用

factorization_ops.WALSModel
在tensorflow 2.0中使用相同的命令时出现以下错误

ModuleNotFoundError:没有名为“tensorflow.contrib.Factoriation”的模块

在tensorflow 2.0+中使用WALSModel似乎没有出路

tensorflow发布更新中还提到,tf.contrib已被弃用,功能已迁移到核心tensorflow API、生态系统项目(如tensorflow/addons或tensorflow/io)或完全删除


如何在tensorflow 2.0中使用WALS模型(目前我在windows机器上使用2.0.0-rc0)?WALSModel是被删除了还是我遗漏了一些信息?

我想WALS已经被删除了。作为
tf.contrib
的一部分,TF2不支持它,我认为它不适合任何核心或子项目。 您最好的选择可能是将其作为第三方库提供

我希望在我的项目中使用它,但重新编写它的需要(主要是复制TF1中的内容,并使其作为与TF2兼容的独立库工作)降低了此任务的优先级

如果您开始编写代码,请告诉我们。谢谢


亚历克西斯。

我想沃尔斯已经被移除了。作为
tf.contrib
的一部分,TF2不支持它,我认为它不适合任何核心或子项目。 您最好的选择可能是将其作为第三方库提供

我希望在我的项目中使用它,但重新编写它的需要(主要是复制TF1中的内容,并使其作为与TF2兼容的独立库工作)降低了此任务的优先级

如果您开始编写代码,请告诉我们。谢谢


亚历克西斯。

我也有同样的问题,但不幸的是,我自己没有时间编写库。我正在考虑几种可能的选择:

  • 坚持使用TF1.X,直到有人创建了一个库

  • 切换到使用lightfm以继续使用WALS

  • 切换到神经协同过滤,使用keras嵌入层和点积层。请参阅本文和此代码实现:


  • 我也有同样的问题,但不幸的是我自己没有时间写一个库。我正在考虑几种可能的选择:

  • 坚持使用TF1.X,直到有人创建了一个库

  • 切换到使用lightfm以继续使用WALS

  • 切换到神经协同过滤,使用keras嵌入层和点积层。请参阅本文和此代码实现:


  • 我相信TF2.0中不支持WALS…官方推荐模型是

    我希望这有帮助


    M

    我认为TF2.0不支持WAL…官方推荐模型是

    我希望这有帮助


    M

    我将WALS的Tensorflow实现与其他实现在计算资源和精度方面进行了比较()。比较表明隐式Python包()是一个很好的替代品,它提供了优异的性能。

    我已经将WALS的Tensorflow实现与其他实现在计算资源和准确性方面进行了比较()。比较表明隐式Python包()是一个很好的替代品,它提供了优异的性能。

    谢谢这在另一方面会有帮助:)谢谢这在另一方面会有帮助:)是的,我正在考虑写这篇文章,以防他们会停止使用,因为我已经在TF1.13中部署了一篇。有一个相同的错误打开。等待他们最后的声明。看来我们意见一致。你想合作吗?是的,我想写这篇文章,以防他们会停止合作,因为我已经在TF1.13中部署了一个。有一个相同的错误打开。等待他们最后的声明。看来我们意见一致。你想合作吗?
    from tensorflow.keras.layers import Input, Embedding, Flatten, Dot, Dense
    from tensorflow.keras.models import Model
    #import tensorflow.distribute
    
    def get_compiled_model(n_users, n_items, embedding_dims=20):
        # Product embedding
        prod_input = Input(shape=[1], name="Item-Input")
        prod_embedding = Embedding(n_items+1, embedding_dims, name="Item-Embedding")(prod_input)
        prod_vec = Flatten(name="Flatten-Product")(prod_embedding)
    
        # User embedding
        user_input = Input(shape=[1], name="User-Input")
        user_embedding = Embedding(n_users+1, embedding_dims, name="User-Embedding")(user_input)
        user_vec = Flatten(name="Flatten-Users")(user_embedding)
    
        # The output is the dot product of the two, i.e. a one-hot vector
        dot_product = Dot(name="Dot-Product", axes=1)([prod_vec, user_vec])
    
        # compile - uncomment these two lines to make training distributed
        # dist_strat = distribute.Strategy()
        # with dist_strat.scope():
        model = Model(inputs = [user_input, prod_input], outputs = dot_product)
        model.compile(
            optimizer='adam',
            loss='mean_squared_error'
        )
        return model