一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TensorFlow Recommenders開源軟件包可簡化構(gòu)建、評估和應(yīng)用推薦模型

Tensorflowers ? 來源:TensorFlow ? 作者:Maciej Kula 和 James ? 2020-10-21 10:54 ? 次閱讀

文 /Maciej Kula 和 James Chen,Google Brain

推薦系統(tǒng)是機(jī)器學(xué)習(xí)的一大主要應(yīng)用,能夠根據(jù)用戶偏好推送相關(guān)內(nèi)容,比如推薦電影、餐廳、搭配時裝首飾或篩選媒體信息流等。

Google 過去幾年一直在探索新的深度學(xué)習(xí)技術(shù),力求通過結(jié)合多任務(wù)學(xué)習(xí)、強(qiáng)化學(xué)習(xí)、提取更好的用戶表征和構(gòu)建公平性指標(biāo)提供更好的推薦。這些努力和其他方面的進(jìn)展大幅改善了我們的推薦效果。

今天,我們榮幸地推出 TensorFlow Recommenders (TFRS),這款開源 TensorFlow 軟件包可簡化構(gòu)建、評估和應(yīng)用復(fù)雜的推薦模型。

TensorFlow Recommenders (TFRS)
https://tensorflow.google.cn/recommenders

TFRS 使用 TensorFlow 2.x 構(gòu)建,有助于:

構(gòu)建和評估靈活的Candidate Nomination Model;

將條目、用戶和上下文信息自由整合到推薦模型;

訓(xùn)練可聯(lián)合優(yōu)化多個推薦目標(biāo)的多任務(wù)模型;

用 TensorFlow Serving 高效利用生成的模型。

TFRS 基于 TensorFlow 2.x 和 Keras,十分易于上手,在采用模塊化設(shè)計(jì)的同時(您可以自定義每個層和評價指標(biāo)),仍然組成了一個強(qiáng)有力的整體(各個組件可以良好協(xié)作)。在 TFRS 的設(shè)計(jì)過程中,我們一直強(qiáng)調(diào)靈活性和易用性:合理的默認(rèn)設(shè)置、直觀易行的常見任務(wù)以及更復(fù)雜或自定義的推薦任務(wù)。

TensorFlow Recommenders 現(xiàn)已在 GitHub 上開源。我們的目標(biāo)是讓其不斷發(fā)展,能夠靈活地進(jìn)行學(xué)術(shù)研究,并以高度可擴(kuò)展的方式構(gòu)建全網(wǎng)推薦系統(tǒng)。我們還計(jì)劃在多任務(wù)學(xué)習(xí)、特征交叉建模、自監(jiān)督學(xué)習(xí)和最前沿 (SOTA)近似最鄰近計(jì)算方面擴(kuò)展其功能。

GitHub
https://github.com/tensorflow/recommenders

示例:構(gòu)建電影推薦工具

讓我們先用一個簡單示例展現(xiàn) TensorFlow Recommenders 的使用方法。首先,使用 pip 安裝 TFRS:

!pip install tensorflow_recommenders

然后,我們可以使用 MovieLens 數(shù)據(jù)集訓(xùn)練一個簡單的電影推薦模型。數(shù)據(jù)集所含信息包括用戶觀看了哪些電影以及用戶對該電影的評分。

我們將使用這一數(shù)據(jù)集構(gòu)建模型,預(yù)測用戶已觀看和未觀看的電影。此類任務(wù)通常選擇雙塔模型:一個具有兩個子模型的神經(jīng)網(wǎng)絡(luò),分別學(xué)習(xí) query 和 candidate 的表征。給定的query-candidate 對的得分 (score) 只是這兩個塔的輸出的點(diǎn)積。

這個模型架構(gòu)相當(dāng)靈活。query 塔的輸入可以是:用戶 ID、搜索關(guān)鍵詞或時間戳;對于 candidate 側(cè)則有:電影片名、描述、梗概、主演名單。

在此示例中,我們在 query 塔僅使用用戶 ID,在 candidate 塔僅使用電影片名。

我們先來準(zhǔn)備數(shù)據(jù)。數(shù)據(jù)可從 TensorFlow Datasets 獲取。

import tensorflow as tf import tensorflow_datasets as tfds import tensorflow_recommenders as tfrs

# Ratings data. ratings = tfds.load("movie_lens/100k-ratings", split="train") # Features of all the available movies. movies = tfds.load("movie_lens/100k-movies", split="train")

在數(shù)據(jù)集的所有可用特征中,最實(shí)用的是用戶 ID 和電影片名。雖然 TFRS 有多種可選特征,但為簡單起見,我們只使用這兩項(xiàng)。

ratings = ratings.map(lambda x: { "movie_title": x["movie_title"], "user_id": x["user_id"], }) movies = movies.map(lambda x: x["movie_title"])

只使用用戶 ID 和電影片名時,我們簡單的雙塔模型與典型的矩陣分解模型非常相似。我們需要使用以下內(nèi)容進(jìn)行構(gòu)建:

一個用戶塔,將用戶 ID 轉(zhuǎn)換為用戶 embedding 向量(高維向量表示)。

一個電影塔,將電影片名轉(zhuǎn)換為電影 embedding 向量。

一個損失函數(shù),對于觀看行為,最大化預(yù)測用戶與電影的匹配度,而未觀看的行為進(jìn)行最小化。

TFRS 和 Keras 為實(shí)現(xiàn)這一目標(biāo)提供了大量基本模塊。我們可以從創(chuàng)建模型類開始。在__init__方法中,我們設(shè)置一些超參數(shù)以及模型的主要組件。

class TwoTowerMovielensModel(tfrs.Model): """MovieLens prediction model.""" def __init__(self): # The `__init__` method sets up the model architecture. super().__init__() # How large the representation vectors are for inputs: larger vectors make # for a more expressive model but may cause over-fitting. embedding_dim = 32 num_unique_users = 1000 num_unique_movies = 1700 eval_batch_size = 128

第一個主要組件是用戶模型:一組描述如何將原始用戶特征轉(zhuǎn)換為數(shù)字化用戶表征的層。我們在這里使用 Keras 預(yù)處理層將用戶 ID 轉(zhuǎn)換為整數(shù)索引,然后將其映射到學(xué)習(xí)的 embedding 向量:

# Set up user and movie representations. self.user_model = tf.keras.Sequential([ # We first turn the raw user ids into contiguous integers by looking them # up in a vocabulary. tf.keras.layers.experimental.preprocessing.StringLookup( max_tokens=num_unique_users), # We then map the result into embedding vectors. tf.keras.layers.Embedding(num_unique_users, embedding_dim) ])

電影模型看起來很相似,能夠?qū)㈦娪捌D(zhuǎn)換為 embedding 向量:

self.movie_model = tf.keras.Sequential([ tf.keras.layers.experimental.preprocessing.StringLookup( max_tokens=num_unique_movies), tf.keras.layers.Embedding(num_unique_movies, embedding_dim) ])

得到用戶和電影模型后,就需要定義我們的目標(biāo)和它的評估指標(biāo)了。在 TFRS 中,可以通過 Retrieval任務(wù)完成這一點(diǎn)(使用 in-batch softmax loss):

# The `Task` objects has two purposes: (1) it computes the loss and (2) # keeps track of metrics. self.task = tfrs.tasks.Retrieval( # In this case, our metrics are top-k metrics: given a user and a known # watched movie, how highly would the model rank the true movie out of # all possible movies? metrics=tfrs.metrics.FactorizedTopK( candidates=movies.batch(eval_batch_size).map(self.movie_model) ) )

我們使用 compute_loss方法查看模型的訓(xùn)練過程:

def compute_loss(self, features, training=False): # The `compute_loss` method determines how loss is computed. # Compute user and item embeddings. user_embeddings = self.user_model(features["user_id"]) movie_embeddings = self.movie_model(features["movie_title"]) # Pass them into the task to get the resulting loss. The lower the loss is, the # better the model is at telling apart true watches from watches that did # not happen in the training data. return self.task(user_embeddings, movie_embeddings)

我們可以調(diào)用 Keras 的 fit 擬合此模型:

model = MovielensModel() model.compile(optimizer=tf.keras.optimizers.Adagrad(0.1)) model.fit(ratings.batch(4096), verbose=False)

要對模型的推薦進(jìn)行 Sanity-Check(合理性檢驗(yàn)),我們可以使用 TFRS BruteForce 層。BruteForce 層以預(yù)先計(jì)算好的 candidate 的表征進(jìn)行排序,允許我們對所有可能的 candidate 計(jì)算其所在 query-candidate 對的得分,并返回排名最靠前的電影 (query):

index = tfrs.layers.ann.BruteForce(model.user_model) index.index(movies.batch(100).map(model.movie_model), movies) # Get recommendations. _, titles = index(tf.constant(["42"])) print(f"Recommendations for user 42: {titles[0, :3]}")

當(dāng)然,BruteForce 層只適用于非常小的數(shù)據(jù)集。有關(guān)將 TFRS 與近似最鄰近庫 Annoy 結(jié)合使用的示例,請參閱我們的完整教程。

完整教程
https://tensorflow.google.cn/recommenders/examples/basic_retrieval#building_a_candidate_ann_index

我們希望這能讓您對 TensorFlow Recommenders 的功能有所了解。要了解更多信息,請查看我們的教程或 API 參考。如果您想?yún)⑴c,一同推動 TensorFlow 推薦系統(tǒng)發(fā)展,請考慮貢獻(xiàn)您的一份力量!我們還將在近期宣布成立 TensorFlow Recommendations 特殊興趣小組 (SIG),歡迎大家就嵌入向量學(xué)習(xí)和分布式訓(xùn)練與應(yīng)用等主題開展合作和做出貢獻(xiàn)。敬請期待!

教程
https://tensorflow.google.cn/recommenders/examples/quickstart

API 參考
https://tensorflow.google.cn/recommenders/api_docs/python/tfrs/all_symbols

貢獻(xiàn)您的一份力量
https://github.com/tensorflow/recommenders/

致謝

TensorFlow Recommenders 是 Google 以及其他組織的人員共同努力的成果。我們要感謝 Tiansheng Yao、Xinyang Yi、Ji Yang 對庫的核心貢獻(xiàn),感謝 Lichan Hong 和 Ed Chi 的領(lǐng)導(dǎo)與指導(dǎo)。我們也要感謝 Zhe Zhao、Derek Cheng、Sagar Jain、Alexandre Passos、Francois Chollet、Sandeep Gupta、Eric Ni 等人對項(xiàng)目的建議和支持。

責(zé)任編輯:xj

原文標(biāo)題:TensorFlow Recommenders 現(xiàn)已開源,讓推薦系統(tǒng)更上一層樓!

文章出處:【微信公眾號:TensorFlow】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8481

    瀏覽量

    133877
  • 推薦系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    44

    瀏覽量

    10178
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    330

    瀏覽量

    60951

原文標(biāo)題:TensorFlow Recommenders 現(xiàn)已開源,讓推薦系統(tǒng)更上一層樓!

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何下載do on stack軟件包AN3942SW.zip?

    有誰知道在哪里/如何下載 do on stack 軟件包AN3942SW.zip
    發(fā)表于 03-21 06:33

    構(gòu)建開源OpenVINO?工具套件后,模型優(yōu)化器位于何處呢?

    構(gòu)建開源OpenVINO?工具套件后,模型優(yōu)化器位于何處?
    發(fā)表于 03-06 08:18

    可以使用OpenVINO?工具將中間表示 (IR) 模型轉(zhuǎn)換為TensorFlow格式嗎?

    無法將中間表示 (IR) 模型轉(zhuǎn)換為 TensorFlow* 格式
    發(fā)表于 03-06 06:51

    如何使用Python構(gòu)建LSTM神經(jīng)網(wǎng)絡(luò)模型

    : NumPy:用于數(shù)學(xué)運(yùn)算。 TensorFlow:一個開源機(jī)器學(xué)習(xí)庫,Keras是其高級API。 Keras:用于構(gòu)建和訓(xùn)練深度學(xué)習(xí)模型。 你可以使用pip來安裝這些庫: pip
    的頭像 發(fā)表于 11-13 10:10 ?1245次閱讀

    蘋果推出全新開源Swift軟件包

    七月三十一日,蘋果企業(yè)總部對外正式發(fā)表公告,宣布昨日(即七月二十九日)成功推出全新的開源 Swift 軟件包—— (喚名為 swift-homomorphic-encryption)。此舉旨在為 Swift 編程語言帶來應(yīng)用便利的同態(tài)加密功能。
    的頭像 發(fā)表于 07-31 15:17 ?713次閱讀

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google開發(fā)的一個開源深度學(xué)習(xí)框架,它允許開發(fā)者方便地構(gòu)建、訓(xùn)練和部署各種復(fù)雜的機(jī)器學(xué)習(xí)模型TensorFlow
    的頭像 發(fā)表于 07-12 16:38 ?1094次閱讀

    使用TensorFlow進(jìn)行神經(jīng)網(wǎng)絡(luò)模型更新

    使用TensorFlow進(jìn)行神經(jīng)網(wǎng)絡(luò)模型的更新是一個涉及多個步驟的過程,包括模型定義、訓(xùn)練、評估以及根據(jù)新數(shù)據(jù)或需求進(jìn)行模型微調(diào)(Fine-
    的頭像 發(fā)表于 07-12 11:51 ?688次閱讀

    請問ESP32如何運(yùn)行TensorFlow模型

    請問ESP32如何運(yùn)行TensorFlow模型?
    發(fā)表于 07-09 07:30

    tensorflow簡單的模型訓(xùn)練

    在本文中,我們將詳細(xì)介紹如何使用TensorFlow進(jìn)行簡單的模型訓(xùn)練。TensorFlow是一個開源的機(jī)器學(xué)習(xí)庫,廣泛用于各種機(jī)器學(xué)習(xí)任務(wù),包括圖像識別、自然語言處理等。我們將從安裝
    的頭像 發(fā)表于 07-05 09:38 ?1111次閱讀

    keras模型轉(zhuǎn)tensorflow session

    和訓(xùn)練深度學(xué)習(xí)模型。Keras是基于TensorFlow、Theano或CNTK等底層計(jì)算框架構(gòu)建的。TensorFlow是一個開源的機(jī)器學(xué)
    的頭像 發(fā)表于 07-05 09:36 ?748次閱讀

    如何使用Tensorflow保存或加載模型

    TensorFlow是一個廣泛使用的開源機(jī)器學(xué)習(xí)庫,它提供了豐富的API來構(gòu)建和訓(xùn)練各種深度學(xué)習(xí)模型。在模型訓(xùn)練完成后,保存
    的頭像 發(fā)表于 07-04 13:07 ?2360次閱讀

    如何在TensorFlow構(gòu)建并訓(xùn)練CNN模型

    TensorFlow構(gòu)建并訓(xùn)練一個卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型是一個涉及多個步驟的過程,包括數(shù)據(jù)預(yù)處理、模型設(shè)計(jì)、編譯、訓(xùn)練以及評估。下面
    的頭像 發(fā)表于 07-04 11:47 ?1443次閱讀

    TensorFlow的定義和使用方法

    數(shù)據(jù)流圖,從而簡化機(jī)器學(xué)習(xí)模型構(gòu)建、訓(xùn)練和部署。自2015年11月開源以來,TensorFlow迅速成為數(shù)據(jù)科學(xué)家、
    的頭像 發(fā)表于 07-02 14:14 ?1228次閱讀

    艾體寶方案 | 管理開源軟件包更新,提升開源安全性

    文章介紹了Mend.io如何通過其Smart Merge Control功能增強(qiáng)開源軟件的安全性。現(xiàn)代應(yīng)用程序高度依賴開源軟件,但這也增加了潛在的安全漏洞。Mend SCA的增強(qiáng)功能允
    的頭像 發(fā)表于 05-31 17:03 ?478次閱讀

    TLE9879QXA40_eSL-BAS-EVAL未找到軟件包的原因?

    我使用的是TLE987x EvalBoard。 打開我的項(xiàng)目時,彈出了這個窗口 點(diǎn)擊"Yes" ,打開軟件包安裝程序窗口,發(fā)現(xiàn)以下錯誤 "
    發(fā)表于 05-24 07:38