-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathRun_NeuralFM_LogLoss.py
More file actions
51 lines (44 loc) · 1.46 KB
/
Copy pathRun_NeuralFM_LogLoss.py
File metadata and controls
51 lines (44 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 11 17:12:32 2018
@author: minjiang
"""
import tensorflow as tf
import LoadData as DATA
from NeuralFM_Model import NeuralFM
import numpy as np
from time import time
#定义参数
#针对log_loss
#对于该损失,似乎很难找到合适的参数
Path = 'D:/Recommender System/neural_factorization_machine-master/data/frappe/'
Epoch = 50
Batch_size = 64
Hidden_factor = 16
Layers = '[10]'
Keep_prob = '[0.8, 0.5]'
Lamda = 10.0
Lr = 0.01
Optimizer = 'AdagradOptimizer'
Verbose = 1
Bn = 1
Activation = 'relu'
Loss_type = 'log_loss'
Early_stop = 1
# 读取数据
data = DATA.LoadData(Path, Loss_type)
activation_function = tf.nn.relu
if Activation == 'sigmoid':
activation_function = tf.sigmoid
elif Activation == 'tanh':
activation_function == tf.tanh
elif Activation == 'identity':
activation_function = tf.identity
# 训练
t1 = time()
model = NeuralFM(data.features_M, Hidden_factor, eval(Layers), Epoch, Batch_size, Lr, Lamda, eval(Keep_prob), Optimizer, Bn, activation_function, Loss_type, Verbose, Early_stop)
model.train(data.Train_data, data.Validation_data, data.Test_data)
# 找到使验证集误差最小的迭代次数
best_epoch = np.argmin(model.valid_loss)
print ("Best Iter(validation)= %d\t train = %.4f, valid = %.4f, test = %.4f [%.1f s]"
%(best_epoch+1, model.train_loss[best_epoch], model.valid_loss[best_epoch], model.test_loss[best_epoch], time()-t1))