def __init__(self,first_dimension,output_dimension,item_num,user_feature):
self.maxlen=item_num
self.maxfea=user_feature
model_input_user_rating=Input(shape=[item_num],name='user_rating')
model_input_user_sideinformation=Input(shape=(user_feature,),name='user_sideinformation')
#model_input_user_rating=model_input_user_rating+0.5*np.random.normal(loc=0,scale=100,size=item_num)
#model_input_user_sideinformation=model_input_user_sideinformation+0.5*np.random.normal(loc=0,scale=100,size=user_feature)
model_input=concatenate([model_input_user_rating,model_input_user_sideinformation])
encoder_1=Dense(first_dimension,activation='relu',name='encoder_1')(model_input)
#encoder_conc=concatenate([encoder_1,model_input_user_sideinformation])
encoder_2=Dense(output_dimension,activation='relu',name='user_matrix')(encoder_1)
#decoder_conc=concatenate([encoder_2,model_input_user_sideinformation])
decoder_3=Dense(first_dimension,activation='relu',name='decoder_1')(encoder_2)
#decoder_conc=concatenate([decoder_3,model_input_user_sideinformation])
model_output_user_rating=Dense(item_num,activation='sigmoid',name='output_model_rating')(decoder_3)
model_output_user_sideinformation=Dense(user_feature,activation='sigmoid',name='output_model_side')(decoder_3)
output_model=Model(inputs=[model_input_user_rating,model_input_user_sideinformation],outputs=[model_output_user_rating,model_output_user_sideinformation,encoder_2])
output_model.compile(optimizer='rmsprop',loss={'output_model_rating':'mse','output_model_side':'mse','user_matrix':'mse'},loss_weights=[1,1,0])
self.model=output_model
评论列表
文章目录