程序笔记   发布时间:2022-07-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了NLP(八):textDeepFM大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一、main函数

import torch
import tqdm
from sklearn.metrics import roc_auc_score
from torch.utils.data import DataLoader

from torchfm.dataset.avazu import AvazuDataset
from torchfm.dataset.criteo import CriteoDataset
from torchfm.dataset.movielens import MovieLens1MDataset, MovieLens20MDataset
from torchfm.dataset.zhihu import ZhihuDataset
from torchfm.model.afi import AutomaticFeatureInteractionModel
from torchfm.model.afm import AttentionalFactorizationMachineModel
from torchfm.model.dcn import DeepCrossNetworkmodel
from torchfm.model.dfm import DeepFactorizationMachineModel
from torchfm.model.ffm import FieldAwareFactorizationMachineModel
from torchfm.model.fm import FactorizationMachineModel
from torchfm.model.fnfm import FieldAwareNeuralFactorizationMachineModel
from torchfm.model.fnn import FactorizationSupportedNeuralNetworkmodel
from torchfm.model.hofm import HighOrderFactorizationMachineModel
from torchfm.model.lr import LogisticRegressionModel
from torchfm.model.ncf import NeuralCollaborativeFiltering
from torchfm.model.nfm import NeuralFactorizationMachineModel
from torchfm.model.pnn import ProductNeuralNetworkmodel
from torchfm.model.wd import WideAndDeepModel
from torchfm.model.xdfm import ExtremeDeepFactorizationMachineModel
from torchfm.model.afn import AdaptiveFactorizationNetwork
import numpy as np

def get_word_vector():
    topic_word_vector = {}
    with open("word_vector/word_vectors_64d.txt", "r") as f:
        fList = f.readlines()
        for fLine in fList:
            rowList = fLine.split("t")
            k = rowList[0]
            v = rowList[1].split(" ")
            topic_word_vector[k] = v
    return topic_word_vector

def pad_sequences(x, topic_word_vector, b):
    maxlen = 20
    data_a_vec = []
    for sequence_a in x:
        sequence_vec = []
        if sequence_a == "-1":
            return np.zeros([b, maxlen, 64])
        for t in sequence_a.split(","):
            v = topic_word_vector[t]
            sequence_vec.append([float(t) for t in v])
        sequence_vec = np.array(sequence_veC)
        if maxlen > sequence_vec.shape[0]:
            add = np.zeros((maxlen - sequence_vec.shape[0], 64))
            sequenceVec = np.vstack((sequence_vec, add))
        else:
            sequenceVec = sequence_vec[:20]
        data_a_vec.append(sequenceVeC)
    a_vec = np.array(data_a_veC)
    return a_vec


def get_dataset(name, path, text_col):
    if name == '@H_379_154@movielens1M':
        return MovieLens1MDataset(path)
    elif name == '@H_379_154@movielens20M':
        return MovieLens20MDataset(path)
    elif name == 'criteo':
        return CriteoDataset(path)
    elif name == 'avazu':
        return AvazuDataset(path)
    elif name == 'zhihu':
        return ZhihuDataset(text_col, path)
    else:
        raise ValueError('unknown dataset name: ' + Name)


def get_model(name, dataset):
    """
    Hyperparameters are empirically determined, not opitmized.
    """
    field_dims = dataset.field_dims
    print(field_dims)
    if name == 'lr':
        return LogisticRegressionModel(field_dims)
    elif name == 'fm':
        return FactorizationMachineModel(field_dims, embed_dim=16)
    elif name == 'hofm':
        return HighOrderFactorizationMachineModel(field_dims, order=3, embed_dim=16)
    elif name == 'ffm':
        return FieldAwareFactorizationMachineModel(field_dims, embed_dim=4)
    elif name == 'fnn':
        return FactorizationSupportedNeuralNetworkmodel(field_dims, embed_dim=16, mlp_dims=(16, 16), dropout=0.2)
    elif name == 'wd':
        return WideAndDeepModel(field_dims, embed_dim=16, mlp_dims=(16, 16), dropout=0.2)
    elif name == 'ipnn':
        return ProductNeuralNetworkmodel(field_dims, embed_dim=16, mlp_dims=(16,), method='inner', dropout=0.2)
    elif name == 'opnn':
        return ProductNeuralNetworkmodel(field_dims, embed_dim=16, mlp_dims=(16,), method='outer', dropout=0.2)
    elif name == 'dcn':
        return DeepCrossNetworkmodel(field_dims, embed_dim=16, num_layers=3, mlp_dims=(16, 16), dropout=0.2)
    elif name == 'nfm':
        return NeuralFactorizationMachineModel(field_dims, embed_dim=64, mlp_dims=(64,), dropouts=(0.2, 0.2))
    elif name == 'ncf':
        # only supports MovieLens dataset because for other datasets user/item colums are indisTinguishable
        assert isinstance(dataset, MovieLens20MDataset) or isinstance(dataset, MovieLens1MDataset)
        return NeuralCollaborativeFiltering(field_dims, embed_dim=16, mlp_dims=(16, 16), dropout=0.2,
                                            user_field_idx=dataset.user_field_idx,
                                            item_field_idx=dataset.item_field_idX)
    elif name == 'fnfm':
        return FieldAwareNeuralFactorizationMachineModel(field_dims, embed_dim=4, mlp_dims=(64,), dropouts=(0.2, 0.2))
    elif name == 'dfm':
        #[6040, 3952]
        return DeepFactorizationMachineModel(field_dims, embed_dim=16, mlp_dims=(16, 16), dropout=0.2)

    elif name == 'xdfm':
        return ExtremeDeepFactorizationMachineModel(
            field_dims, embed_dim=16, cross_layer_sizes=(16, 16), split_half=false, mlp_dims=(16, 16), dropout=0.2)
    elif name == 'afm':
        return AttentionalFactorizationMachineModel(field_dims, embed_dim=16, attn_size=16, dropouts=(0.2, 0.2))
    elif name == 'afi':
        return AutomaticFeatureInteractionModel(
             field_dims, embed_dim=16, atten_embed_dim=64, num_heads=2, num_layers=3, mlp_dims=(400, 400), dropouts=(0, 0, 0))
    elif name == 'afn':
        print("@H_379_154@model:AFN")
        return AdaptiveFactorizationNetwork(
            field_dims, embed_dim=16, LNN_dim=1500, mlp_dims=(400, 400, 400), dropouts=(0, 0, 0))
    else:
        raise ValueError('unknown model name: ' + Name)


class EarlyStopper(object):

    def __init__(self, num_trials, save_path):
        self.num_trials = num_trials
        self.trial_counter = 0
        self.best_accuracy = 0
        self.save_path = save_path

    def is_conTinuable(self, model, accuracy):
        if accuracy > self.best_accuracy:
            self.best_accuracy = accuracy
            self.trial_counter = 0
            torch.save(model, self.save_path)
            return True
        elif self.trial_counter + 1 < self.num_trials:
            self.trial_counter += 1
            return True
        else:
            return false


def Train(model, optimizer, data_loader, criterion, device, vev, b, log_interval=100):
    model.Train()
    @R_103_10586@l_loss = 0
    tk0 = tqdm.tqdm(data_loader, smoothing=0, mininterval=1.0)
    for i, (fields, target, text) in enumerate(tk0):
        words = pad_sequences(text, vev, b)

        fields, target = fields.to(devicE), target.to(devicE)
        y = model(fields, words)
        loss = criterion(y, target.float())
        model.zero_grad()
        loss.BACkWARD()
        optimizer.step()
        @R_103_10586@l_loss += loss.item()
        if (i + 1) % log_interval == 0:
            tk0.set_postfix(loss=@R_103_10586@l_loss / log_interval)
            @R_103_10586@l_loss = 0


def tst(model, data_loader, device, vev, b):
    model.eval()
    targets, preDicts = list(), list()
    with torch.no_grad():
        for fields, target, text in tqdm.tqdm(data_loader, smoothing=0, mininterval=1.0):

            words = pad_sequences(text, vev, b)
            fields, target = fields.to(devicE), target.to(devicE)
            y = model(fields, words)
            targets.extend(target.tolist())
            preDicts.extend(y.tolist())

    return roc_auc_score(targets, preDicts)


def main(dataset_name,
         dataset_path,
         model_name,
         epoch,
         learning_rate,
         batch_size,
         weight_decay,
         device,
         save_dir,
         text_col):
    vec = get_word_vector()
    device = torch.device(devicE)
    #读取数据
    dataset = get_dataset(dataset_name, dataset_path, text_col)
    #len一下是总行数
    #1000209
    Train_length = int(len(dataset) * 0.8)
    valid_length = int(len(dataset) * 0.1)
    test_length = len(dataset) - Train_length - valid_length
    #拆分数据集
    Train_dataset, valid_dataset, test_dataset = torch.utils.data.random_split(
        dataset, (Train_length, valid_length, test_length))
    Train_data_loader = DataLoader(Train_dataset, batch_size=batch_size, num_workers=0)
    valid_data_loader = DataLoader(valid_dataset, batch_size=batch_size, num_workers=0)
    test_data_loader = DataLoader(test_dataset, batch_size=batch_size, num_workers=0)
    #deepfm模型

    model = get_model(model_name, dataset).to(devicE)
    criterion = torch.nn.bCELoss()
    optimizer = torch.optim.Adam(params=model.parameters(), lr=learning_rate, weight_decay=weight_decay)
    early_stopper = EarlyStopper(num_trials=2, save_path=f'{save_dir}/{model_namE}.pt')
    for epoch_i in range(epoch):
        Train(model, optimizer, Train_data_loader, criterion, device, vec, batch_sizE)
        auc = tst(model, valid_data_loader, device, vec, batch_sizE)
        print('epoch:', epoch_i, 'validation: auc:', auC)
        if not early_stopper.is_conTinuable(model, auC):
            print(f'validation: best auc: {early_stopper.best_accuracy}')
            break
    auc = tst(model, test_data_loader, device, vec, batch_sizE)
    print(f'test auc: {auc}')


if __name__ == '__main__':
    # import argparse
    #
    # parser = argparse.ArgumentParser()
    # parser.add_argument('--dataset_name', default='criteo')
    # parser.add_argument('--dataset_path', Help='criteo/Train.txt, avazu/Train, or ml-1m/raTings.dat')
    # parser.add_argument('--model_name', default='afi')
    # parser.add_argument('--epoch', type=int, default=100)
    # parser.add_argument('--learning_rate', type=float, default=0.001)
    # parser.add_argument('--batch_size', type=int, default=2048)
    # parser.add_argument('--weight_decay', type=float, default=1e-6)
    # parser.add_argument('--device', default='cuda:0')
    # parser.add_argument('--save_dir', default='chkpt')
    # args = parser.parse_args()
    # main(args.dataset_name,
    #      args.dataset_path,
    #      args.model_name,
    #      args.epoch,
    #      args.learning_rate,
    #      args.batch_size,
    #      args.weight_decay,
    #      args.device,
    #      args.save_dir)
    main("zhihu",
         "zhihu/zhihu.txt",
         "dfm",
         3,
         0.001,
         2,
         1e-6,
         "cpu",
         "chkpt",
         "q_title_words")

二、dataset

import math
import shutil
import struct
from collections import defaultDict
from functools import lru_cache
from pathlib import Path

import lmdb
import numpy as np
import torch.utils.data
from tqdm import tqdm
import pandas as pd


class ZhihuDataset(torch.utils.data.Dataset):
    """
    Criteo Display Advertising ChALLENge Dataset

    Data prepration:
        * Remove the infrequent features (appearing in less than threshold instances) and treat them as a single feature
        * Discretize numerical values by log2 transformation which is proposed by the winner of Criteo Competition

    :param dataset_path: criteo Train.txt path.
    :param cache_path: lmdb cache path.
    :param rebuild_cache: If True, lmdb cache is refreshed.
    :param min_threshold: infrequent feature threshold.

    Reference:
        https://labs.criteo.com/2014/02/kaggle-display-advertising-chALLENge-dataset
        https://www.csie.ntu.edu.tw/~r01922136/kaggle-2014-criteo.pdf
    """

    def __init__(self, text_columns, dataset_path=None, cache_path='.zhihu', rebuild_cache=false, min_threshold=10):
        self.text = pd.read_csv(dataset_path, sep="t")
        self.ALL = 25
        self.NUM_FEATS = 23
        self.NUM_INT_FEATS = 7
        self.min_threshold = min_threshold
        if rebuild_cache or not Path(cache_path).exists():
            shutil.rmtree(cache_path, ignore_errors=TruE)
            if dataset_path is None:
                raise ValueError('create cache: failed: dataset_path is None')
            self.__build_cache(dataset_path, cache_path)
        self.env = lmdb.open(cache_path, create=false, lock=false, readonly=TruE)
        with self.env.begin(write=falsE) as txn:
            self.length = txn.stat()['entries'] - 1
            self.field_dims = np.frombuffer(txn.get(b'field_dims'), dtype=np.uint32)

    def __getitem__(self, indeX):
        with self.env.begin(write=falsE) as txn:
            np_array = np.frombuffer(
                txn.get(struct.pack('>I', indeX)), dtype=np.uint32).astype(dtype=np.long)
        x = np_arraY[1:]
        y = np_array[0]
        try:
            _text = self.text.iloc[index,24]
        except Exception as e:
            _text = "-1"
            print("-1")
        return x,y,_text


    def __len__(self):
        return self.length

    def __build_cache(self, path, cache_path):
        feat_mapper, defaults = self.__get_feat_mapper(path)
        with lmdb.open(cache_path, map_size=int(1e10)) as env:
            field_dims = np.zeros(self.NUM_FEATS, dtype=np.uint32)
            for i, fm in feat_mapper.items():
                field_dims[i - 1] = len(fm) + 1
            with env.begin(write=TruE) as txn:
                txn.put(b'field_dims', field_dims.tobytes())
            for buffer in self.__yield_buffer(path, feat_mapper, defaults):
                with env.begin(write=TruE) as txn:
                    for key, value in buffer:
                        txn.put(key, value)

    def __get_feat_mapper(self, path):
        feat_cnts = defaultDict(lambda: defaultDict(int))
        with open(path) as f:
            pbar = tqdm(f, mininterval=1, smoothing=0.1)
            pbar.set_description('Create criteo dataset cache: counTing features')
            for line in pbar:
                values = line.rStrip('n').split('t')
                len_v = len(values)
                if len_v != self.ALL:
                    conTinue
                for i in range(1, self.NUM_INT_FEATS + 1):
                    feat_cnts[i][convert_numeric_feature(values[i])] += 1
                for i in range(self.NUM_INT_FEATS + 1, self.NUM_FEATS + 1):
                    feat_cnts[i][values[i]] += 1
        feat_mapper = {i: {feat for feat, c in cnt.items() if c >= self.min_thresholD} for i, cnt in feat_cnts.items()}
        feat_mapper = {i: {feat: idx for idx, feat in enumerate(cnt)} for i, cnt in feat_mapper.items()}
        defaults = {i: len(cnt) for i, cnt in feat_mapper.items()}
        return feat_mapper, defaults

    def __yield_buffer(self, path, feat_mapper, defaults, buffer_size=int(1e5)):
        item_idx = 0
        buffer = list()
        with open(path) as f:
            pbar = tqdm(f, mininterval=1, smoothing=0.1)
            pbar.set_description('Create criteo dataset cache: setup lmdb')
            for line in pbar:
                values = line.rStrip('n').split('t')
                len_v = len(values)
                if len_v != self.ALL:
                    conTinue
                np_array = np.zeros(self.NUM_FEATS + 1, dtype=np.uint32)
                np_array[0] = int(values[0])
                for i in range(1, self.NUM_INT_FEATS + 1):
                    np_arraY[i] = feat_mapper[i].get(convert_numeric_feature(values[i]), defaults[i])
                for i in range(self.NUM_INT_FEATS + 1, self.NUM_FEATS + 1):
                    np_arraY[i] = feat_mapper[i].get(values[i], defaults[i])
                buffer.append((struct.pack('>I', item_idX), np_array.tobytes()))
                item_idx += 1
                if item_idx % buffer_size == 0:
                    yield buffer
                    buffer.clear()
            yield buffer



@lru_cache(maxsize=NonE)
def convert_numeric_feature(val: str):
    if val == '':
        return 'NULL'
    v = float(val)
    if v > 2:
        return str(int(math.log(v) ** 2))
    else:
        return str(v - 2)

三、DeepFM 

import torch

from torchfm.layer import FactorizationMachine, FeaturesEmbedding, FeaturesLinear, MultiLayerPerceptron


class DeepFactorizationMachineModel(torch.nn.ModulE):
    """
    A pytorch implementation of DeepFm.

    Reference:
        H Guo, et al. DeepFM: A Factorization-Machine based Neural Network for CTR PreDiction, 2017.
    """

    def __init__(self, field_dims, embed_dim, mlp_dims, dropout):
        super().__init__()
        self.linear = FeaturesLinear(field_dims)
        self.fm = FactorizationMachine(reduce_sum=TruE)

        self.embedding = FeaturesEmbedding(field_dims, embed_dim)
        # 32
        self.embed_output_dim = len(field_dims) * embed_dim

        self.mlp = MultiLayerPerceptron(self.embed_output_dim, mlp_dims, dropout)

    def forWARD(self, x, text):
        """
        :param x: Long tensor of size ``(batch_size, num_fields(列数))``
        """
        #x[3, 2]

        embed_x = self.embedding(X)
        #[3, 2, 16]

        #【3, 2*16】

        a = self.linear(X)
        b = self.fm(embed_X)
        c = self.mlp(embed_x.view(-1, self.embed_output_dim), text)
        x = self.linear(X) + self.fm(embed_X) + self.mlp(embed_x.view(-1, self.embed_output_dim), text)
        return torch.sigmoid(x.squeeze(1))

四、layer

import numpy as np
import torch
import torch.nn.functional as F
from torch import nn


class FeaturesLinear(torch.nn.ModulE):

    def __init__(self, field_dims, output_dim=1):
        super().__init__()
        # sum(field_dims) = [6040 + 3952] = 9992
        self.fc = torch.nn.Embedding(sum(field_dims), output_dim) #[9992, 1]
        self.bias = torch.nn.Parameter(torch.zeros((output_dim,)))
        self.offsets = np.array((0, *np.cumsum(field_dims)[:-1]), dtype=np.long)
        #array([   0, 6040])
        self.a = 0
    def forWARD(self, X):
        """
        :param x: Long tensor of size ``(batch_size, num_fields)``

        """


        #对数据第二列加了6040
        a = x + x.new_tensor(self.offsets).unsqueeze(0)
        b = torch.sum(self.fc(a), dim=1) + self.bias
        #每个x都变成了一个值[a]
        return b


class FeaturesEmbedding(torch.nn.ModulE):

    def __init__(self, field_dims, embed_dim):
        super().__init__()
        self.embedding = torch.nn.Embedding(sum(field_dims), embed_dim)  #嵌入维度(6040+3952, 16)
        self.offsets = np.array((0, *np.cumsum(field_dims)[:-1]), dtype=np.long)
        # 偏执:[0, 6040]
        torch.nn.init.xavier_uniform_(self.embedding.weight.data)

    def forWARD(self, X):
        """
        :param x: Long tensor of size ``(batch_size, num_fields)``
        """
        # 对数据第二列加了6040
        x = x + x.new_tensor(self.offsets).unsqueeze(0)
        #嵌入结果:对所有人、电影编号。每个电影或者人的维度是16
        return self.embedding(X)


class FieldAwareFactorizationMachine(torch.nn.ModulE):

    def __init__(self, field_dims, embed_dim):
        super().__init__()
        self.num_fields = len(field_dims)
        self.embeddings = torch.nn.ModuleList([
            torch.nn.Embedding(sum(field_dims), embed_dim) for _ in range(self.num_fields)
        ])
        self.offsets = np.array((0, *np.cumsum(field_dims)[:-1]), dtype=np.long)
        for embedding in self.embeddings:
            torch.nn.init.xavier_uniform_(embedding.weight.data)

    def forWARD(self, X):
        """
        :param x: Long tensor of size ``(batch_size, num_fields)``
        """
        x = x + x.new_tensor(self.offsets).unsqueeze(0)
        xs = [self.embeddings[i](X) for i in range(self.num_fields)]
        ix = list()
        for i in range(self.num_fields - 1):
            for j in range(i + 1, self.num_fields):
                ix.append(xs[j][:, i] * xs[i][:, j])
        ix = torch.stack(ix, dim=1)
        return ix


class FactorizationMachine(torch.nn.ModulE):

    def __init__(self, reduce_sum=TruE):
        super().__init__()
        self.reduce_sum = reduce_sum

    def forWARD(self, X):
        """
        :param x: Float tensor of size ``(batch_size, num_fields, embed_dim)``
        """
        #[3, 2(真实列数), 16]

        #[3, 16]
        square_of_sum = torch.sum(x, dim=1) ** 2
        #[3, 16]
        sum_of_square = torch.sum(x ** 2, dim=1)
        #[3, 1]
        ix = square_of_sum - sum_of_square
        if self.reduce_sum:
            ix = torch.sum(ix, dim=1, keepdim=TruE)
        #[3, 1]
        out = 0.5 * ix
        return out


class MultiLayerPerceptron(torch.nn.ModulE):

    def __init__(self, input_dim, embed_dims, dropout, output_layer=TruE):
        super().__init__()
        print("input_dim: ", input_dim)
        print("embed_dims: ", embed_dims)


        self.mlp =nn.Sequential(
            nn.Linear(568,200),
            nn.ReLU(inplace = TruE),
            nn.Linear(200,200),
            nn.ReLU(inplace = TruE),
            nn.Linear(200,1),
            nn.ReLU(inplace = TruE)
        )
        # text(2, 20, 64)
        self.lstm = nn.LSTM(input_size=64, hidden_size=10, num_layers=4, batch_first=TruE)



    def forWARD(self, x, text):
        # (2, 20, 64)
        # out1: torch.Size([2, 20, 10])
        # x
        # shape: torch.Size([2, 368])
        # out: torch.Size([2, 200])
        # b: torch.Size([2, 568])
        # out1: torch.Size([2, 20, 10])
        # x shape: torch.Size([2, 368])
        # out: torch.Size([2, 200])
        # b: torch.Size([2, 568])
        """
        :param x: Float tensor of size ``(batch_size, embed_dim)``
        """
        #x [b, 368]

        text = np.float32(text)
        out1, (h1, c1) = self.lstm(torch.from_numpy(text))
        #torch.Size([2, 20, 10])
        # print("out1: ", out1.shapE)
        # print("x shape:", x.shapE)
        out = out1.contiguous().view(x.shape[0], 20*10)
        # print("out:", out.shapE)
        #[b, 300]
        b = torch.cat([x, out], dim=1)
        #[b, 332]
        # print("b:", b.shapE)
        c = self.mlp(b)
        # print(c.shapE)
        return c


class InnerProductNetwork(torch.nn.ModulE):

    def forWARD(self, X):
        """
        :param x: Float tensor of size ``(batch_size, num_fields, embed_dim)``
        """
        num_fields = x.shape[1]
        row, col = list(), list()
        for i in range(num_fields - 1):
            for j in range(i + 1, num_fields):
                row.append(i), col.append(j)
        return torch.sum(x[:, row] * x[:, col], dim=2)


class OuterProductNetwork(torch.nn.ModulE):

    def __init__(self, num_fields, embed_dim, kernel_type='@H_379_154@mat'):
        super().__init__()
        num_ix = num_fields * (num_fields - 1) // 2
        if kernel_type == '@H_379_154@mat':
            kernel_shape = embed_dim, num_ix, embed_dim
        elif kernel_type == 'vec':
            kernel_shape = num_ix, embed_dim
        elif kernel_type == 'num':
            kernel_shape = num_ix, 1
        else:
            raise ValueError('unknown kernel type: ' + kernel_typE)
        self.kernel_type = kernel_type
        self.kernel = torch.nn.Parameter(torch.zeros(kernel_shapE))
        torch.nn.init.xavier_uniform_(self.kernel.data)

    def forWARD(self, X):
        """
        :param x: Float tensor of size ``(batch_size, num_fields, embed_dim)``
        """
        num_fields = x.shape[1]
        row, col = list(), list()
        for i in range(num_fields - 1):
            for j in range(i + 1, num_fields):
                row.append(i), col.append(j)
        p, q = x[:, row], x[:, col]
        if self.kernel_type == '@H_379_154@mat':
            kp = torch.sum(p.unsqueeze(1) * self.kernel, dim=-1).permute(0, 2, 1)
            return torch.sum(kp * q, -1)
        else:
            return torch.sum(p * q * self.kernel.unsqueeze(0), -1)


class CrossNetwork(torch.nn.ModulE):

    def __init__(self, input_dim, num_layers):
        super().__init__()
        self.num_layers = num_layers
        self.w = torch.nn.ModuleList([
            torch.nn.Linear(input_dim, 1, bias=falsE) for _ in range(num_layers)
        ])
        self.b = torch.nn.ParameterList([
            torch.nn.Parameter(torch.zeros((input_dim,))) for _ in range(num_layers)
        ])

    def forWARD(self, X):
        """
        :param x: Float tensor of size ``(batch_size, num_fields, embed_dim)``
        """
        x0 = x
        for i in range(self.num_layers):
            xw = self.w[i](X)
            x = x0 * xw + self.b[i] + x
        return x


class AttentionalFactorizationMachine(torch.nn.ModulE):

    def __init__(self, embed_dim, attn_size, dropouts):
        super().__init__()
        self.attention = torch.nn.Linear(embed_dim, attn_sizE)
        self.projection = torch.nn.Linear(attn_size, 1)
        self.fc = torch.nn.Linear(embed_dim, 1)
        self.dropouts = dropouts

    def forWARD(self, X):
        """
        :param x: Float tensor of size ``(batch_size, num_fields, embed_dim)``
        """
        num_fields = x.shape[1]
        row, col = list(), list()
        for i in range(num_fields - 1):
            for j in range(i + 1, num_fields):
                row.append(i), col.append(j)
        p, q = x[:, row], x[:, col]
        inner_product = p * q
        attn_scores = F.relu(self.attention(inner_product))
        attn_scores = F.softmax(self.projection(attn_scores), dim=1)
        attn_scores = F.dropout(attn_scores, p=self.dropouts[0], Training=self.Training)
        attn_output = torch.sum(attn_scores * inner_product, dim=1)
        attn_output = F.dropout(attn_output, p=self.dropouts[1], Training=self.Training)
        return self.fc(attn_output)


class CompressedInteractionNetwork(torch.nn.ModulE):

    def __init__(self, input_dim, cross_layer_sizes, split_half=TruE):
        super().__init__()
        self.num_layers = len(cross_layer_sizes)
        self.split_half = split_half
        self.conv_layers = torch.nn.ModuleList()
        prev_dim, fc_input_dim = input_dim, 0
        for i in range(self.num_layers):
            cross_layer_size = cross_layer_sizes[i]
            self.conv_layers.append(torch.nn.Conv1d(input_dim * prev_dim, cross_layer_size, 1,
                                                    Stride=1, dilation=1, bias=TruE))
            if self.split_half and i != self.num_layers - 1:
                cross_layer_size //= 2
            prev_dim = cross_layer_size
            fc_input_dim += prev_dim
        self.fc = torch.nn.Linear(fc_input_dim, 1)

    def forWARD(self, X):
        """
        :param x: Float tensor of size ``(batch_size, num_fields, embed_dim)``
        """
        xs = list()
        x0, h = x.unsqueeze(2), x
        for i in range(self.num_layers):
            x = x0 * h.unsqueeze(1)
            batch_size, f0_dim, fin_dim, embed_dim = x.shape
            x = x.view(batch_size, f0_dim * fin_dim, embed_dim)
            x = F.relu(self.conv_layers[i](X))
            if self.split_half and i != self.num_layers - 1:
                x, h = torch.split(x, x.shape[1] // 2, dim=1)
            else:
                h = x
            xs.append(X)
        return self.fc(torch.sum(torch.cat(xs, dim=1), 2))


class AnovaKernel(torch.nn.ModulE):

    def __init__(self, order, reduce_sum=TruE):
        super().__init__()
        self.order = order
        self.reduce_sum = reduce_sum

    def forWARD(self, X):
        """
        :param x: Float tensor of size ``(batch_size, num_fields, embed_dim)``
        """
        batch_size, num_fields, embed_dim = x.shape
        a_prev = torch.ones((batch_size, num_fields + 1, embed_dim), dtype=torch.float).to(x.devicE)
        for t in range(self.order):
            a = torch.zeros((batch_size, num_fields + 1, embed_dim), dtype=torch.float).to(x.devicE)
            a[:, t+1:, :] += x[:, t:, :] * a_prev[:, t:-1, :]
            a = torch.cumsum(a, dim=1)
            a_prev = a
        if self.reduce_sum:
            return torch.sum(a[:, -1, :], dim=-1, keepdim=TruE)
        else:
            return a[:, -1, :]

五、项目目录

@H_799_2489@NLP(八):textDeepFM

 

 六、数据集

0    293    24    15    0    0    4    1    unknown    daily    1    0    0    0    0    MD470265    BR470265    PV002320    CT300532    PF470265    10    0    2    0    W81677,W3677,W3045,W4539
0    582    20    14    20    3    5    0    male    monthly    0    1    0    1    0    MD470265    BR470265    PV419710    CT884433    PF470265    0    0    4    0    W624,W317,W1467,W243,W614
0    351    16    34    66    20    9    1    unknown    daily    0    1    0    0    0    MD116493    BR641329    PV419710    CT378940    PF470265    10    0    2    0    W321,W3379,W1239,W5012,W321,W118,W6112,W19051,W928
0    329    9    17    0    0    3    26    female    daily    1    0    0    1    0    MD470265    BR470265    PV789063    CT718720    PF470265    10    1    2    0    W3931,W1233,W188
0    296    17    25    68    18    6    3    female    unknown    0    0    0    0    0    MD356265    BR896654    PV596305    CT956718    PF470265    1    1    3    0    W4867,W149,W18289,W8912,W600,W272
0    630    28    11    30    10    4    0    male    daily    1    0    0    0    0    MD470265    BR470265    PV625797    CT470265    PF470265    10    0    4    0    W7975,W16005,W5975,W40542
0    500    52    19    0    0    6    1    male    daily    0    1    0    1    0    MD596647    BR641329    PV921755    CT470265    PF470265    10    0    2    0    W206,W2106,W1884,W243,W166,W145
0    324    30    24    0    0    11    2    unknown    daily    1    0    0    0    0    MD470265    BR470265    PV008215    CT470265    PF470265    10    0    2    0    W3046,W221,W2011,W5640,W3037,W796,W1887,W386,W200,W1290,W1061
1    441    5    15    7    2    5    1    male    daily    1    0    0    1    0    MD079507    BR803759    PV596305    CT470265    PF470265    10    0    5    0    W4692,W7395,W17695,W3280,W2323
0    725    100    27    0    0    9    5    male    daily    1    0    0    1    0    MD470265    BR470265    PV545833    CT545833    PF470265    10    0    3    0    W6249,W1307,W8223,W2720,W997,W390135,W16165,W628,W1026
0    419    6    8    0    0    3    0    male    weekly    1    0    0    0    0    MD283943    BR800099    PV261182    CT296109    PF470265    10    0    3    0    W14887,W41914,W661
0    318    0    21    137    52    8    4    unknown    daily    1    0    0    0    0    MD180416    BR214617    PV426364    CT449425    PF470265    10    0    4    0    W8618,W4632,W3037,W78640,W164,W1528,W27911,W4745
1    427    29    21    0    0    5    5    unknown    daily    1    0    0    0    0    MD470265    BR470265    PV625797    CT383873    PF470265    10    0    3    0    W17996,W148421,W2642,W97,W1748
0    329    11    11    118    26    2    0    unknown    weekly    0    1    0    0    0    MD634010    BR641329    PV596305    CT470265    PF470265    0    0    3    0    W5074,W4418
0    593    49    18    86    21    4    1    unknown    daily    1    0    0    1    0    MD470265    BR470265    PV419710    CT378940    PF072986    10    0    1    0    W5516,W605,W149,W263
0    368    1    20    0    0    9    1    female    unknown    0    0    0    0    0    MD665915    BR896654    PV280311    CT470265    PF470265    0    0    3    0    W11058,W19321,W54281,W2323,W48556,W6805,W3286,W49355,W272
0    260    0    23    0    0    8    15    unknown    daily    1    0    0    0    0    MD577600    BR896654    PV625797    CT022556    PF470265    10    0    2    0    W973,W145,W11626,W118,W711,W10364,W3694,W2105
1    479    2    36    93    29    11    4    male    daily    1    0    0    1    0    MD470265    BR470265    PV929066    CT929066    PF470265    10    0    4    0    W1114,W1462,W26500,W57,W33105,W2767,W6912,W13276,W7051,W26500,W4937
1    506    65    19    80    19    4    0    unknown    daily    1    0    0    1    0    MD470265    BR470265    PV426364    CT470265    PF470265    10    0    3    0    W9887,W151,W973,W164
1    395    0    8    0    0    3    1    unknown    daily    0    1    0    0    0    MD782190    BR641329    PV587951    CT587951    PF470265    10    0    3    0    W3647,W242,W1136
1    585    58    16    72    24    3    5    male    daily    1    0    0    1    0    MD281170    BR800099    PV421141    CT965658    PF470265    10    0    2    0    W856,W1886,W18221
0    606    100    30    0    0    10    6    male    weekly    0    1    0    1    0    MD661088    BR641329    PV545833    CT545833    PF470265    2    0    3    0    W51,W5056,W8565,W685,W57,W1209,W57,W26039,W463,W360
0    463    42    17    40    17    6    0    female    weekly    0    0    1    1    0    MD470265    BR470265    PV462839    CT470265    PF470265    10    0    5    0    W10442,W1277,W1218,W2508,W10810,W1772
0    325    9    31    0    0    10    1    unknown    monthly    0    1    0    0    0    MD470265    BR470265    PV625797    CT692736    PF470265    1    0    4    0    W3828,W6881,W272,W156789,W2323,W3370,W2928,W605,W381,W622
0    527    5    15    0    0    3    95    female    weekly    0    1    0    1    0    MD566292    BR641329    PV462839    CT470265    PF470265    10    0    4    0    W3413,W4572,W54239
1    361    7    32    0    0    10    1    unknown    weekly    0    1    0    0    0    MD470265    BR470265    PV596305    CT923918    PF470265    10    0    3    0    W23051,W4876,W730,W734,W117376,W1238,W316,W609,W896,W243
1    351    0    12    74    14    4    16

七、数据预处理

import torch
import pandas as pd
import numpy as np
# df = pd.read_csv('zhihutest.csv', sep="t")
# # 类别特征(16)
# fixlen_category_columns = ['m_sex', 'm_access_frequencies', 'm_twoA', 'm_twoB', 'm_twoC',
#                            'm_twoD', 'm_twoE', 'm_categoryA', 'm_categoryB', 'm_categoryC',
#                            'm_categoryD', 'm_categoryE', 'm_num_interest_topic', 'num_topic_attention_intersection',
#                            'q_num_topic_words',
#                            'num_topic_interest_intersection'
#                          ]
# # 数值特征(7)
# fixlen_number_columns = ['m_salt_score', 'm_num_atten_topic', 'q_num_title_chars_words',
#                          'q_num_desc_chars_words', 'q_num_desc_words', 'q_num_title_words',
#                          'days_to_invite'
#                         ]
# target = ['label']
# text = ["q_title_words"]
# #总列数 = 25
# #数值列数: 7
# #数值+类别 = 23
# cols = target + fixlen_number_columns + fixlen_category_columns + text
# fout = df[cols]
# print(fout)
# fout.to_csv("zhihu.txt", mode='a', header=false, index=false,  sep='t')
# df = pd.read_csv('zhihu.txt', sep="t", usecols=[24])
# print(df.iloc[1])
a = np.random.rand(2,20,64)
b = np.float32(a)
lstm = torch.nn.LSTM(input_size=64, hidden_size=10, num_layers=4, batch_first=TruE)
out1, (h1, c1) = lstm(torch.from_numpy(b))
print(out1.size())

八、word权值

W1    0.12561196 -0.57268924 -0.14478925 -0.05249426 -0.036886618 -0.2870279 0.02139771 -0.30615488 -0.25206482 -0.3992112 -0.17992422 0.028214198 0.11070523 -0.1460403 0.04890066 -0.15179704 0.21902226 0.11398847 0.17869796 -0.37419954 -0.017541448 -0.44878265 0.16766284 -0.27377427 -0.28875342 -0.045036126 0.31909382 -0.25074694 -0.47739008 0.23619196 -0.22078764 -0.0702696 0.06263166 -0.20763765 0.09704907 -0.00838474 -0.1655464 0.20232989 0.056676675 -0.22352925 -0.097002655 0.008474487 0.12560087 -0.14395201 -0.12497431 0.04856251 -0.43297425 -0.03700408 0.02355051 -0.19106597 -0.29243338 -0.15640189 0.17767948 0.11662535 0.18274452 0.5316436 -0.2775053 -0.33759427 -0.47088715 -0.33324385 -0.10586255 0.15533929 -0.3057963 0.068118274
W2    3.224765 2.2482696 -0.511986 -0.5329892 -0.94346815 0.7848761 -1.7466401 3.4368124 -1.3447977 1.507573 1.763892 0.04300465 -0.53149086 -0.65491444 -0.2475965 -0.7804506 -3.8735473 -1.604378 -2.8054268 1.866276 -1.2134124 -0.30723703 -1.6847026 0.97294986 0.16995417 1.5299996 1.7447681 -0.9420429 -0.18870392 2.814148 2.876312 0.4483537 -1.5696942 -1.5657848 0.30403557 -3.5486064 1.671584 1.8766971 -0.17914975 -1.1457291 -2.621439 1.3077521 0.5922553 -1.5568334 0.43938446 1.4022862 -0.52703506 -0.30781657 0.8833728 1.6657466 1.6585606 0.9285377 0.6063592 1.0806038 2.1549644 5.8111606 -1.8977596 -3.3637497 -2.6063447 0.18249024 4.9076834 0.36147368 1.0398824 0.9631124
W3    -0.985937 0.11307016 0.012898494 -0.6822068 -0.7477715 -1.5083971 0.18873732 0.8862959 -0.13333559 0.44745678 -1.6474508 0.54304326 0.1943109 -1.5173006 0.052836645 0.6476899 -0.76287407 -1.7811123 1.4354367 0.9168619 -1.1915683 0.5675262 1.8146971 0.77335197 1.4627154 -1.3452206 -0.2794901 0.58791244 0.30307648 -0.33495015 -0.22242078 -0.8549375 0.8336274 0.508776 0.22765012 -0.2259076 1.1074381 -0.5277541 -1.149053 0.26546764 0.10992061 -1.0641412 -1.0234233 0.03276292 -0.09635724 0.6330204 0.2264861 1.5840359 -0.8735956 -0.7754864 0.58081776 -1.372525 0.4713049 0.058009893 -0.48929968 -1.101398 1.3791919 -0.4130507 0.2744553 0.5020652 1.0926367 0.5763596 -0.5411724 -0.014770236
W4    -0.3367663 0.039051324 0.8155926 0.8351733 -0.3697751 0.9960453 -0.13953939 -0.049142037 -0.45639792 0.4392651 0.6774147 0.9220153 1.0198072 -0.91693723 0.13157529 -0.6226927 0.44958356 -0.7831065 -0.42610598 0.11303744 0.35572204 -0.87150127 -0.035929345 0.86534244 -0.5618806 -0.27772513 1.1201656 -0.461846 0.33991888 0.66242754 -0.30612975 0.4649827 -0.7512291 0.036252256 0.25191557 -0.75410306 -0.05073685 0.88312984 0.09898741 -0.19736929 -0.010180523 -0.16381735 0.51063424 -0.17956156 -0.052385904 -0.1254029 0.8307363 0.55609304 -0.8516192 -0.8239702 0.17293625 1.1451373 0.5673448 -0.04732473 1.1474786 -0.017807899 -0.7725623 -1.4019336 -0.12553573 0.4392915 -0.26784056 0.5315127 0.3335459 0.5802117
W5    0.3074205 -1.0977745 0.7528213 0.6299011 0.1975374 0.12329541 -0.4517387 1.1735839 -0.29371184 -0.67508066 0.87006754 0.39526275 1.9724985 -0.38147122 0.15378407 -0.76870894 0.5208314 -0.7383249 0.06193004 0.14570965 0.14756544 -1.2027895 0.8386833 0.39646402 0.039275337 -0.25650737 2.2237034 0.13269994 -0.71340007 2.1263545 -0.20604254 0.6451037 0.4070587 -0.1542667 -0.14662863 -1.3520072 0.048581414 1.6555899 0.8380814 -0.3378566 -1.2679185 0.46683076 0.63580114 -0.6043699 0.28784633 -0.08640877 0.607381 0.9474251 -0.5116208 -0.5747555 -0.01787345 0.30581647 1.0210615 -0.55992776 0.29841763 0.6909648 -1.0312475 -1.847506 -1.0236931 -0.3247338 0.10282218 1.0663713 -0.519434 0.19721127
W6    0.61494493 0.5444025 2.0673835 3.2731245 0.77909213 1.4477565 0.6443283 0.12583794 -1.2945272 -0.24951132 -0.7445469 -0.8159158 0.8766542 2.9739044 1.6059983 2.847475 0.15741627 -1.8566948 -0.77201325 -0.069421366 0.19065484 0.7409739 -2.4119422 -0.43610424 0.075945236 4.1809616 -2.794368 -0.6762555 0.6160988 -0.27621445 -2.6909072 1.6613462 -1.222234 1.379047 -0.8762335 -1.0866759 -1.227303 0.8094839 -0.991168 0.17862324 -0.8094492 1.3342611 0.28272808 0.56088215 0.5823514 0.19371018 2.4717267 0.40118575 0.6642596 0.70348346 -0.019687142 1.3274803 2.0931566 0.2689294 -1.8053719 1.6665238 0.62242544 1.0591005 -0.47918996 -4.0045266 -1.3526242 1.8648475 -0.0633559 0.12525558
W7    -1.0922098 -2.088952 -1.9467407 -0.095274135 0.73766685 -1.3324981 -0.23863605 2.1223712 -0.5489143 0.10345685 -2.6016045 0.9703814 1.6614031 -0.15970723 -1.9562075 -1.6666706 1.0506083 -0.2557899 1.8368233 -0.067096 -1.8985215 -1.0996249 1.3290927 2.4161265 -0.47213927 0.3849108 0.0034949605 8.546595E-4 -2.08523 1.1498582 -0.7590559 -2.146992 1.9317857 0.49643072 1.058629 -0.46381965 -0.30364427 1.3321518 -0.63078755 -0.3178737 0.8979813 -0.28108698 -0.25992736 -1.065179 -1.1152307 -0.19449191 -0.67832875 2.0070937 0.9670678 -0.04272201 -0.90389216 -2.5703933 0.9788946 1.5174438 2.2033823 0.6190921 1.6634784 -0.84447604 -2.3429253 2.1273015 1.1511455 1.0568366 -2.179524 -0.12413034
W8    1.8850589 -1.3846935 -1.3290175 -2.2212234 1.6148094 -0.21146151 1.894543 -0.024923552 -1.005133 -1.5330166 -0.9205202 -0.09463944 -0.98946047 -1.2322261 0.7949223 -1.8138707 0.96810377 1.449417 2.6712353 -0.51707065 0.72894305 0.8826398 -2.0346794 -1.7057327 -1.7577009 0.838245 1.0771643 0.6127623 -3.0707555 -2.7187696 0.5289711 0.2569929 2.7275715 1.4968799 -0.2452353 -0.6800362 -1.8762752 2.193181 0.4007349 0.011191922 -0.6259204 0.9192341 0.40032268 -0.9789072 -1.5940189 2.2916598 -1.561065 0.557704 0.6337721 -0.3848408 -1.9655528 0.67603004 -1.2684052 2.781325 1.8380938 1.5696958 -1.6227767 0.070153154 -2.0467916 -2.485381 0.30974072 1.0064175 -0.13441803 -1.329612
W9    3.5464244 1.6036447 -2.5293458 3.1333735 -2.0442762 -2.9851632 1.4346856 -2.4663894 -0.025672281 0.08756648 0.6147293 0.023265101 -0.10919095 2.7192488 0.87204725 -0.2820551 -0.30785862 0.12090092 -3.5130498 -2.6789558 -0.5764017 -0.5846258 0.5859751 -0.35626814 -2.3668826 0.44950518 1.2879786 1.4998803 1.0923749 -0.00976043 -0.8428258 -1.0809498 1.7901529 0.2144969 -1.7267967 -0.090383604 -1.363677 -2.576643 -1.1217225 -2.468348 -1.0396751 0.53285617 1.3147327 0.81647974 -1.5917714 2.1906781 0.9483048 -2.4917877 1.8687235 0.27996638 -0.43738556 -0.095006086 -0.020946838 -1.6918502 -1.3026488 1.3057652 -0.9144045 2.3955936 -0.19458054 -3.215039 -3.495818 1.2492332 2.0508204 -0.35456043
W10    -2.2662137 -1.9574718 -0.13302466 -4.3436356 1.7448403 -2.1677175 -0.26545736 2.2401462 2.2677085 -1.309996 -2.1214437 -1.177141 -2.4372704 -1.3198556 -1.1695244 1.168789 1.015884 -0.594806 -1.1740255 -0.57405066 0.7847314 1.2742159 -1.7266214 1.6874171 2.032907 -0.17446232 1.4693882 -1.7394896 -0.18483235 -0.53408825 1.0647908 -4.9963064 2.1754081 0.43848997 -1.308212 3.0940924 -0.8896101 0.23257956 -1.4059472 1.0995824 0.3212307 -1.3197386 0.8861918 0.43288517 0.55570036 2.0030572 -1.6898836 4.789943 2.012685 -0.87376535 1.3392564 -0.39256766 0.12622279 -1.9374942 1.4249638 -0.3851611 1.288376 -1.7455869 -2.9280279 0.11417221 0.39837018 -0.08797984 0.39745057 -1.1663383
W11    -1.8233486 2.0506058 -3.2515428 -1.1880394 -1.3893188 1.0621682 -1.3315074 2.1461437 1.3952633 -1.6875589 -2.5420825 -1.9849988 -0.47683784 -1.8435638 1.514539 -0.80441093 -0.99173623 -1.4936146 1.9138579 0.7374752 1.9431698 -0.96729654 1.6452389 1.7321718 0.911836 0.8322483 -3.1768286 2.255713 3.3464186 1.1475248 -0.16955696 -1.7612045 -5.397299 -2.5172055 -0.2939885 -2.041203 1.5774808 -1.1870066 0.16685703 2.8498793 1.9320439 -1.8997726 2.4276707 -0.7750878 -3.3764153 -2.0251844 -0.87747693 -0.39764187 1.0188824 -0.039743427 1.9104943 -2.0641706 -1.1724603 0.58007103 1.0246912 0.8077267 1.3156842 -2.4531717 -2.1099017 -0.19247615 0.46387395 0.19127782 0.6958765 -0.5772965
W12    0.48556754 -0.3782651 2.2997975 2.261273 0.4083756 3.128249 1.3454522 -1.7309117 0.4082361 0.42954805 -0.10541588 -0.0100395875 0.30382836 0.80302244 1.6591026 -0.93889457 1.3209151 0.3527157 -0.63149524 -0.72112906 1.0052388 -0.032466557 -3.2750657 -3.146142E-4 -2.0860028 1.3553876 -1.198162 -0.52659255 -0.22112496 0.06325757 -2.5704465 0.06943303 -0.43335226 1.0315912 0.69085115 -0.6642619 -1.1102613 -0.08351819 0.83566225 -1.1449703 0.8499442 -0.0996228 0.74162143 0.6656831 1.24156 -0.97076166 3.9931488 -1.1789719 -0.6533613 -0.4903609 -1.2098149 1.9589139 0.26404676 -0.37190273 -0.16028062 0.525885 -1.6114401 2.066881 0.21920817 -2.1344752 -2.06417 0.51205325 -0.110927485 0.29716808
W13    0.19286776 0.97593105 1.1760665 1.6522682 -0.7669645 1.1909955 1.0924758 -2.266674 1.0367627 0.7968129 -0.28660434 0.4161866 0.7810446 -0.99575454 -0.16184656 -0.49383563 0.8447127 -0.16373028 -1.593914 1.0633731 1.0397971 -1.7984707 -0.14076096 0.11114727 0.5544285 0.63537514 1.7927763 -1.0619704 -0.440642 -0.23222017 -1.1853625 0.29143685 0.08879236 0.5184061 1.3055124 0.25131506 0.61567587 0.98425937 -0.18469898 -0.6938831 -1.7825798 -0.96643585 -1.0872706 0.27524996 0.6470144 1.2886372 1.4324383 1.8343577 -1.5068318 -1.7749896 -0.26814702 1.9943746 -0.58553463 -2.0208232 0.43590528 -0.6344104 -1.0268904 0.6773552 0.42696643 0.44570908 -1.4512285 -0.4421764 -0.16073075 0.9451965
W14    -1.4975872 -0.05171344 -1.5837607 2.6378388 0.5145237 3.5511696 0.33359003 -2.8335233 2.8076153 0.21341299 -1.8630219 0.65512085 -1.1321408 -0.19878303 0.86941725 -1.0771896 0.3892032 -1.1617596 -1.9551601 -0.9577428 1.016048 -1.167049 0.64454824 -0.24170674 -1.0976492 -0.7169287 -1.5239555 0.2005307 -0.59923834 -1.1073819 -1.8658218 -1.3666234 2.4345636 1.9346207 0.28856465 2.6725085 0.41708738 -1.827212 0.38932738 1.1355253 -0.7327769 -1.5357171 -2.3008456 3.1287837 -0.61515254 0.3323807 0.57125115 1.2867411 -1.6832256 -1.9866133 0.033925824 3.0166345 1.7175115 0.07027325 3.2417045 -1.2321491 -0.91068125 2.1055794 0.013131445 1.0040492 -1.9852926 -1.4327652 0.023684088 -0.13692991
W15    3.5057127 -0.043885194 -0.8190997 -2.2906077 -1.5311654 -0.499458 1.5530281 -1.6159873 -0.15570664 1.528915 0.84011084 1.2226365 -2.3276448 -0.24316585 0.9175231 -2.561437 -0.14275528 2.7427154 -1.5982548 -1.6611183 0.44843268 0.9835045 -1.5639778 -1.2193594 -1.581374 0.2868971 0.47565898 4.240041 -0.5649336 0.6045978 0.38314477 0.07715987 3.9825556 1.4035237 -2.9439008 0.23149264 -3.2482007 -2.0905168 1.8459865 1.058474 0.3007178 -0.0017837499 0.5709634 -0.9801643 0.7286936 5.197704 1.5633762 -2.095106 -0.590826 -0.5677418 -2.1619842 2.2878773 0.12194729 0.25743377 -2.256691 -0.7038811 -1.2787365 3.2720375 1.902351 -2.6107993 -2.0846295 -0.54492134 0.5879578 -0.5057746
W16    -2.0452962 2.7790704 0.8599819 -4.8954825 -2.7227967 -2.4925845 -0.20474386 2.0819283 -0.18221791 -1.5121988 -0.3095648 1.3191587 -0.04623105 -1.705462 -3.7203848 2.1164687 -1.0359333 -5.023697 1.8302708 0.07236947 -1.2637256 -0.5877139 0.49410626 3.4786513 2.2011156 1.2362626 0.52787966 -1.7504953 -2.0405428 1.6479661 -0.78672725 0.94336957 0.67697954 0.5614243 0.7758589 0.67669255 -0.46426576 1.7613895 -0.90594846 -1.0265179 2.3652992 -1.7416269 -0.18174197 0.6209257 -3.5529306 -0.9391469 -1.575419 1.7552205 1.0178684 -1.1110094 2.0775204 -0.75388825 -2.1323745 2.0622365 0.96742326 0.10655046 -1.2731837 -0.94141895 -1.8334563 1.0716884 2.8153598 -0.43824026 1.9744577 -0.28706712
W17    -1.7620399 4.528447 -1.7671988 0.5494214 2.3973732 0.02015205 -0.18269481 2.4271953 -1.1222895 -0.9618898 1.0856631 -1.5881574 2.8190672 2.087121 6.075676 0.6773515 -1.0749277 -0.014855039 -0.58664525 -3.5484717 -4.6698184 5.4795012 -4.5385756 2.3218167 0.035409868 -3.143663 -4.8714123 -3.0491023 0.84198755 -4.497052 0.9888961 4.2981386 2.3218338 -0.022358343 -4.0753236 0.13450176 1.5776345 -4.4275513 -1.3627177 0.7150768 -0.785076 -1.1661426 3.6368656 1.9779291 1.6386815 2.65138 -3.120982 0.9146857 3.7670047 3.9425747 2.5634406 -2.686382 -1.929005 -6.3999925 0.35940954 2.7331047 3.0736244 -2.3717353 4.7949843 -2.1107779 0.6746109 1.2574309 3.2318926 -2.500539
W18    0.15473528 0.6167804 1.7167026 2.9121165 0.269503 0.10636123 3.4708831 -1.5382771 1.1992759 0.18168284 2.5019782 3.612141 3.9854047 -1.5882664 -1.5477096 -3.0422456 1.7823238 2.0636547 -1.4370937 1.3052343 5.6378145 -2.3541868 -3.6185682 -0.40783572 -3.478546 -1.3083613 1.7696565 -0.93460566 -2.4779005 -2.0160322 1.5108185 1.0226414 1.5649385 2.4810264 -1.0504055 1.5927712 -1.2125096 0.17816901 1.1041695 0.82321566 3.084892 0.049549546 -1.0349815 -0.20464003 4.185163 -0.27878857 1.4038125 0.021971399 4.4434958 -2.2899518 -0.72584987 2.5909247 -3.9081511 -0.26109782 0.0013557074 0.2290644 -2.0305889 2.272198 1.7540497 2.0196679 -0.9229598 1.0903741 1.6841339 0.24193175
W19    -2.447269 -0.8793359 -1.1523393 -1.4507253 0.9732452 -1.527036 -2.315722 3.159439 -3.6261277 1.7409768 -4.9887567 1.2373376 -1.0411987 1.991606 1.9732735 1.0008464 0.69035655 0.6105124 1.1336687 0.1371391 -3.5243258 1.2731444 1.0261899 1.1641322 -1.2143499 0.8357258 -2.544022 0.4296619 1.7687589 -1.1008877 0.94163805 -1.4822719 -0.9027046 1.8346741 0.176702 -0.15226924 1.937083 -1.995543 -1.2816978 -1.1957624 1.4393616 -3.2401497 -0.22859575 1.2283462 -1.3554864 1.7207322 1.0686255 0.16442522 1.5106804 1.7412056 -2.0441098 -2.939095 3.0576096 0.05931877 -2.057031 0.87080085 2.4195716 1.8542806 -1.4897007 4.05886 1.440093 -1.5045505 -0.341551 -0.8826472
W20    2.4317594 -2.5110888 -3.7020335 -0.59279317 -0.81826645 -0.73744965 0.26426792 -1.479243 3.2323906 0.13760854 -0.2138856 -1.0425788 0.3526553 0.1300069 0.71234524 -4.468805 1.0853753 -0.62058234 0.7129842 -0.8540014 -4.1106744 2.2727025 1.6877469 2.0950649 0.7688551 2.1442516 2.98514 -2.1409988 -5.0907016 1.5532246 -0.9199374 -3.2675993 0.17646134 1.6836916 4.1119466 -0.22145776 -3.7103643 4.236737 -2.9532087 -0.88752675 -0.49633628 1.5139341 -0.4011149 1.8202754 -1.7638682 -1.6365256 1.3082557 -2.4150834 0.96422815 0.587179 -1.5374656 0.86646986 0.7660016 -2.4612026 2.227851 1.3380407 -1.6148647 1.0061222 -3.6261077 1.2789214 -2.1962628 1.699905 -1.995816 -1.5530183
W21    -0.2703056 1.8392719 -1.2054503 -0.48395538 -5.7971487 -2.6331599 4.0352526 -1.5096587 -2.3522365 0.10684795 1.370795 1.4191186 -3.4433208 0.49266464 -1.1942794 0.26438513 -0.9935388 4.7443166 -1.7586547 -0.5104129 -0.8527214 1.042357 -2.320489 -2.2102757 -0.86960524 -2.686497 1.2472658 4.5115643 5.1399703 0.69941145 -0.26024258 4.8025093 2.0294304 3.244914 -2.8054326 -0.4343817 -0.911383 -3.5767043 4.016076 3.488138 0.01705379 -0.58362496 0.18510656 -1.924577 3.2083511 3.7377274 1.9063605 -0.41186696 1.2022467 0.6376134 -0.7062932 -0.94675505 0.2987619 -0.059485022 -4.064135 -1.4685118 -0.85666335 4.5056853 2.71125 -2.231179 -2.8568563 -1.2534839 -0.81981933 -1.4769105
W22    -0.2617614 -0.99235636 -1.3360858 0.012544698 3.7825391 0.36606872 0.3767669 2.223355 0.6381537 -1.3306204 -0.85466087 -0.96644515 0.9590631 2.5559342 2.4542904 -0.07758791 0.145989 -1.2972796 0.8034251 0.53936785 -1.5072265 2.3272536 -0.5694311 -0.10740515 1.7682558 -1.1184568 -0.77690285 0.20744331 -2.3669522 -0.7972892 -0.8343902 -0.040297605 3.9376059 0.5414876 -1.1917127 -0.90247643 -0.1319108 -0.9595053 0.08407973 1.3535333 -1.7921218 1.0143303 -0.6247334 -1.3810456 1.6846753 2.7751825 0.50540644 1.2734851 1.1276027 2.1919713 -0.6157536 -1.3058081 0.113103576 -2.5760565 -0.5319981 1.0121036 2.246896 0.9857944 1.3536208 0.036636755 -0.5948883 0.6924922 -1.4375504 -1.3249679
W23    -0.9651987 1.489567 3.7892187 -3.7961268 -0.29648548 0.053300433 0.6702064 -2.208451 -2.7420046 -0.63721174 1.0220832 1.7955016 1.1505986 -0.70014924 0.21482033 -0.37031448 1.1962228 1.9465573 1.6602011 -3.2899258 -1.1198668 2.1969705 -4.3133745 0.3307541 -1.5535967 2.6950045 -0.45252553 2.102209 -0.023604078 1.0128834 -0.07702835 0.3234905 -1.1599221 -1.5770309 -1.531138 0.11932727 0.697383 -3.0229428 3.1187625 -1.9312394 -0.030920366 -0.30986938 -1.5411919 1.8363559 0.9686007 1.0706614 0.48427907 0.5915161 -1.5009121 -1.1401902 -0.18640403 -0.78009117 -1.8338839 1.1936028 -1.535172 -2.3523526 -2.109703 -0.8195621 -1.2982402 -1.0543036 2.4673889 -1.792173 1.935543 2.516964
W24    -1.8251535 1.8876748 1.0971074 -1.4578272 1.3089255 -1.9490236 1.6183308 0.26262164 3.3819761 -2.1310601 -2.011434 2.4080157 0.0038511725 -0.26461595 -1.7176443 0.91868275 0.89175886 -0.14072378 0.12834296 0.3248617 2.096536 1.138677 -3.444761 1.2823188 0.6991723 0.1784932 0.9018187 -1.0168108 0.76319486 -2.3365304 -1.036325 -3.0408838 2.3307629 0.34960595 -2.049877 3.4054108 -2.1324139 -0.29900455 0.445328 3.2364163 2.3072093 -0.0030180116 -1.2624956 -0.3893402 -1.4439074 1.735823 1.4525877 5.1423 3.5513415 -1.6825833 -0.27627033 1.696878 -1.2332087 -0.10024076 -1.4734092 -0.9189101 0.16650778 0.6176878 -2.812203 -0.6697208 -1.8221841 0.029978639 -0.15918644 -0.34443417
W25    -0.33015317 -0.38741946 1.6975459 -0.89117235 -1.5155373 2.9153888 0.8343981 -0.26450408 -1.1157738 -2.2361076 2.7365768 0.74073046 -0.5137639 -0.1309951 -0.24929214 -2.1488292 0.84538704 1.5118271 0.7902999 -1.2011646 0.7888036 1.3562698 -2.5850587 -0.29860246 -4.388407 1.7568411 -0.018577736 0.009535411 1.2861177 -0.39966074 1.4036655 2.6377625 1.0923429 1.3092021 -1.6747708 -0.14070179 -2.3365026 0.2586771 1.8804626 1.289512 2.9491673 1.5510907 -0.679748 0.31118867 0.8567329 -0.8637471 2.0013115 0.029997077 -0.42404655 -2.0511773 -1.9803513 0.5438882 -0.047828138 1.214576 -1.1743958 -1.8469224 0.20354868 2.088674 -0.10474008 -1.1028297 -0.40986 -1.366427 1.6552207 0.17932093
W26    0.08060814 -3.5432673 1.0444154 3.1851668 -1.3206809 -1.4131405 1.3266301 -0.666004 -0.63391036 4.94799 0.493011 0.75151974 -2.107727 1.4825441 -1.1863682 -3.371569 -0.132423 0.9060172 -3.7868505 -1.2878495 5.8609447 -4.816618 2.8310385 -3.53249 0.042789314 -1.9698722 1.4370093 2.9523568 2.135083 1.5827739 1.0286837 0.96793324 2.2594564 3.6815593 -2.2796483 -2.6946282 -1.5791732 -2.1242776 -0.22565378 0.4873966 -0.5912663 -2.5352976 2.42151 0.27029833 4.5077214 4.1300635 -0.28895676 -1.4161577 -1.6664641 0.43432903 2.890621 2.5134094 -1.7249513 0.50292605 1.0906894 -0.15024044 -1.8207229 2.071012 1.4593502 2.6433182 -2.4981005 -0.048957057 1.1318222 -3.0151772

 

大佬总结

以上是大佬教程为你收集整理的NLP(八):textDeepFM全部内容,希望文章能够帮你解决NLP(八):textDeepFM所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。