깊이 추천 모델 - DIN [KDD 18][Alibaba]
14599 단어 심도 있는 학습추천 검색TensorFlow
import tensorflow as tf
from tensorflow import keras
from utils import *
EPOCH = 10
BATCH_SIZE = 32
VEC_DIM = 10
DROPOUT_RATE = 0.5
HEAD_NUM = 4
HIDE_SIZE = 128
LAYER_NUM = 3
DNN_LAYERS = [200, 80]
data, max_user_id, max_item_id = load_data()
#
BEHAVIOR_FEAT_NUM = 32
K = tf.keras.backend
def run():
train_user_id_data, train_now_item_id_data, train_item_ids_data, train_rating_ids_data, train_y_data,\
test_user_id_data, test_now_item_id_data, test_item_ids_data, test_rating_ids_data, test_y_data = get_all_data(data)
user_id = keras.Input((1,))
now_item_id = keras.Input((1,))
items_ids = keras.Input((BEHAVIOR_FEAT_NUM,))
ratings_ids = keras.Input((BEHAVIOR_FEAT_NUM,))
usr_emb = keras.layers.Embedding(max_user_id + 1, VEC_DIM, input_length=1)(user_id) # [-1,1,vec_dim]
usr_emb = keras.layers.Flatten()(usr_emb) # [-1,vec_dim]
now_item_emb = keras.layers.Embedding(max_item_id + 1, VEC_DIM, input_length=1)(now_item_id) # [-1,1,vec_dim]
now_item_emb = keras.layers.Flatten()(now_item_emb) # [-1,vec_dim]
items_emb = keras.layers.Embedding(max_item_id + 1, VEC_DIM, input_length=BEHAVIOR_FEAT_NUM)(
items_ids) # [-1,BEA_FEAT_NUM,vec_dim]
ratings_emb = keras.layers.Embedding(6, VEC_DIM, input_length=BEHAVIOR_FEAT_NUM)(
ratings_ids) # [-1,BEA_FEAT_NUM,vec_dim]
behavior_emb = keras.layers.concatenate([items_emb, ratings_emb]) # [-1,BEA_FEAT_NUM, 2 * vec_dim]
behavior_emb = tf.reduce_sum(behavior_emb, axis=1) # [-1, 2 * vec_dim]
deep = keras.layers.concatenate([usr_emb, now_item_emb, behavior_emb])
for units in DNN_LAYERS:
deep = keras.layers.Dense(units)(deep)
deep = keras.layers.PReLU()(deep)
deep = keras.layers.Dropout(DROPOUT_RATE)(deep)
outputs = keras.layers.Dense(1, activation='sigmoid')(deep)
model = keras.Model(inputs=[user_id, now_item_id, items_ids, ratings_ids], outputs=outputs)
model.compile(loss='binary_crossentropy', optimizer=tf.train.AdamOptimizer(0.001), metrics=[keras.metrics.AUC()])
tbCallBack = keras.callbacks.TensorBoard(log_dir='./logs',
histogram_freq=0,
write_graph=True,
write_grads=True,
write_images=True,
embeddings_freq=0,
embeddings_layer_names=None,
embeddings_metadata=None)
model.fit([train_user_id_data, train_now_item_id_data, train_item_ids_data, train_rating_ids_data], train_y_data,
batch_size=BATCH_SIZE, epochs=EPOCH, verbose=2,
validation_data=(
[test_user_id_data, test_now_item_id_data, test_item_ids_data, test_rating_ids_data], test_y_data),
callbacks=[tbCallBack])
run()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Caffe] mnist 인식 프로세스cd $CAFFE_ROOT 트레이닝 데이터 다운로드 ./data/mnist/get_mnist.sh 데이터 세트 만들기: ./examples/mnist/create_mnist.sh 트레이닝 모델: ./examples/...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.