推荐算法:DeepCrossing模型

res_DeepCrossing模型

DeepCrossing

4. 代码实现

# 导包
import warnings
warnings.filterwarnings("ignore")
import pandas as pd
import numpy as np
import tensorflow as tf
from tensorflow.keras.layers import *
from tensorflow.keras.models import *
from sklearn.preprocessing import  MinMaxScaler, LabelEncoder
# from utils import SparseFeat, DenseFeat, VarLenSparseFeat
# from collections import namedtuple

# # 使用具名元组定义特征标记
# SparseFeat = namedtuple('SparseFeat', ['name', 'vocabulary_size', 'embedding_dim'])
# DenseFeat = namedtuple('DenseFeat', ['name', 'dimension'])
# VarLenSparseFeat = namedtuple('VarLenSparseFeat', ['name', 'vocabulary_size', 'embedding_dim', 'maxlen'])

1.读取并处理数据

  • 读取数据
  • 划分出数值型特征和类别型特征
  • 数值型特征处理 – 控制填充,取对数(归一化?)
  • 类别型特征的处理 – one-hot编码
# 读取数据
data = pd.read_csv('./data/criteo_sample.txt')
data.head()
labelI1I2I3I4I5I6I7I8I9...C17C18C19C20C21C22C23C24C25C26
00NaN3260.0NaN17668.0NaNNaN33.0NaN...e5ba767287c6f83cNaNNaN0429f84bNaN3a171ecbc0d61a5cNaNNaN
10NaN-119.035.030251.0247.01.035.0160.0...d4bb7bd86fc84bfbNaNNaN5155d8a3NaNbe7c41b4ded4aac9NaNNaN
200.002.012.02013.0164.06.035.0523.0...e5ba7672675c9258NaNNaN2e01979fNaNbcdee96c6d5d1302NaNNaN
30NaN131.04.016836.0200.05.04.029.0...e5ba767252e44668NaNNaNe587c466NaN32c7478e3b183c5cNaNNaN
400.00104.027.01990.0142.04.032.037.0...e5ba767225c88e4221ddcdc9b1252a9d0e8585d2NaN32c7478e0d4a6d1a001f360192c878de

5 rows × 40 columns

data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200 entries, 0 to 199
Data columns (total 40 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   label   200 non-null    int64  
 1   I1      110 non-null    float64
 2   I2      200 non-null    int64  
 3   I3      166 non-null    float64
 4   I4      165 non-null    float64
 5   I5      194 non-null    float64
 6   I6      149 non-null    float64
 7   I7      190 non-null    float64
 8   I8      200 non-null    float64
 9   I9      190 non-null    float64
 10  I10     110 non-null    float64
 11  I11     190 non-null    float64
 12  I12     43 non-null     float64
 13  I13     165 non-null    float64
 14  C1      200 non-null    object 
 15  C2      200 non-null    object 
 16  C3      191 non-null    object 
 17  C4      191 non-null    object 
 18  C5      200 non-null    object 
 19  C6      168 non-null    object 
 20  C7      200 non-null    object 
 21  C8      200 non-null    object 
 22  C9      200 non-null    object 
 23  C10     200 non-null    object 
 24  C11     200 non-null    object 
 25  C12     191 non-null    object 
 26  C13     200 non-null    object 
 27  C14     200 non-null    object 
 28  C15     200 non-null    object 
 29  C16     191 non-null    object 
 30  C17     200 non-null    object 
 31  C18     200 non-null    object 
 32  C19     118 non-null    object 
 33  C20     118 non-null    object 
 34  C21     191 non-null    object 
 35  C22     41 non-null     object 
 36  C23     200 non-null    object 
 37  C24     191 non-null    object 
 38  C25     118 non-null    object 
 39  C26     118 non-null    object 
dtypes: float64(12), int64(2), object(26)
memory usage: 62.6+ KB
# 将数据划分为sparse_feature和dense_feature
columns = data.columns.values
columns
array(['label', 'I1', 'I2', 'I3', 'I4', 'I5', 'I6', 'I7', 'I8', 'I9',
       'I10', 'I11', 'I12', 'I13', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6',
       'C7', 'C8', 'C9', 'C10', 'C11', 'C12', 'C13', 'C14', 'C15', 'C16',
       'C17', 'C18', 'C19', 'C20', 'C21', 'C22', 'C23', 'C24', 'C25',
       'C26'], dtype=object)
dense_features = [ feat for feat in columns if 'I' in feat]
sparse_features = [feat for feat in columns if 'C' in feat]
dense_features+sparse_features # 列表可以相加
['I1',
 'I2',
 'I3',
 'I4',
 'I5',
 'I6',
 'I7',
 'I8',
 'I9',
 'I10',
 'I11',
 'I12',
 'I13',
 'C1',
 'C2',
 'C3',
 'C4',
 'C5',
 'C6',
 'C7',
 'C8',
 'C9',
 'C10',
 'C11',
 'C12',
 'C13',
 'C14',
 'C15',
 'C16',
 'C17',
 'C18',
 'C19',
 'C20',
 'C21',
 'C22',
 'C23',
 'C24',
 'C25',
 'C26']
# 数据处理的函数
def data_process(data_df,dense_features,sparse_features):
    """
    简单处理特征,包括填充缺失值,数值处理,类别编码
    param data_df: DataFrame格式的数据
    param dense_features: 数值特征名称列表
    param sparse_features: 类别特征名称列表
    """
    data_df[dense_features] = data_df[dense_features].fillna(0.0) # 空值补0.0
    for f in dense_features: # 对数值型特征的处理
        data_df[f] = data_df[f].apply(lambda x: np.log(x+1) if x > -1 else -1)
    # 将类别型特征的空值填上-1    
    data_df[sparse_features] = data_df[sparse_features].fillna("-1")
    for f in sparse_features:
        lbe = LabelEncoder() # 对类别型特征进行了one-hot
        data_df[f] = lbe.fit_transform(data_df[f]) # 传入的是个列表
    
    return data_df[dense_features + sparse_features]
train_data = data_process(data, dense_features, sparse_features)
train_data
I1I2I3I4I5I6I7I8I9I10...C17C18C19C20C21C22C23C24C25C26
00.0000001.3862945.5645200.0000009.7795670.0000000.0000003.5263610.0000000.000000...866003019600
10.000000-1.0000002.9957323.58351910.3173185.5134290.6931473.5835195.0814040.000000...75200470711200
20.0000000.0000001.0986122.5649497.6078785.1059451.9459103.5835196.2614920.000000...8490025065300
30.0000002.6390570.6931471.6094389.7313345.3033051.7917591.6094383.4011970.000000...83700156003200
40.0000000.0000004.6539603.3322057.5963924.9628451.6094383.4965083.6375860.000000...814539005147
..................................................................
1950.0000000.0000004.7361981.3862948.0186256.3561081.0986121.3862945.3706380.000000...0745130501181748
1960.0000000.6931470.6931470.6931477.3827462.5649490.6931472.5649492.7725890.000000...12500138006800
1970.6931470.0000001.9459101.3862940.0000000.0000002.9957321.3862941.3862940.693147...4401724100121611
1980.0000003.1354941.9459103.1354945.3181205.0369534.3944492.9444396.2324480.000000...4718112300101649
1990.693147-1.0000000.0000000.0000004.9344740.0000000.6931470.0000000.0000000.693147...77200000000

200 rows × 39 columns

train_data['label'] = data['label']
train_data
I1I2I3I4I5I6I7I8I9I10...C18C19C20C21C22C23C24C25C26label
00.0000001.3862945.5645200.0000009.7795670.0000000.0000003.5263610.0000000.000000...660030196000
10.000000-1.0000002.9957323.58351910.3173185.5134290.6931473.5835195.0814040.000000...52004707112000
20.0000000.0000001.0986122.5649497.6078785.1059451.9459103.5835196.2614920.000000...4900250653000
30.0000002.6390570.6931471.6094389.7313345.3033051.7917591.6094383.4011970.000000...37001560032000
40.0000000.0000004.6539603.3322057.5963924.9628451.6094383.4965083.6375860.000000...145390051470
..................................................................
1950.0000000.0000004.7361981.3862948.0186256.3561081.0986121.3862945.3706380.000000...7451305011817480
1960.0000000.6931470.6931470.6931477.3827462.5649490.6931472.5649492.7725890.000000...25001380068001
1970.6931470.0000001.9459101.3862940.0000000.0000002.9957321.3862941.3862940.693147...4017241001216111
1980.0000003.1354941.9459103.1354945.3181205.0369534.3944492.9444396.2324480.000000...7181123001016490
1990.693147-1.0000000.0000000.0000004.9344740.0000000.6931470.0000000.0000000.693147...72000000000

200 rows × 40 columns

train_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 200 entries, 0 to 199
Data columns (total 40 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   I1      200 non-null    float64
 1   I2      200 non-null    float64
 2   I3      200 non-null    float64
 3   I4      200 non-null    float64
 4   I5      200 non-null    float64
 5   I6      200 non-null    float64
 6   I7      200 non-null    float64
 7   I8      200 non-null    float64
 8   I9      200 non-null    float64
 9   I10     200 non-null    float64
 10  I11     200 non-null    float64
 11  I12     200 non-null    float64
 12  I13     200 non-null    float64
 13  C1      200 non-null    int32  
 14  C2      200 non-null    int32  
 15  C3      200 non-null    int32  
 16  C4      200 non-null    int32  
 17  C5      200 non-null    int32  
 18  C6      200 non-null    int32  
 19  C7      200 non-null    int32  
 20  C8      200 non-null    int32  
 21  C9      200 non-null    int32  
 22  C10     200 non-null    int32  
 23  C11     200 non-null    int32  
 24  C12     200 non-null    int32  
 25  C13     200 non-null    int32  
 26  C14     200 non-null    int32  
 27  C15     200 non-null    int32  
 28  C16     200 non-null    int32  
 29  C17     200 non-null    int32  
 30  C18     200 non-null    int32  
 31  C19     200 non-null    int32  
 32  C20     200 non-null    int32  
 33  C21     200 non-null    int32  
 34  C22     200 non-null    int32  
 35  C23     200 non-null    int32  
 36  C24     200 non-null    int32  
 37  C25     200 non-null    int32  
 38  C26     200 non-null    int32  
 39  label   200 non-null    int64  
dtypes: float64(13), int32(26), int64(1)
memory usage: 42.3 KB
dense_features
['I1',
 'I2',
 'I3',
 'I4',
 'I5',
 'I6',
 'I7',
 'I8',
 'I9',
 'I10',
 'I11',
 'I12',
 'I13']

2.模型的创建开始了

2.1数值型特征的处理

  • 数值型特征的读入
  • 拼接数值型特征
dense_inputs = [] # 用来存放数值型特征的输入
for f in dense_features:
    _input = Input([1], name=f)
    dense_inputs.append(_input)
dense_inputs
[<tf.Tensor 'I1:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I2:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I3:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I4:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I5:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I6:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I7:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I8:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I9:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I10:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I11:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I12:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I13:0' shape=(None, 1) dtype=float32>]
dense_concat_inputs = Concatenate(axis=1)(dense_inputs)
dense_concat_inputs
<tf.Tensor 'concatenate/concat:0' shape=(None, 13) dtype=float32>

2.2 类别型特征

  • 类别型特征的输入
  • 转化为Embedding
  • 拼接类别型特征
sparse_inputs = [] # 用来存放类别型特征的输入
for f in sparse_features:
    _input = Input([1], name=f)
    sparse_inputs.append(_input)
sparse_inputs
[<tf.Tensor 'C1:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C2:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C3:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C4:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C5:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C6:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C7:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C8:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C9:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C10:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C11:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C12:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C13:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C14:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C15:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C16:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C17:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C18:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C19:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C20:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C21:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C22:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C23:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C24:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C25:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C26:0' shape=(None, 1) dtype=float32>]
  • 对类别型特征进行emb
sparse_1d_embed = [] # 存放各个类别型特征对应的Embedding后的结果
for i, _input in enumerate(sparse_inputs):
    f = sparse_features[i] # f : C1 ... C26, sparse_features是个列表
    voc_size = train_data[f].nunique()
    _embed = Flatten()(Embedding(voc_size+1, 4,)(_input))
    sparse_1d_embed.append(_embed)
sparse_1d_embed
[<tf.Tensor 'flatten_26/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_27/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_28/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_29/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_30/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_31/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_32/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_33/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_34/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_35/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_36/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_37/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_38/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_39/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_40/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_41/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_42/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_43/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_44/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_45/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_46/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_47/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_48/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_49/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_50/Reshape:0' shape=(None, 4) dtype=float32>,
 <tf.Tensor 'flatten_51/Reshape:0' shape=(None, 4) dtype=float32>]
# 类别型特征的拼接
sparse_1d_embed = Concatenate(axis=1)(sparse_1d_embed) # B x m*dim (n表示类别特征的数量,dim表示embedding的维度)
sparse_1d_embed
<tf.Tensor 'concatenate_1/concat:0' shape=(None, 104) dtype=float32>

2.3数值型特征和类别型特征拼接到一起

# 将dense特征和Sparse特征拼接到一起
all_inputs = Concatenate(axis=1)([dense_concat_inputs, sparse_1d_embed]) # B x (n + m*dim)
all_inputs
<tf.Tensor 'concatenate_2/concat:0' shape=(None, 117) dtype=float32>

2.4 残差

# DNN残差块的定义
class ResidualBlock(Layer):
    def __init__(self, units): # units表示的是DNN隐藏层神经元数量
        super(ResidualBlock, self).__init__()
        self.units = units

    def build(self, input_shape):
        out_dim = input_shape[-1]
        self.dnn1 = Dense(self.units, activation='relu')
        self.dnn2 = Dense(out_dim, activation='relu') # 保证输入的维度和输出的维度一致才能进行残差连接
    def call(self, inputs):
        x = inputs
        x = self.dnn1(x)
        x = self.dnn2(x)
        x = Activation('relu')(x + inputs) # 残差操作
        return x


# block_nums表示DNN残差块的数量
def get_dnn_logits(dnn_inputs, block_nums=3):
    dnn_out = dnn_inputs
    for i in range(block_nums):
        dnn_out = ResidualBlock(64)(dnn_out)
    
    # 将dnn的输出转化成logits
    dnn_logits = Dense(1, activation='sigmoid')(dnn_out)

    return dnn_logits
# 输入到dnn中,需要提前定义需要几个残差块
output_layer = get_dnn_logits(all_inputs, block_nums=3)
output_layer
<tf.Tensor 'dense/Sigmoid:0' shape=(None, 1) dtype=float32>
dense_inputs+sparse_inputs
[<tf.Tensor 'I1:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I2:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I3:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I4:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I5:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I6:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I7:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I8:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I9:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I10:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I11:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I12:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'I13:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C1:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C2:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C3:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C4:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C5:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C6:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C7:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C8:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C9:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C10:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C11:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C12:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C13:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C14:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C15:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C16:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C17:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C18:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C19:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C20:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C21:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C22:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C23:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C24:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C25:0' shape=(None, 1) dtype=float32>,
 <tf.Tensor 'C26:0' shape=(None, 1) dtype=float32>]
model = Model(dense_inputs+sparse_inputs, output_layer)
model.summary()
Model: "functional_1"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
C1 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
C2 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
C3 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
C4 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
C5 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
C6 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
C7 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
C8 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
C9 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
C10 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C11 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C12 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C13 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C14 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C15 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C16 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C17 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C18 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C19 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C20 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C21 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C22 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C23 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C24 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C25 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
C26 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
embedding (Embedding)           (None, 1, 4)         112         C1[0][0]                         
__________________________________________________________________________________________________
embedding_1 (Embedding)         (None, 1, 4)         372         C2[0][0]                         
__________________________________________________________________________________________________
embedding_2 (Embedding)         (None, 1, 4)         692         C3[0][0]                         
__________________________________________________________________________________________________
embedding_3 (Embedding)         (None, 1, 4)         632         C4[0][0]                         
__________________________________________________________________________________________________
embedding_4 (Embedding)         (None, 1, 4)         52          C5[0][0]                         
__________________________________________________________________________________________________
embedding_5 (Embedding)         (None, 1, 4)         32          C6[0][0]                         
__________________________________________________________________________________________________
embedding_6 (Embedding)         (None, 1, 4)         736         C7[0][0]                         
__________________________________________________________________________________________________
embedding_7 (Embedding)         (None, 1, 4)         80          C8[0][0]                         
__________________________________________________________________________________________________
embedding_8 (Embedding)         (None, 1, 4)         12          C9[0][0]                         
__________________________________________________________________________________________________
embedding_9 (Embedding)         (None, 1, 4)         572         C10[0][0]                        
__________________________________________________________________________________________________
embedding_10 (Embedding)        (None, 1, 4)         696         C11[0][0]                        
__________________________________________________________________________________________________
embedding_11 (Embedding)        (None, 1, 4)         684         C12[0][0]                        
__________________________________________________________________________________________________
embedding_12 (Embedding)        (None, 1, 4)         668         C13[0][0]                        
__________________________________________________________________________________________________
embedding_13 (Embedding)        (None, 1, 4)         60          C14[0][0]                        
__________________________________________________________________________________________________
embedding_14 (Embedding)        (None, 1, 4)         684         C15[0][0]                        
__________________________________________________________________________________________________
embedding_15 (Embedding)        (None, 1, 4)         676         C16[0][0]                        
__________________________________________________________________________________________________
embedding_16 (Embedding)        (None, 1, 4)         40          C17[0][0]                        
__________________________________________________________________________________________________
embedding_17 (Embedding)        (None, 1, 4)         512         C18[0][0]                        
__________________________________________________________________________________________________
embedding_18 (Embedding)        (None, 1, 4)         180         C19[0][0]                        
__________________________________________________________________________________________________
embedding_19 (Embedding)        (None, 1, 4)         20          C20[0][0]                        
__________________________________________________________________________________________________
embedding_20 (Embedding)        (None, 1, 4)         680         C21[0][0]                        
__________________________________________________________________________________________________
embedding_21 (Embedding)        (None, 1, 4)         28          C22[0][0]                        
__________________________________________________________________________________________________
embedding_22 (Embedding)        (None, 1, 4)         44          C23[0][0]                        
__________________________________________________________________________________________________
embedding_23 (Embedding)        (None, 1, 4)         504         C24[0][0]                        
__________________________________________________________________________________________________
embedding_24 (Embedding)        (None, 1, 4)         84          C25[0][0]                        
__________________________________________________________________________________________________
embedding_25 (Embedding)        (None, 1, 4)         364         C26[0][0]                        
__________________________________________________________________________________________________
I1 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
I2 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
I3 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
I4 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
I5 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
I6 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
I7 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
I8 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
I9 (InputLayer)                 [(None, 1)]          0                                            
__________________________________________________________________________________________________
I10 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
I11 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
I12 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
I13 (InputLayer)                [(None, 1)]          0                                            
__________________________________________________________________________________________________
flatten (Flatten)               (None, 4)            0           embedding[0][0]                  
__________________________________________________________________________________________________
flatten_1 (Flatten)             (None, 4)            0           embedding_1[0][0]                
__________________________________________________________________________________________________
flatten_2 (Flatten)             (None, 4)            0           embedding_2[0][0]                
__________________________________________________________________________________________________
flatten_3 (Flatten)             (None, 4)            0           embedding_3[0][0]                
__________________________________________________________________________________________________
flatten_4 (Flatten)             (None, 4)            0           embedding_4[0][0]                
__________________________________________________________________________________________________
flatten_5 (Flatten)             (None, 4)            0           embedding_5[0][0]                
__________________________________________________________________________________________________
flatten_6 (Flatten)             (None, 4)            0           embedding_6[0][0]                
__________________________________________________________________________________________________
flatten_7 (Flatten)             (None, 4)            0           embedding_7[0][0]                
__________________________________________________________________________________________________
flatten_8 (Flatten)             (None, 4)            0           embedding_8[0][0]                
__________________________________________________________________________________________________
flatten_9 (Flatten)             (None, 4)            0           embedding_9[0][0]                
__________________________________________________________________________________________________
flatten_10 (Flatten)            (None, 4)            0           embedding_10[0][0]               
__________________________________________________________________________________________________
flatten_11 (Flatten)            (None, 4)            0           embedding_11[0][0]               
__________________________________________________________________________________________________
flatten_12 (Flatten)            (None, 4)            0           embedding_12[0][0]               
__________________________________________________________________________________________________
flatten_13 (Flatten)            (None, 4)            0           embedding_13[0][0]               
__________________________________________________________________________________________________
flatten_14 (Flatten)            (None, 4)            0           embedding_14[0][0]               
__________________________________________________________________________________________________
flatten_15 (Flatten)            (None, 4)            0           embedding_15[0][0]               
__________________________________________________________________________________________________
flatten_16 (Flatten)            (None, 4)            0           embedding_16[0][0]               
__________________________________________________________________________________________________
flatten_17 (Flatten)            (None, 4)            0           embedding_17[0][0]               
__________________________________________________________________________________________________
flatten_18 (Flatten)            (None, 4)            0           embedding_18[0][0]               
__________________________________________________________________________________________________
flatten_19 (Flatten)            (None, 4)            0           embedding_19[0][0]               
__________________________________________________________________________________________________
flatten_20 (Flatten)            (None, 4)            0           embedding_20[0][0]               
__________________________________________________________________________________________________
flatten_21 (Flatten)            (None, 4)            0           embedding_21[0][0]               
__________________________________________________________________________________________________
flatten_22 (Flatten)            (None, 4)            0           embedding_22[0][0]               
__________________________________________________________________________________________________
flatten_23 (Flatten)            (None, 4)            0           embedding_23[0][0]               
__________________________________________________________________________________________________
flatten_24 (Flatten)            (None, 4)            0           embedding_24[0][0]               
__________________________________________________________________________________________________
flatten_25 (Flatten)            (None, 4)            0           embedding_25[0][0]               
__________________________________________________________________________________________________
concatenate (Concatenate)       (None, 13)           0           I1[0][0]                         
                                                                 I2[0][0]                         
                                                                 I3[0][0]                         
                                                                 I4[0][0]                         
                                                                 I5[0][0]                         
                                                                 I6[0][0]                         
                                                                 I7[0][0]                         
                                                                 I8[0][0]                         
                                                                 I9[0][0]                         
                                                                 I10[0][0]                        
                                                                 I11[0][0]                        
                                                                 I12[0][0]                        
                                                                 I13[0][0]                        
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 104)          0           flatten[0][0]                    
                                                                 flatten_1[0][0]                  
                                                                 flatten_2[0][0]                  
                                                                 flatten_3[0][0]                  
                                                                 flatten_4[0][0]                  
                                                                 flatten_5[0][0]                  
                                                                 flatten_6[0][0]                  
                                                                 flatten_7[0][0]                  
                                                                 flatten_8[0][0]                  
                                                                 flatten_9[0][0]                  
                                                                 flatten_10[0][0]                 
                                                                 flatten_11[0][0]                 
                                                                 flatten_12[0][0]                 
                                                                 flatten_13[0][0]                 
                                                                 flatten_14[0][0]                 
                                                                 flatten_15[0][0]                 
                                                                 flatten_16[0][0]                 
                                                                 flatten_17[0][0]                 
                                                                 flatten_18[0][0]                 
                                                                 flatten_19[0][0]                 
                                                                 flatten_20[0][0]                 
                                                                 flatten_21[0][0]                 
                                                                 flatten_22[0][0]                 
                                                                 flatten_23[0][0]                 
                                                                 flatten_24[0][0]                 
                                                                 flatten_25[0][0]                 
__________________________________________________________________________________________________
concatenate_2 (Concatenate)     (None, 117)          0           concatenate[0][0]                
                                                                 concatenate_1[0][0]              
__________________________________________________________________________________________________
residual_block (ResidualBlock)  (None, 117)          15157       concatenate_2[0][0]              
__________________________________________________________________________________________________
residual_block_1 (ResidualBlock (None, 117)          15157       residual_block[0][0]             
__________________________________________________________________________________________________
residual_block_2 (ResidualBlock (None, 117)          15157       residual_block_1[0][0]           
__________________________________________________________________________________________________
dense (Dense)                   (None, 1)            118         residual_block_2[0][0]           
==================================================================================================
Total params: 54,805
Trainable params: 54,805
Non-trainable params: 0
__________________________________________________________________________________________________
model.compile(optimizer="adam", 
                loss="binary_crossentropy", 
                metrics=[tf.keras.metrics.AUC(name='auc')])
# 将输入数据转化成字典的形式输入 -- 这样可以
train_model_input = {name: data[name] for name in dense_features + sparse_features}
# 这样还不行,这是个列表
# train_model_input_1 = [data[name] for name in dense_features + sparse_features]
# type(train_model_input_1)
list
# array数组可以
train_dense_x = [train_data[f].values for f in dense_features]
train_sparse_x = [train_data[f].values for f in sparse_features]
train_dense_x
[array([0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 2.99573227, 0.        , 1.09861229,
        1.09861229, 0.        , 0.        , 2.19722458, 0.        ,
        0.        , 0.        , 0.        , 1.79175947, 1.09861229,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        2.30258509, 0.        , 0.        , 2.19722458, 0.        ,
        0.69314718, 0.69314718, 2.48490665, 2.39789527, 0.        ,
        0.        , 0.        , 0.        , 0.        , 2.39789527,
        0.        , 0.        , 0.        , 0.69314718, 1.09861229,
        0.        , 1.60943791, 1.09861229, 0.        , 0.        ,
        0.        , 0.        , 0.        , 1.09861229, 0.        ,
        0.        , 2.07944154, 0.        , 1.79175947, 0.        ,
        0.        , 0.        , 0.        , 1.09861229, 0.        ,
        1.60943791, 0.        , 0.69314718, 0.        , 0.69314718,
        0.        , 0.        , 0.        , 0.        , 0.69314718,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 1.09861229, 0.        ,
        0.        , 0.        , 0.        , 0.        , 1.38629436,
        0.        , 0.        , 0.69314718, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.69314718, 1.38629436,
        0.        , 0.        , 0.        , 2.19722458, 0.        ,
        0.        , 0.        , 0.        , 0.        , 1.38629436,
        0.        , 0.        , 3.63758616, 1.79175947, 0.        ,
        0.        , 0.        , 0.        , 1.38629436, 0.        ,
        0.        , 1.09861229, 0.69314718, 0.        , 2.07944154,
        0.        , 0.        , 0.        , 0.        , 1.09861229,
        0.        , 2.56494936, 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.69314718, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.69314718, 2.30258509, 0.69314718, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 1.60943791,
        0.        , 0.        , 0.        , 1.09861229, 0.        ,
        0.        , 2.19722458, 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.69314718, 0.69314718,
        0.69314718, 0.        , 1.09861229, 0.69314718, 0.        ,
        0.        , 1.79175947, 0.        , 0.        , 0.        ,
        0.        , 1.60943791, 0.        , 0.        , 1.09861229,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.69314718, 0.        , 0.69314718]),
 array([ 1.38629436, -1.        ,  0.        ,  2.63905733,  0.        ,
        -1.        ,  5.91620206,  2.39789527,  0.        ,  2.48490665,
         0.69314718,  1.09861229,  1.79175947, -1.        ,  0.        ,
         4.41884061,  3.21887582,  4.66343909,  4.4543473 ,  1.38629436,
         0.69314718,  1.60943791,  0.        ,  3.78418963,  0.69314718,
         0.69314718,  0.69314718,  3.29583687, -1.        ,  0.69314718,
         5.71373281,  0.        ,  5.52942909,  0.69314718, -1.        ,
         3.58351894,  0.69314718,  0.        ,  5.36129217,  2.48490665,
         1.79175947,  6.65929392,  5.19295685,  0.69314718,  4.29045944,
         4.06044301,  0.69314718,  1.60943791,  1.79175947,  3.91202301,
         7.96067261,  4.78749174,  3.25809654,  5.19849703,  1.09861229,
         0.        ,  4.44265126,  0.        ,  0.69314718,  2.07944154,
         4.00733319,  0.        ,  0.69314718,  1.79175947,  2.99573227,
         0.        ,  1.79175947,  0.69314718,  0.69314718, -1.        ,
         2.94443898,  1.79175947,  3.33220451,  3.91202301,  2.99573227,
         0.69314718,  0.69314718,  4.07753744,  2.48490665,  7.84815309,
         3.4339872 ,  3.91202301, -1.        ,  2.07944154,  4.2341065 ,
         5.72031178,  1.09861229,  0.        ,  0.        ,  3.13549422,
         0.69314718,  0.69314718,  1.60943791,  4.17438727,  0.        ,
         0.69314718,  3.98898405,  0.        ,  0.69314718,  0.69314718,
         0.        ,  0.        ,  6.2126061 ,  2.07944154,  1.60943791,
         1.94591015,  4.06044301,  4.51085951,  3.40119738, -1.        ,
         1.09861229,  4.36944785,  4.73619845,  0.69314718,  0.        ,
         0.69314718,  0.69314718,  1.79175947,  1.09861229,  2.19722458,
         0.        ,  0.69314718,  7.52294092,  4.18965474,  5.10594547,
         2.39789527,  2.77258872, -1.        ,  1.38629436,  0.        ,
         0.69314718,  0.69314718,  5.03043792,  0.69314718, -1.        ,
         2.7080502 , -1.        ,  1.09861229,  2.89037176,  0.69314718,
         5.21493576,  2.63905733,  0.69314718,  0.69314718,  0.69314718,
         1.09861229,  0.69314718,  2.56494936,  0.        , -1.        ,
         5.91620206,  5.47227067,  0.        ,  1.38629436,  0.69314718,
         2.39789527,  1.09861229,  0.69314718,  0.69314718,  0.69314718,
         0.69314718,  0.69314718, -1.        ,  4.31748811,  3.66356165,
         0.69314718,  2.7080502 ,  2.94443898,  1.09861229,  0.        ,
         7.98002359,  4.02535169,  2.19722458,  6.20253552,  3.58351894,
         2.19722458,  0.        ,  0.        ,  5.5174529 ,  0.        ,
         0.        , -1.        ,  3.66356165,  0.        ,  1.94591015,
         3.33220451,  8.00703401,  5.19295685,  0.69314718,  0.        ,
         0.        ,  1.09861229,  2.89037176,  1.09861229,  2.99573227,
         0.        ,  0.69314718,  0.        ,  3.13549422, -1.        ]),
 array([5.56452041, 2.99573227, 1.09861229, 0.69314718, 4.65396035,
        4.15888308, 1.60943791, 3.4339872 , 3.61091791, 2.19722458,
        5.25227343, 1.09861229, 0.        , 0.        , 3.21887582,
        3.04452244, 1.38629436, 1.60943791, 3.97029191, 1.60943791,
        1.79175947, 0.        , 0.        , 1.09861229, 1.09861229,
        1.09861229, 1.09861229, 2.07944154, 4.11087386, 2.63905733,
        4.27666612, 0.69314718, 2.30258509, 1.60943791, 0.69314718,
        2.63905733, 2.63905733, 0.        , 0.        , 1.38629436,
        3.13549422, 0.69314718, 4.12713439, 1.79175947, 3.04452244,
        4.11087386, 3.40119738, 3.98898405, 1.38629436, 0.69314718,
        3.17805383, 1.60943791, 1.79175947, 4.55387689, 0.        ,
        2.30258509, 0.        , 0.69314718, 3.8501476 , 1.60943791,
        0.69314718, 3.55534806, 0.69314718, 2.48490665, 0.69314718,
        4.88280192, 1.09861229, 1.79175947, 0.69314718, 0.        ,
        2.30258509, 0.        , 0.        , 0.        , 2.94443898,
        1.09861229, 0.        , 0.        , 2.48490665, 1.09861229,
        1.09861229, 0.        , 0.        , 0.        , 0.69314718,
        0.69314718, 1.60943791, 1.38629436, 1.79175947, 2.07944154,
        0.        , 1.60943791, 4.33073334, 1.38629436, 1.09861229,
        1.79175947, 2.89037176, 2.07944154, 2.7080502 , 3.25809654,
        3.63758616, 1.60943791, 0.        , 3.04452244, 0.69314718,
        3.97029191, 1.09861229, 0.        , 1.60943791, 1.38629436,
        1.38629436, 2.19722458, 7.94307272, 3.36729583, 0.69314718,
        2.7080502 , 3.33220451, 3.80666249, 3.63758616, 2.19722458,
        3.58351894, 2.99573227, 1.60943791, 0.        , 3.52636052,
        1.79175947, 2.30258509, 0.        , 0.        , 1.94591015,
        2.39789527, 0.69314718, 1.38629436, 2.30258509, 0.        ,
        1.38629436, 0.        , 1.94591015, 3.55534806, 2.07944154,
        1.38629436, 1.38629436, 3.25809654, 2.63905733, 1.09861229,
        6.4035742 , 3.68887945, 1.60943791, 3.09104245, 4.20469262,
        0.        , 0.69314718, 1.09861229, 0.        , 1.09861229,
        0.69314718, 1.09861229, 2.07944154, 1.38629436, 1.38629436,
        1.60943791, 1.38629436, 0.        , 1.38629436, 2.7080502 ,
        0.        , 2.77258872, 3.17805383, 4.34380542, 3.40119738,
        0.        , 2.39789527, 1.94591015, 5.04985601, 0.        ,
        2.19722458, 0.69314718, 0.69314718, 0.69314718, 1.38629436,
        2.39789527, 1.94591015, 0.        , 1.94591015, 0.        ,
        0.        , 1.09861229, 1.79175947, 2.07944154, 2.19722458,
        1.79175947, 0.69314718, 1.79175947, 3.17805383, 6.28413416,
        4.73619845, 0.69314718, 1.94591015, 1.94591015, 0.        ]),
 array([0.        , 3.58351894, 2.56494936, 1.60943791, 3.33220451,
        3.71357207, 0.69314718, 2.39789527, 3.13549422, 3.17805383,
        3.25809654, 0.69314718, 0.        , 0.        , 3.61091791,
        1.60943791, 1.09861229, 0.69314718, 1.94591015, 0.69314718,
        3.61091791, 0.        , 0.        , 1.38629436, 0.69314718,
        1.79175947, 2.83321334, 0.69314718, 2.48490665, 0.69314718,
        1.38629436, 0.        , 1.79175947, 1.60943791, 3.17805383,
        1.79175947, 1.09861229, 0.69314718, 0.        , 1.38629436,
        1.79175947, 0.69314718, 0.        , 2.07944154, 2.48490665,
        3.04452244, 3.4339872 , 2.7080502 , 1.79175947, 0.69314718,
        0.        , 1.60943791, 1.60943791, 2.07944154, 0.        ,
        0.        , 2.07944154, 0.        , 1.94591015, 1.38629436,
        0.69314718, 1.38629436, 0.        , 2.30258509, 0.69314718,
        0.69314718, 0.69314718, 2.94443898, 2.94443898, 0.        ,
        0.        , 2.63905733, 0.        , 0.        , 2.83321334,
        1.79175947, 0.        , 3.04452244, 1.79175947, 0.        ,
        2.77258872, 1.38629436, 0.        , 3.13549422, 0.69314718,
        0.        , 2.07944154, 1.09861229, 0.69314718, 2.30258509,
        0.        , 0.69314718, 3.09104245, 2.07944154, 0.        ,
        0.        , 1.60943791, 2.7080502 , 0.69314718, 2.30258509,
        2.39789527, 0.        , 0.        , 2.19722458, 0.69314718,
        2.77258872, 1.94591015, 0.        , 1.60943791, 1.09861229,
        0.        , 0.        , 1.79175947, 3.13549422, 3.52636052,
        1.38629436, 3.66356165, 1.60943791, 4.47733681, 1.79175947,
        1.60943791, 3.04452244, 0.        , 2.07944154, 2.56494936,
        1.38629436, 0.69314718, 0.        , 1.79175947, 1.09861229,
        1.94591015, 2.77258872, 1.38629436, 0.        , 0.        ,
        1.09861229, 0.        , 1.09861229, 2.48490665, 2.19722458,
        1.38629436, 2.39789527, 3.13549422, 1.38629436, 1.09861229,
        2.48490665, 1.94591015, 1.09861229, 1.79175947, 3.40119738,
        1.38629436, 0.69314718, 1.38629436, 3.21887582, 2.89037176,
        0.        , 1.38629436, 2.56494936, 0.69314718, 0.69314718,
        1.09861229, 2.7080502 , 0.        , 1.60943791, 3.8501476 ,
        1.09861229, 2.48490665, 0.        , 1.60943791, 1.79175947,
        0.        , 2.56494936, 1.38629436, 1.09861229, 0.        ,
        2.56494936, 0.        , 0.        , 0.69314718, 1.09861229,
        1.09861229, 1.94591015, 0.        , 1.94591015, 0.        ,
        0.        , 0.        , 0.69314718, 1.09861229, 1.94591015,
        1.94591015, 2.48490665, 2.07944154, 3.04452244, 2.07944154,
        1.38629436, 0.69314718, 1.38629436, 3.13549422, 0.        ]),
 array([ 9.77956697, 10.31731758,  7.60787807,  9.73133412,  7.5963923 ,
         7.29369772,  7.48885296,  0.69314718,  8.45212119,  3.4339872 ,
         2.19722458,  8.61866616,  9.82146372,  6.5971457 ,  8.52178264,
        13.13692484,  9.22975077,  7.69666708,  3.61091791,  1.60943791,
        12.3872352 ,  7.3607399 ,  7.28961052,  7.43897159,  7.98616486,
         2.94443898,  9.57533065,  8.13534695,  2.48490665,  8.05547514,
         5.60211882,  1.09861229,  3.09104245,  0.69314718,  8.06148687,
         8.50512061, 10.99986401,  9.7251381 ,  7.39817409,  6.93439721,
         9.24232342,  6.51767127,  8.10681604,  7.12205988,  1.60943791,
         9.38117959,  4.72738782,  7.31322039,  9.76457025,  8.04462628,
        10.0683662 ,  9.51259081,  0.        ,  5.02388052,  0.        ,
         9.79300282,  2.39789527,  8.20740183,  6.95368421, 11.22806607,
         0.        ,  0.        ,  8.96380024,  3.21887582,  8.91958692,
         0.        ,  7.33106031,  6.16541785,  9.2865604 ,  6.27098843,
         0.        ,  9.25607826, 10.23113525,  8.22496748,  5.18738581,
         8.79694389, 10.27890574,  9.98322252,  8.37239861, 11.05962948,
         7.90581031,  7.45760929,  5.88053299,  3.63758616, 10.10699966,
         9.51782507,  7.35819375,  0.        ,  7.46851327,  5.59842196,
         9.57831128, 12.3676216 ,  5.50938834,  9.59886276,  8.37054761,
         9.37067191,  7.32514896,  8.23004431,  4.77912349,  7.24208236,
         2.77258872,  9.35314117,  4.53259949,  1.79175947,  5.60211882,
         5.95064255,  7.42892719,  7.28344823,  9.41295463,  5.65599181,
         8.53542596, 10.46891499,  1.09861229,  2.48490665,  9.37373392,
         8.00936308,  7.31322039,  9.4045905 ,  5.25227343, 10.15272761,
         5.25227343,  0.69314718,  3.36729583,  9.2444519 ,  4.44265126,
         9.09537835,  9.93081085,  7.3395377 ,  7.56060116,  4.26267988,
         9.36443391,  6.30809844,  7.52185925,  8.76904081,  9.93532531,
        12.63146129,  0.        ,  2.19722458,  7.48717369,  8.41227702,
         8.66198594,  3.8918203 , 10.58215541,  8.63887971,  7.49331725,
         1.09861229,  3.8918203 ,  1.79175947,  7.96067261,  7.98650494,
         5.88053299,  8.43814998,  9.24261393,  7.52510075,  2.07944154,
         8.66250492,  8.12563099,  8.01035959,  4.15888308,  6.33505425,
         9.06935268,  5.86363118,  7.24351297,  9.79768249,  8.76826315,
         9.58169701,  8.32093497, 10.64601996,  0.        ,  3.71357207,
         3.8918203 ,  5.70378247,  1.79175947,  0.69314718, 12.58808146,
        10.58009876,  4.53259949,  9.85686753, 11.28503316,  8.05547514,
        10.63842426,  6.77193556, 10.67373465, 11.72826263,  5.70711026,
        11.63407173,  8.05038445,  7.28961052,  7.97625194,  4.83628191,
         8.77369415,  7.65917137,  8.74655735,  5.00394631, 11.03438954,
         8.01862547,  7.38274645,  0.        ,  5.31811999,  4.93447393]),
 array([0.        , 5.51342875, 5.10594547, 5.30330491, 4.96284463,
        4.12713439, 4.18965474, 1.38629436, 5.38449506, 2.48490665,
        3.29583687, 0.69314718, 6.13556489, 1.09861229, 6.0799332 ,
        0.        , 0.        , 0.        , 3.61091791, 0.69314718,
        0.        , 0.        , 1.60943791, 3.09104245, 3.68887945,
        1.79175947, 4.38202663, 4.65396035, 2.07944154, 5.09986643,
        2.99573227, 0.        , 1.94591015, 0.        , 4.99721227,
        4.94875989, 5.68017261, 1.09861229, 4.18965474, 1.38629436,
        0.        , 0.        , 0.        , 2.63905733, 2.48490665,
        3.04452244, 3.4339872 , 3.04452244, 0.        , 4.29045944,
        0.        , 0.        , 0.        , 3.66356165, 0.        ,
        4.09434456, 1.94591015, 3.76120012, 4.72738782, 0.        ,
        0.        , 0.        , 4.78749174, 2.30258509, 2.30258509,
        0.69314718, 1.38629436, 4.15888308, 0.        , 2.77258872,
        0.        , 5.14166356, 0.        , 3.04452244, 3.49650756,
        4.65396035, 0.        , 6.94119006, 4.12713439, 5.98896142,
        5.35185813, 3.04452244, 0.        , 3.13549422, 3.78418963,
        0.        , 4.26267988, 0.        , 3.63758616, 2.48490665,
        5.79605775, 0.        , 4.24849524, 3.66356165, 0.        ,
        6.19644413, 4.47733681, 6.47234629, 0.69314718, 3.68887945,
        0.        , 0.        , 0.        , 3.13549422, 5.14166356,
        0.        , 6.31173481, 0.        , 0.        , 1.79175947,
        0.        , 6.74993119, 1.38629436, 3.21887582, 0.        ,
        2.77258872, 4.30406509, 0.        , 4.51085951, 0.        ,
        4.4543473 , 3.04452244, 0.        , 4.21950771, 4.15888308,
        4.2341065 , 0.        , 4.75359019, 3.13549422, 2.39789527,
        0.        , 3.21887582, 4.57471098, 4.91998093, 0.        ,
        0.        , 0.        , 2.30258509, 3.93182563, 5.22035583,
        0.        , 2.83321334, 4.20469262, 3.91202301, 1.60943791,
        2.48490665, 2.7080502 , 1.38629436, 0.        , 4.47733681,
        0.        , 3.98898405, 6.47543272, 3.61091791, 1.60943791,
        5.10594547, 0.        , 4.84418709, 0.69314718, 0.        ,
        2.48490665, 3.93182563, 0.        , 3.49650756, 6.79009724,
        6.79794041, 4.83628191, 0.        , 1.60943791, 1.79175947,
        2.89037176, 0.        , 1.38629436, 0.        , 0.        ,
        7.50714108, 0.        , 2.48490665, 0.        , 3.09104245,
        4.44265126, 3.4657359 , 6.52356231, 0.        , 3.25809654,
        7.65302041, 3.87120101, 1.94591015, 1.09861229, 4.81218436,
        4.54329478, 4.38202663, 0.        , 0.        , 0.        ,
        6.35610766, 2.56494936, 0.        , 5.0369526 , 0.        ]),
 array([0.        , 0.69314718, 1.94591015, 1.79175947, 1.60943791,
        1.60943791, 2.7080502 , 3.52636052, 2.30258509, 1.09861229,
        1.09861229, 3.73766962, 3.17805383, 3.13549422, 3.25809654,
        0.        , 0.        , 0.        , 3.4339872 , 1.09861229,
        0.        , 0.        , 1.79175947, 1.94591015, 2.89037176,
        2.30258509, 1.09861229, 2.39789527, 2.30258509, 0.69314718,
        0.69314718, 1.60943791, 3.55534806, 2.39789527, 4.14313473,
        0.69314718, 0.        , 0.69314718, 3.21887582, 4.48863637,
        0.        , 0.        , 0.        , 2.30258509, 3.21887582,
        0.69314718, 3.33220451, 2.48490665, 0.        , 1.38629436,
        0.        , 0.        , 0.        , 1.09861229, 0.        ,
        1.09861229, 3.40119738, 1.09861229, 1.79175947, 0.        ,
        0.        , 0.        , 0.69314718, 4.7095302 , 2.30258509,
        2.7080502 , 2.30258509, 2.77258872, 0.        , 2.19722458,
        0.        , 1.60943791, 0.        , 0.69314718, 3.55534806,
        0.69314718, 0.        , 2.30258509, 1.60943791, 0.        ,
        1.79175947, 0.69314718, 0.        , 1.60943791, 1.60943791,
        0.69314718, 1.60943791, 0.        , 0.69314718, 2.56494936,
        2.77258872, 0.        , 0.69314718, 1.60943791, 2.19722458,
        2.39789527, 0.69314718, 0.        , 1.60943791, 1.79175947,
        0.        , 0.        , 0.        , 5.15329159, 0.69314718,
        0.        , 1.79175947, 0.        , 0.        , 1.94591015,
        1.94591015, 1.09861229, 3.29583687, 1.79175947, 0.        ,
        1.94591015, 2.7080502 , 0.        , 1.38629436, 0.        ,
        3.78418963, 1.09861229, 0.69314718, 0.69314718, 2.19722458,
        1.09861229, 0.        , 2.89037176, 3.93182563, 5.5174529 ,
        0.        , 2.56494936, 2.56494936, 1.09861229, 0.        ,
        0.        , 0.        , 0.69314718, 0.69314718, 1.09861229,
        0.        , 2.48490665, 0.69314718, 1.38629436, 0.69314718,
        1.09861229, 2.63905733, 3.25809654, 0.        , 4.24849524,
        0.        , 2.89037176, 2.48490665, 2.39789527, 1.60943791,
        1.79175947, 0.        , 1.79175947, 3.09104245, 0.        ,
        0.69314718, 2.19722458, 0.69314718, 2.48490665, 2.56494936,
        1.38629436, 1.60943791, 0.        , 0.69314718, 0.69314718,
        3.04452244, 0.        , 3.25809654, 2.19722458, 0.        ,
        0.        , 1.79175947, 2.48490665, 0.        , 1.60943791,
        0.        , 3.63758616, 0.        , 0.        , 1.09861229,
        0.        , 0.69314718, 4.26267988, 5.71042702, 1.79175947,
        2.99573227, 1.94591015, 0.        , 0.        , 0.        ,
        1.09861229, 0.69314718, 2.99573227, 4.39444915, 0.69314718]),
 array([3.52636052, 3.58351894, 3.58351894, 1.60943791, 3.49650756,
        3.63758616, 3.25809654, 3.87120101, 3.58351894, 2.19722458,
        3.33220451, 0.69314718, 1.60943791, 1.09861229, 3.49650756,
        1.60943791, 3.49650756, 0.69314718, 3.21887582, 0.69314718,
        0.        , 2.89037176, 1.38629436, 2.39789527, 1.38629436,
        1.79175947, 2.83321334, 1.09861229, 3.4339872 , 0.69314718,
        1.94591015, 0.        , 1.79175947, 1.60943791, 0.        ,
        3.13549422, 1.09861229, 0.69314718, 0.69314718, 1.38629436,
        1.79175947, 1.60943791, 0.69314718, 2.77258872, 2.7080502 ,
        2.99573227, 3.52636052, 2.99573227, 2.19722458, 0.69314718,
        1.09861229, 2.07944154, 1.60943791, 3.4339872 , 0.        ,
        0.        , 3.73766962, 3.4339872 , 3.78418963, 1.38629436,
        0.69314718, 1.38629436, 2.99573227, 2.30258509, 0.69314718,
        2.39789527, 1.09861229, 1.60943791, 0.69314718, 1.09861229,
        2.07944154, 2.63905733, 1.38629436, 1.38629436, 3.55534806,
        2.89037176, 0.        , 0.69314718, 2.7080502 , 2.07944154,
        3.78418963, 2.7080502 , 2.39789527, 0.69314718, 2.56494936,
        0.        , 3.76120012, 1.38629436, 2.19722458, 2.77258872,
        0.        , 1.38629436, 3.52636052, 2.83321334, 0.        ,
        2.63905733, 1.79175947, 3.63758616, 0.69314718, 3.49650756,
        2.39789527, 0.        , 0.        , 3.09104245, 2.99573227,
        3.09104245, 3.8918203 , 1.94591015, 2.99573227, 2.19722458,
        0.        , 0.        , 3.91202301, 3.13549422, 0.69314718,
        1.79175947, 3.58351894, 1.60943791, 3.91202301, 1.38629436,
        2.94443898, 2.7080502 , 0.        , 2.83321334, 2.99573227,
        3.76120012, 2.56494936, 3.04452244, 1.79175947, 0.69314718,
        2.39789527, 2.94443898, 1.94591015, 1.94591015, 1.79175947,
        1.09861229, 0.        , 1.09861229, 3.25809654, 1.60943791,
        1.38629436, 2.39789527, 3.36729583, 1.38629436, 1.09861229,
        2.48490665, 3.4339872 , 2.99573227, 3.4657359 , 3.58351894,
        1.60943791, 2.83321334, 1.38629436, 2.30258509, 2.94443898,
        1.94591015, 1.79175947, 3.73766962, 1.09861229, 1.79175947,
        1.38629436, 3.58351894, 0.        , 2.30258509, 2.30258509,
        2.07944154, 3.58351894, 0.        , 1.60943791, 1.79175947,
        2.39789527, 3.17805383, 2.48490665, 2.07944154, 2.07944154,
        2.99573227, 0.        , 0.        , 0.69314718, 1.38629436,
        1.79175947, 3.76120012, 1.09861229, 1.79175947, 3.25809654,
        1.09861229, 0.        , 1.94591015, 1.38629436, 3.55534806,
        2.07944154, 1.09861229, 3.76120012, 3.04452244, 2.07944154,
        1.38629436, 2.56494936, 1.38629436, 2.94443898, 0.        ]),
 array([0.        , 5.08140436, 6.26149168, 3.40119738, 3.63758616,
        3.8501476 , 6.19440539, 4.84418709, 4.91265489, 3.17805383,
        3.25809654, 3.52636052, 5.44673737, 1.09861229, 5.26269019,
        1.60943791, 4.02535169, 0.69314718, 5.64190707, 0.69314718,
        4.82028157, 4.02535169, 1.60943791, 3.09104245, 6.08221891,
        1.79175947, 4.6443909 , 1.94591015, 3.68887945, 3.49650756,
        2.99573227, 0.        , 1.79175947, 1.60943791, 6.62539237,
        4.12713439, 4.47733681, 0.69314718, 4.73619845, 4.88280192,
        2.63905733, 1.60943791, 0.        , 4.49980967, 4.24849524,
        3.04452244, 4.97673374, 4.59511985, 2.19722458, 3.8918203 ,
        3.87120101, 3.58351894, 1.60943791, 3.29583687, 0.        ,
        4.59511985, 5.66642669, 3.63758616, 4.71849887, 1.38629436,
        0.69314718, 1.38629436, 3.4339872 , 5.00394631, 2.30258509,
        3.71357207, 1.09861229, 6.68959927, 5.64190707, 6.37331979,
        2.83321334, 4.57471098, 0.        , 3.04452244, 5.30330491,
        4.31748811, 0.        , 5.02388052, 4.2341065 , 4.81218436,
        5.49306144, 2.83321334, 2.48490665, 4.91265489, 4.14313473,
        0.        , 4.77068462, 2.63905733, 2.48490665, 6.3526294 ,
        6.07073773, 0.69314718, 3.52636052, 3.25809654, 0.        ,
        4.94875989, 2.48490665, 6.07073773, 3.49650756, 3.63758616,
        2.39789527, 0.69314718, 0.        , 6.34388043, 5.28320373,
        3.09104245, 6.02344759, 2.39789527, 4.30406509, 3.4339872 ,
        1.38629436, 4.59511985, 4.36944785, 3.13549422, 6.22059017,
        4.99043259, 5.59842196, 1.60943791, 4.48863637, 1.79175947,
        5.18178355, 3.04452244, 0.        , 4.21950771, 2.94443898,
        5.12989871, 0.        , 5.62401751, 4.59511985, 6.94215671,
        1.94591015, 3.04452244, 2.48490665, 4.59511985, 2.19722458,
        4.66343909, 0.        , 1.09861229, 4.63472899, 5.22035583,
        2.30258509, 5.09986643, 4.11087386, 4.09434456, 1.09861229,
        2.48490665, 4.2341065 , 4.73619845, 0.69314718, 4.41884061,
        1.79175947, 5.6094718 , 4.85203026, 5.170484  , 2.94443898,
        5.08140436, 1.60943791, 4.80402104, 4.69134788, 1.38629436,
        2.07944154, 3.63758616, 0.        , 4.59511985, 6.76041469,
        4.07753744, 4.71849887, 0.        , 1.60943791, 1.79175947,
        4.44265126, 3.29583687, 6.58340922, 3.8286414 , 0.        ,
        5.7651911 , 0.        , 4.49980967, 0.        , 3.21887582,
        3.91202301, 5.81413053, 3.04452244, 2.99573227, 4.2341065 ,
        4.56434819, 0.69314718, 2.83321334, 4.00733319, 4.68213123,
        3.63758616, 4.74493213, 0.69314718, 3.04452244, 1.09861229,
        5.37063803, 2.77258872, 1.38629436, 6.23244802, 0.        ]),
 array([0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 1.38629436, 0.        , 0.69314718,
        0.69314718, 0.        , 0.        , 0.69314718, 0.        ,
        0.        , 0.        , 0.        , 0.69314718, 0.69314718,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.69314718, 0.        , 0.        , 0.69314718, 0.        ,
        0.69314718, 0.69314718, 0.69314718, 0.69314718, 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.69314718,
        0.        , 0.        , 0.        , 0.        , 0.69314718,
        0.        , 1.09861229, 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.69314718, 0.        ,
        0.        , 0.69314718, 0.        , 0.69314718, 0.        ,
        0.        , 0.        , 0.        , 0.69314718, 0.        ,
        0.69314718, 0.        , 0.69314718, 0.        , 0.69314718,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.69314718, 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.69314718,
        0.        , 0.        , 0.69314718, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.69314718, 0.        ,
        0.        , 0.        , 0.        , 0.69314718, 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.69314718,
        0.        , 0.        , 0.        , 1.38629436, 0.        ,
        0.        , 0.        , 0.        , 1.09861229, 0.        ,
        0.        , 0.69314718, 0.69314718, 0.        , 0.69314718,
        0.        , 0.        , 0.        , 0.        , 0.69314718,
        0.        , 1.09861229, 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.69314718, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.69314718, 1.09861229, 0.69314718, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.69314718,
        0.        , 0.        , 0.        , 1.09861229, 0.        ,
        0.        , 0.69314718, 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.69314718, 0.69314718,
        0.69314718, 0.        , 0.69314718, 0.69314718, 0.        ,
        0.        , 0.69314718, 0.        , 0.        , 0.        ,
        0.        , 0.69314718, 0.        , 0.        , 0.69314718,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.69314718, 0.        , 0.69314718]),
 array([0.        , 0.69314718, 1.38629436, 1.09861229, 0.69314718,
        0.69314718, 2.07944154, 1.79175947, 0.69314718, 0.69314718,
        0.69314718, 1.79175947, 1.09861229, 1.60943791, 2.30258509,
        0.        , 0.        , 0.        , 1.79175947, 0.69314718,
        0.        , 0.        , 0.69314718, 0.69314718, 2.07944154,
        0.69314718, 0.69314718, 0.69314718, 1.09861229, 0.69314718,
        0.69314718, 1.09861229, 1.60943791, 0.69314718, 2.30258509,
        0.69314718, 0.        , 0.69314718, 1.94591015, 2.77258872,
        0.        , 0.        , 0.        , 1.38629436, 2.07944154,
        0.69314718, 1.60943791, 1.38629436, 0.        , 0.69314718,
        0.        , 0.        , 0.        , 0.69314718, 0.        ,
        0.69314718, 1.60943791, 0.69314718, 0.69314718, 0.        ,
        0.        , 0.        , 0.69314718, 2.39789527, 0.69314718,
        1.38629436, 0.69314718, 1.60943791, 0.        , 1.60943791,
        0.        , 0.69314718, 0.        , 0.69314718, 2.30258509,
        0.69314718, 0.        , 1.09861229, 1.09861229, 0.        ,
        1.09861229, 0.69314718, 0.        , 1.38629436, 0.69314718,
        0.69314718, 0.69314718, 0.        , 0.69314718, 2.07944154,
        2.30258509, 0.        , 0.69314718, 1.38629436, 0.69314718,
        0.69314718, 0.69314718, 0.        , 0.69314718, 1.09861229,
        0.        , 0.        , 0.        , 3.09104245, 0.69314718,
        0.        , 0.69314718, 0.        , 0.        , 1.60943791,
        1.79175947, 0.69314718, 0.69314718, 1.38629436, 0.        ,
        1.38629436, 1.60943791, 0.        , 1.09861229, 0.        ,
        1.38629436, 0.69314718, 0.69314718, 0.69314718, 1.09861229,
        1.09861229, 0.        , 1.79175947, 1.60943791, 3.49650756,
        0.        , 1.09861229, 0.69314718, 0.69314718, 0.        ,
        0.        , 0.        , 0.69314718, 0.69314718, 0.69314718,
        0.        , 1.38629436, 0.        , 0.69314718, 0.69314718,
        1.09861229, 1.60943791, 1.09861229, 0.        , 1.79175947,
        0.        , 0.69314718, 1.38629436, 1.09861229, 0.69314718,
        1.79175947, 0.        , 1.09861229, 2.30258509, 0.        ,
        0.69314718, 0.69314718, 0.69314718, 2.39789527, 0.69314718,
        0.69314718, 0.69314718, 0.        , 0.69314718, 0.69314718,
        1.09861229, 0.        , 1.94591015, 2.07944154, 0.        ,
        0.        , 0.69314718, 1.09861229, 0.        , 1.09861229,
        0.        , 2.83321334, 0.        , 0.        , 0.69314718,
        0.        , 0.69314718, 2.39789527, 2.77258872, 1.38629436,
        0.69314718, 1.38629436, 0.        , 0.        , 0.        ,
        0.69314718, 0.69314718, 2.30258509, 2.48490665, 0.69314718]),
 array([0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 1.09861229, 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.69314718, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.69314718,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 2.07944154, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.69314718, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.69314718, 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 1.09861229, 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 1.38629436,
        0.        , 0.        , 0.        , 1.09861229, 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.69314718, 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ,
        0.69314718, 0.69314718, 0.        , 0.        , 0.        ,
        0.        , 0.        , 0.        , 0.        , 0.        ]),
 array([0.        , 3.58351894, 2.94443898, 1.60943791, 3.33220451,
        3.71357207, 3.25809654, 1.09861229, 3.78418963, 2.48490665,
        3.25809654, 0.69314718, 0.        , 0.        , 3.61091791,
        1.60943791, 1.09861229, 0.69314718, 1.94591015, 0.69314718,
        4.14313473, 0.        , 0.        , 2.07944154, 0.69314718,
        1.79175947, 2.83321334, 0.69314718, 2.07944154, 0.69314718,
        2.99573227, 0.        , 1.79175947, 0.        , 3.68887945,
        2.48490665, 1.09861229, 0.69314718, 0.        , 1.38629436,
        1.79175947, 0.69314718, 0.        , 2.07944154, 2.48490665,
        3.04452244, 3.4339872 , 2.7080502 , 1.94591015, 0.69314718,
        1.09861229, 1.60943791, 0.69314718, 3.25809654, 0.        ,
        0.        , 1.79175947, 0.        , 1.94591015, 1.38629436,
        0.69314718, 1.38629436, 0.        , 2.30258509, 0.69314718,
        0.        , 0.69314718, 4.15888308, 2.94443898, 0.        ,
        2.07944154, 2.63905733, 0.        , 0.        , 2.83321334,
        1.79175947, 0.        , 3.78418963, 1.79175947, 0.69314718,
        2.77258872, 1.38629436, 0.        , 3.13549422, 0.69314718,
        0.        , 3.61091791, 1.09861229, 0.69314718, 2.30258509,
        0.        , 0.69314718, 3.4657359 , 2.89037176, 0.        ,
        0.69314718, 1.60943791, 2.7080502 , 0.69314718, 2.39789527,
        2.39789527, 0.        , 0.        , 0.        , 0.69314718,
        2.77258872, 4.63472899, 1.09861229, 1.60943791, 1.79175947,
        0.        , 0.        , 1.38629436, 3.09104245, 3.52636052,
        1.38629436, 3.66356165, 1.60943791, 4.48863637, 1.79175947,
        2.19722458, 2.56494936, 0.        , 2.07944154, 2.94443898,
        1.38629436, 1.60943791, 0.        , 1.79175947, 1.09861229,
        1.94591015, 2.83321334, 1.38629436, 1.09861229, 0.        ,
        1.09861229, 0.        , 1.09861229, 2.48490665, 3.8501476 ,
        1.38629436, 1.94591015, 3.40119738, 1.38629436, 1.09861229,
        2.48490665, 1.94591015, 1.09861229, 3.4657359 , 3.49650756,
        1.38629436, 0.69314718, 1.38629436, 3.21887582, 1.38629436,
        1.79175947, 1.38629436, 2.56494936, 0.69314718, 0.69314718,
        1.09861229, 2.94443898, 0.        , 1.60943791, 3.8501476 ,
        1.09861229, 2.7080502 , 0.        , 1.60943791, 1.79175947,
        0.        , 3.29583687, 1.38629436, 0.        , 0.        ,
        2.56494936, 0.        , 0.        , 0.69314718, 1.09861229,
        1.09861229, 1.94591015, 0.        , 1.94591015, 0.        ,
        0.        , 0.        , 1.38629436, 1.09861229, 3.21887582,
        2.07944154, 2.48490665, 3.58351894, 3.04452244, 2.07944154,
        1.38629436, 2.56494936, 0.        , 3.13549422, 0.        ])]
train_model_input
{'I1': 0      0.000000
 1      0.000000
 2      0.000000
 3      0.000000
 4      0.000000
          ...   
 195    0.000000
 196    0.000000
 197    0.693147
 198    0.000000
 199    0.693147
 Name: I1, Length: 200, dtype: float64,
 'I2': 0      1.386294
 1     -1.000000
 2      0.000000
 3      2.639057
 4      0.000000
          ...   
 195    0.000000
 196    0.693147
 197    0.000000
 198    3.135494
 199   -1.000000
 Name: I2, Length: 200, dtype: float64,
 'I3': 0      5.564520
 1      2.995732
 2      1.098612
 3      0.693147
 4      4.653960
          ...   
 195    4.736198
 196    0.693147
 197    1.945910
 198    1.945910
 199    0.000000
 Name: I3, Length: 200, dtype: float64,
 'I4': 0      0.000000
 1      3.583519
 2      2.564949
 3      1.609438
 4      3.332205
          ...   
 195    1.386294
 196    0.693147
 197    1.386294
 198    3.135494
 199    0.000000
 Name: I4, Length: 200, dtype: float64,
 'I5': 0       9.779567
 1      10.317318
 2       7.607878
 3       9.731334
 4       7.596392
          ...    
 195     8.018625
 196     7.382746
 197     0.000000
 198     5.318120
 199     4.934474
 Name: I5, Length: 200, dtype: float64,
 'I6': 0      0.000000
 1      5.513429
 2      5.105945
 3      5.303305
 4      4.962845
          ...   
 195    6.356108
 196    2.564949
 197    0.000000
 198    5.036953
 199    0.000000
 Name: I6, Length: 200, dtype: float64,
 'I7': 0      0.000000
 1      0.693147
 2      1.945910
 3      1.791759
 4      1.609438
          ...   
 195    1.098612
 196    0.693147
 197    2.995732
 198    4.394449
 199    0.693147
 Name: I7, Length: 200, dtype: float64,
 'I8': 0      3.526361
 1      3.583519
 2      3.583519
 3      1.609438
 4      3.496508
          ...   
 195    1.386294
 196    2.564949
 197    1.386294
 198    2.944439
 199    0.000000
 Name: I8, Length: 200, dtype: float64,
 'I9': 0      0.000000
 1      5.081404
 2      6.261492
 3      3.401197
 4      3.637586
          ...   
 195    5.370638
 196    2.772589
 197    1.386294
 198    6.232448
 199    0.000000
 Name: I9, Length: 200, dtype: float64,
 'I10': 0      0.000000
 1      0.000000
 2      0.000000
 3      0.000000
 4      0.000000
          ...   
 195    0.000000
 196    0.000000
 197    0.693147
 198    0.000000
 199    0.693147
 Name: I10, Length: 200, dtype: float64,
 'I11': 0      0.000000
 1      0.693147
 2      1.386294
 3      1.098612
 4      0.693147
          ...   
 195    0.693147
 196    0.693147
 197    2.302585
 198    2.484907
 199    0.693147
 Name: I11, Length: 200, dtype: float64,
 'I12': 0      0.0
 1      0.0
 2      0.0
 3      0.0
 4      0.0
       ... 
 195    0.0
 196    0.0
 197    0.0
 198    0.0
 199    0.0
 Name: I12, Length: 200, dtype: float64,
 'I13': 0      0.000000
 1      3.583519
 2      2.944439
 3      1.609438
 4      3.332205
          ...   
 195    1.386294
 196    2.564949
 197    0.000000
 198    3.135494
 199    0.000000
 Name: I13, Length: 200, dtype: float64,
 'C1': 0       0
 1      11
 2       0
 3       0
 4       0
        ..
 195     0
 196    21
 197     0
 198     0
 199    21
 Name: C1, Length: 200, dtype: int32,
 'C2': 0       4
 1       1
 2      18
 3      45
 4      11
        ..
 195     0
 196    64
 197     5
 198    84
 199    68
 Name: C2, Length: 200, dtype: int32,
 'C3': 0       96
 1       98
 2       39
 3        7
 4       59
       ... 
 195     66
 196     44
 197    153
 198     84
 199      0
 Name: C3, Length: 200, dtype: int32,
 'C4': 0      146
 1       98
 2       52
 3      117
 4       77
       ... 
 195    107
 196     65
 197    143
 198     41
 199      0
 Name: C4, Length: 200, dtype: int32,
 'C5': 0      1
 1      1
 2      3
 3      1
 4      1
       ..
 195    1
 196    1
 197    1
 198    5
 199    5
 Name: C5, Length: 200, dtype: int32,
 'C6': 0      4
 1      6
 2      4
 3      0
 4      5
       ..
 195    4
 196    6
 197    0
 198    4
 199    0
 Name: C6, Length: 200, dtype: int32,
 'C7': 0      163
 1      179
 2      140
 3      164
 4       18
       ... 
 195     10
 196      4
 197    141
 198     27
 199     19
 Name: C7, Length: 200, dtype: int32,
 'C8': 0       1
 1       0
 2       2
 3       1
 4       1
        ..
 195    15
 196     2
 197     1
 198     1
 199     1
 Name: C8, Length: 200, dtype: int32,
 'C9': 0      1
 1      1
 2      1
 3      0
 4      1
       ..
 195    1
 196    1
 197    1
 198    1
 199    1
 Name: C9, Length: 200, dtype: int32,
 'C10': 0       72
 1       89
 2       93
 3       20
 4       45
       ... 
 195     11
 196      9
 197    118
 198     96
 199     61
 Name: C10, Length: 200, dtype: int32,
 'C11': 0      117
 1       58
 2       31
 3       61
 4      171
       ... 
 195     87
 196    130
 197     30
 198    110
 199    149
 Name: C11, Length: 200, dtype: int32,
 'C12': 0      127
 1       97
 2      122
 3      104
 4      162
       ... 
 195      6
 196     96
 197    128
 198     67
 199      0
 Name: C12, Length: 200, dtype: int32,
 'C13': 0      157
 1       79
 2       16
 3       36
 4       96
       ... 
 195     73
 196     57
 197     69
 198     63
 199     14
 Name: C13, Length: 200, dtype: int32,
 'C14': 0       7
 1       7
 2       7
 3       1
 4       4
        ..
 195     2
 196     1
 197    13
 198     1
 199     1
 Name: C14, Length: 200, dtype: int32,
 'C15': 0      127
 1       72
 2      129
 3       43
 4       36
       ... 
 195     53
 196    106
 197     23
 198    121
 199     24
 Name: C15, Length: 200, dtype: int32,
 'C16': 0      126
 1       26
 2       97
 3       43
 4      121
       ... 
 195     49
 196      1
 197      4
 198     75
 199      0
 Name: C16, Length: 200, dtype: int32,
 'C17': 0      8
 1      7
 2      8
 3      8
 4      8
       ..
 195    0
 196    1
 197    4
 198    4
 199    7
 Name: C17, Length: 200, dtype: int32,
 'C18': 0      66
 1      52
 2      49
 3      37
 4      14
        ..
 195    74
 196    25
 197    40
 198     7
 199    72
 Name: C18, Length: 200, dtype: int32,
 'C19': 0       0
 1       0
 2       0
 3       0
 4       5
        ..
 195     5
 196     0
 197    17
 198    18
 199     0
 Name: C19, Length: 200, dtype: int32,
 'C20': 0      0
 1      0
 2      0
 3      0
 4      3
       ..
 195    1
 196    0
 197    2
 198    1
 199    0
 Name: C20, Length: 200, dtype: int32,
 'C21': 0        3
 1       47
 2       25
 3      156
 4        9
       ... 
 195     30
 196    138
 197     41
 198    123
 199      0
 Name: C21, Length: 200, dtype: int32,
 'C22': 0      0
 1      0
 2      0
 3      0
 4      0
       ..
 195    5
 196    0
 197    0
 198    0
 199    0
 Name: C22, Length: 200, dtype: int32,
 'C23': 0      1
 1      7
 2      6
 3      0
 4      0
       ..
 195    0
 196    0
 197    0
 198    0
 199    0
 Name: C23, Length: 200, dtype: int32,
 'C24': 0       96
 1      112
 2       53
 3       32
 4        5
       ... 
 195    118
 196     68
 197     12
 198     10
 199      0
 Name: C24, Length: 200, dtype: int32,
 'C25': 0       0
 1       0
 2       0
 3       0
 4       1
        ..
 195    17
 196     0
 197    16
 198    16
 199     0
 Name: C25, Length: 200, dtype: int32,
 'C26': 0       0
 1       0
 2       0
 3       0
 4      47
        ..
 195    48
 196     0
 197    11
 198    49
 199     0
 Name: C26, Length: 200, dtype: int32}
from keras.utils import plot_model
plot_model(model, to_file='./DeepCrossing.png',show_shapes=True)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lVocUFRC-1615871597237)(output_49_0.png)]

# 模型训练
model.fit(train_model_input, train_data['label'].values,
            batch_size=64, epochs=5, validation_split=0.2, )
Epoch 1/5
3/3 [==============================] - 0s 77ms/step - loss: 0.4399 - auc: 0.7993 - val_loss: 0.5972 - val_auc: 0.7208
Epoch 2/5
3/3 [==============================] - 0s 26ms/step - loss: 0.4174 - auc: 0.8225 - val_loss: 0.5646 - val_auc: 0.7051
Epoch 3/5
3/3 [==============================] - 0s 20ms/step - loss: 0.4097 - auc: 0.8430 - val_loss: 0.5561 - val_auc: 0.6909
Epoch 4/5
3/3 [==============================] - 0s 19ms/step - loss: 0.4073 - auc: 0.8641 - val_loss: 0.5570 - val_auc: 0.6937
Epoch 5/5
3/3 [==============================] - 0s 19ms/step - loss: 0.3897 - auc: 0.8763 - val_loss: 0.5719 - val_auc: 0.7051





<tensorflow.python.keras.callbacks.History at 0x24a506dff40>
# 模型训练
model.fit(train_dense_x+train_sparse_x, train_data['label'].values,
            batch_size=64, epochs=5, validation_split=0.2, )
Epoch 1/5
3/3 [==============================] - 0s 60ms/step - loss: 0.3778 - auc: 0.8881 - val_loss: 0.5980 - val_auc: 0.7066
Epoch 2/5
3/3 [==============================] - 0s 22ms/step - loss: 0.3670 - auc: 0.8998 - val_loss: 0.5927 - val_auc: 0.6909
Epoch 3/5
3/3 [==============================] - 0s 20ms/step - loss: 0.3501 - auc: 0.9107 - val_loss: 0.5797 - val_auc: 0.7009
Epoch 4/5
3/3 [==============================] - 0s 23ms/step - loss: 0.3332 - auc: 0.9247 - val_loss: 0.5725 - val_auc: 0.6994
Epoch 5/5
3/3 [==============================] - 0s 20ms/step - loss: 0.3211 - auc: 0.9316 - val_loss: 0.5785 - val_auc: 0.6923

2. 模型结构及原理

为了完成端到端的训练, DeepCrossing模型要在内部网络结构中解决如下问题:

  1. 离散类特征编码后过于稀疏, 不利于直接输入神经网络训练, 需要解决稀疏特征向量稠密化的问题
  2. 如何解决特征自动交叉组合的问题
  3. 如何在输出层中达成问题设定的优化目标

DeepCrossing分别设置了不同神经网络层解决上述问题。模型结构如下

image-20210217173154706

下面分别介绍一下各层的作用:

2.1 Embedding Layer

将稀疏的类别型特征转成稠密的Embedding向量,Embedding的维度会远小于原始的稀疏特征向量。 Embedding是NLP里面常用的一种技术,这里的Feature #1表示的类别特征(one-hot编码后的稀疏特征向量), Feature #2是数值型特征,不用embedding, 直接到了Stacking Layer。 关于Embedding Layer的实现, 往往一个全连接层即可,Tensorflow中有实现好的层可以直接用。 和NLP里面的embedding技术异曲同工, 比如Word2Vec, 语言模型等。

2.2 Stacking Layer

这个层是把不同的Embedding特征和数值型特征拼接在一起,形成新的包含全部特征的特征向量,该层通常也称为连接层, 具体的实现如下,先将所有的数值特征拼接起来,然后将所有的Embedding拼接起来,最后将数值特征和Embedding特征拼接起来作为DNN的输入,这里TF是通过Concatnate层进行拼接。

2.3 Multiple Residual Units Layer

该层的主要结构是MLP, 但DeepCrossing采用了残差网络进行的连接。通过多层残差网络对特征向量各个维度充分的交叉组合, 使得模型能够抓取更多的非线性特征和组合特征信息, 增加模型的表达能力。残差网络结构如下图所示:

image-20210217174914659

Deep Crossing模型使用稍微修改过的残差单元,它不使用卷积内核,改为了两层神经网络。我们可以看到,残差单元是通过两层ReLU变换再将原输入特征相加回来实现的。具体代码实现如下:

2.4 Scoring Layer

这个作为输出层,为了拟合优化目标存在。 对于CTR预估二分类问题, Scoring往往采用逻辑回归,模型通过叠加多个残差块加深网络的深度,最后将结果转换成一个概率值输出。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值