Python 基于WALS方法的tensorflow2.0中的矩阵分解
我使用WALS方法来执行矩阵分解。最初在tensorflow 1.13中,我可以使用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
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兼容的独立库工作)降低了此任务的优先级
如果您开始编写代码,请告诉我们。谢谢
亚历克西斯。我也有同样的问题,但不幸的是,我自己没有时间编写库。我正在考虑几种可能的选择:
我也有同样的问题,但不幸的是我自己没有时间写一个库。我正在考虑几种可能的选择:
我相信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