Пример #1
0
def train(batch_size, epochs, learning_rate, num_factors, hidden_factors,
          num_att_head, num_att_layers):

    ret = parse_input_v2('../datasets/train.csv',
                         '../datasets/test.csv',
                         use_cross=False)
    labels = ret['train'][0]
    dense_indices = ret['train'][1]
    dense_values = ret['train'][2]
    sparse_indices = ret['train'][3]
    sparse_values = ret['train'][4]
    num_dense_fields = ret['num_fields'][0]
    num_sparse_fields = ret['num_fields'][1]
    num_dense_features = ret['num_features'][0]
    num_sparse_features = ret['num_features'][1]

    def input_fn(batch_size, epochs, is_training):
        ds = tf.data.Dataset.from_tensor_slices(({
            'dense_indices': dense_indices,
            'dense_values': dense_values,
            'sparse_indices': sparse_indices,
            'sparse_values': sparse_values
        }, labels))
        if is_training:
            ds = ds.shuffle(100).batch(batch_size).repeat(epochs)
        return ds

        # iterator = ds.make_one_shot_iterator()
        # batch_features, batch_labels = iterator.get_next()
        # return tf.reshape(batch_ids,shape=[-1,field_size]), tf.reshape(batch_vals,shape=[-1,field_size]), batch_labels
        # return batch_features, batch_labels

    def train_input_fn():
        return input_fn(batch_size, epochs, is_training=True)

    def eval_input_fn():
        return input_fn(batch_size, epochs, is_training=False)

    estimator = tf.estimator.Estimator(model_fn=autoint_model.model_fn,
                                       model_dir='./model',
                                       params={
                                           'num_dense_features':
                                           num_dense_features,
                                           'num_sparse_features':
                                           num_sparse_features,
                                           'num_dense_fields':
                                           num_dense_fields,
                                           'num_sparse_fields':
                                           num_sparse_fields,
                                           'num_factors': num_factors,
                                           'learning_rate': learning_rate,
                                           'hidden_factors': hidden_factors,
                                           'num_att_head': num_att_head,
                                           'num_att_layers': num_att_layers
                                       })

    train_spec = tf.estimator.TrainSpec(input_fn=train_input_fn,
                                        max_steps=1000)
    eval_spec = tf.estimator.EvalSpec(input_fn=eval_input_fn, steps=10)
    tf.estimator.train_and_evaluate(estimator, train_spec, eval_spec)
def predict(num_factors, hidden_factors, num_att_head, num_att_layers):

    ret = parse_input_v2('../datasets/train.csv',
                         '../datasets/test.csv',
                         use_cross=False)
    ids = ret['test'][0]
    dense_indices = ret['test'][1]
    dense_values = ret['test'][2]
    sparse_indices = ret['test'][3]
    sparse_values = ret['test'][4]
    num_dense_fields = ret['num_fields'][0]
    num_sparse_fields = ret['num_fields'][1]
    num_dense_features = ret['num_features'][0]
    num_sparse_features = ret['num_features'][1]

    def input_fn():
        ds = tf.data.Dataset.from_tensor_slices(({
            'dense_indices': dense_indices,
            'dense_values': dense_values,
            'sparse_indices': sparse_indices,
            'sparse_values': sparse_values
        }, ids))
        return ds

    def predict_input_fn():
        return input_fn()

    estimator = tf.estimator.Estimator(model_fn=autoint_model.model_fn,
                                       model_dir='./model',
                                       params={
                                           'num_dense_features':
                                           num_dense_features,
                                           'num_sparse_features':
                                           num_sparse_features,
                                           'num_dense_fields':
                                           num_dense_fields,
                                           'num_sparse_fields':
                                           num_sparse_fields,
                                           'num_factors': num_factors,
                                           'hidden_factors': hidden_factors,
                                           'num_att_head': num_att_head,
                                           'num_att_layers': num_att_layers
                                       })

    preds = estimator.predict(predict_input_fn)

    return list(zip(ids, preds))
Пример #3
0
def predict(num_factors, deep_layers, reduce_ratio):

    ret = parse_input_v2('../datasets/train.csv',
                         '../datasets/test.csv',
                         use_cross=True)
    ids = ret['test'][0]
    dense_indices = ret['test'][1]
    dense_values = ret['test'][2]
    sparse_indices = ret['test'][3]
    sparse_values = ret['test'][4]
    num_dense_fields = ret['num_fields'][0]
    num_sparse_fields = ret['num_fields'][1]
    num_dense_features = ret['num_features'][0]
    num_sparse_features = ret['num_features'][1]

    def input_fn():
        ds = tf.data.Dataset.from_tensor_slices(({
            'dense_indices': dense_indices,
            'dense_values': dense_values,
            'sparse_indices': sparse_indices,
            'sparse_values': sparse_values
        }, ids))
        return ds

    def predict_input_fn():
        return input_fn()

    estimator = tf.estimator.Estimator(model_fn=fibinet_model.model_fn,
                                       model_dir='./model',
                                       params={
                                           'num_dense_features':
                                           num_dense_features,
                                           'num_sparse_features':
                                           num_sparse_features,
                                           'num_dense_fields':
                                           num_dense_fields,
                                           'num_sparse_fields':
                                           num_sparse_fields,
                                           'num_factors': num_factors,
                                           'deep_layers': deep_layers,
                                           'reduce_ratio': reduce_ratio
                                       })

    preds = estimator.predict(predict_input_fn)

    return list(zip(ids, preds))