Wide & Deep 模型
分类求一个分布,回归求一个数值
用向量表达出 词与词之间的距离
- Wide模型只有一层,所有输入直接连接输出,输入是稀疏特征,也就是one-hot表达,one-hot表达每个分量直接连接在输出层上。
- Wide & Deep模型,左半部分是Wide模型,右半部分是一个Deep模型,Deep模型是一个有多层的一个神经网络,对一个输入的数据,先表示一个密集的向量表达,在密集的向量表达之上,有一个多层的全连接网络,最后连接到输出。
函数式API实现
# 函数式API 功能API 函数调用tf.keras里面的一些层次
# 有两部分组成 不用sequential
input = keras.layers.Input(shape=x_train.shape[1:])
# 函数式调用
hidden1 = keras.layers.Dense(30, activation='relu')(input)
hidden2 = keras.layers.Dense(30, activation='relu')(hidden1)
# 复合函数: f(x) = h(g(x))
# 合并deep 和 wide hidden2是deep的输出, input是wide的输入
concat = keras.layers.concatenate([input, hidden2])
# 把拼接好的数据给输出 1个单元 没有激活函数 输入时concat
output = keras.layers.Dense(1)(concat)
# 固化模型 函数式api没有返回固化model 要自己设置
model = keras.models.Model(inputs = [input],
outputs = [output])
model.summary()
model.compile(loss="mean_squared_error", optimizer="sgd")
callbacks = [keras.callbacks.EarlyStopping(
patience=5, min_delta=1e-2)]
使用sgd