1.Functional API搭建神经网络模型

导库、导入数据集、读取并观察数据集、从sklearn中导入数据、数据预处理、归一化、数据切分等操作,与【深度学习(上)】的Sequential模型是一样的步骤,此处省略!

构建神经网络模型

定义模型的输出层:参数为:训练集的特征集除了第一维以外的数据

inputs = keras.layers.Input(shape=X_train.shape[1:])

第一个隐藏层,Dense是全连接层,300是该层的神经元数量,激活函数为‘relu’

hidden1 = keras.layers.Dense(300,activation='relu')(inputs)

第二个隐藏层,100是神经元数量,激活函数为‘relu’

hidden2 = keras.layers.Dense(100,activation='relu')(hidden1)

将输入层和隐藏层连接起来,使用concatenate方法

concat=keras.layers.concatenate([inputs,hidden2])

输出层,10个神经元,激活函数为softmax

output = keras.layers.Dense(10,activation='softmax')(concat)

定义整个模型,Model用于创建一个模型,用于训练和预测

model_fun_WideDeep = keras.models.Model(inputs=[inputs],outputs = [output])

输出基本信息

model_fun_WideDeep.summary()

运行结果:
在这里插入图片描述

训练模型

编译模型

model_fun_WideDeep.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])

训练模型过程

h=model_fun_WideDeep.fit(X_train,y_train,batch_size=32,epochs=20,validation_data=(X_valid,y_valid))

参数1、2:训练集特征和标签
参数3:每次梯度更新使用的样本数量
参数4:遍历训练集的次数
参数5:评估性能

数据预处理

X_train_A,X_train_B = X_train[:,:200],X_train[:,100:]
X_valid_A,X_valid_B = X_valid[:,:200],X_valid[:,100:]

1行:前200个特征赋值给 X_train_A;第101个到最后一个特征,这部分被赋值给 X_train_B
2行:同理1

定义一个神经网络模型

同9.2,划分验证集,然后进行构建模型

训练模型

h=model_fun_MulIn.fit((X_train_A,X_train_B),y_train,batch_size=32,epochs=20,validation_data=((X_valid_A,X_valid_B),y_valid))

最后一个参数:提供了验证数据集,用于在训练过程中的每个 epoch 结束时评估模型的性能

展示

pd.DataFrame(h.history)

以二维数组形式展示出来
运行结果19:
在这里插入图片描述

画图

运行结果:
在这里插入图片描述

2.SubClassing API 搭建神经网络模型

class Model_sub_fnn(keras.models.Model):

2.1 定义模型结构,隐藏层1、2,输出层,隐藏层的激活函数

 def __init__(self,units_1 = 300,units_2 = 100,units_out = 10,activation='relu'):

2.2调用keras.models.Model函数,并初始化

super().__init__()
        self.hidden1 = keras.layers.Dense(units_1,activation=activation)
        self.hidden2 = keras.layers.Dense(units_2,activation=activation)
        self.main_output = keras.layers.Dense(units_out,activation = 'softmax')

2.3 定义方法

def call(self,data):

2.4将输入数据传给隐藏层1

hidden1 = self.hidden1(data)
        hidden2 = self.hidden2(hidden1)
        main_output = self.main_output(hidden2)
        return main_output    #返回最终输出

2.5 创建实例

model_sub_fnn = Model_sub_fnn()

2.6 编译和训练模型 同上面

运行结果:
在这里插入图片描述

2.7 显示基本信息

运行结果:
在这里插入图片描述
运行结果:
在这里插入图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部