栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用Keras/Tensorflow.keras子类API构建复杂模型

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Keras/Tensorflow.keras子类API构建复杂模型

本文主要介绍了几种使用keras.Model API构建深度网络模型的基本方法。

1. 简单顺序模型

      模型由输入层、隐藏层、和输出层顺序连接构成(如图1所示)

图1. 简单顺序模型示意图

(1) 定义模型结构

def build_model(X_train):

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

      hidden1_layer = keras.layers.Dense(30, activation=‘ReLU’)(input_layer)

      hidden2_layer = keras.layers.Dense(30, activation=‘linear’)(hidden1_layer)

      output_layer  = keras.layers.Dense(1)(hidden2_layer)

      model = keras.Model(inputs=input_layer, outputs=output_layer)

      return model

(2) 建模训练

model = build_model(X_train)

model.compile(loss=‘mse’, optimizer=keras.optimizers.SGD(lr=1e-3))

model.fit(X_train, Y_train)

eval = model.evaluate(X_val, Y_val)

Y_pred = model.pred(X_test)


 2. 短路径顺序模型

      模型由输入层、隐藏层、输出层和短路径连接构成(如图2所示)

 图2. 短路径顺序模型示意图

(1) 定义模型结构(注意红色字体部分)

def build_model(X_train):

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

      hidden1_layer = keras.layers.Dense(30, activation=‘ReLU’)(input_layer)

      hidden2_layer = keras.layers.Dense(30, activation=‘linear’)(hidden1_layer)

      concat_layer = keras.layers.Concatenate()([input_layer, hidden2_layer])

      output_layer  = keras.layers.Dense(1)(concat_layer)

      model = keras.Model(inputs=input_layer, outputs=output_layer)

      return model

(2) 建模训练

model = build_model(X_train)

model.compile(loss=‘mse’, optimizer=keras.optimizers.SGD(lr=1e-3))

model.fit(X_train, Y_train)

eval = model.evaluate(X_val, Y_val)

Y_pred = model.pred(X_test)


 3. 多输入顺序模型

      模型由两个及以上输入层、隐藏层、输出层和短路径连接构成(如图3所示)

  图3. 多输入顺序模型示意图

(1) 定义模型结构(注意红色字体部分)

def build_model(X_train1, X_train2):

      input1_layer = keras.layers.Input(shape=X_train1.shape[1:])

      input2_layer = keras.layers.Input(shape=X_train2.shape[1:])

      hidden1_layer = keras.layers.Dense(30, activation=‘ReLU’)(input1_layer)

      hidden2_layer = keras.layers.Dense(30,            activation=‘linear’)(hidden1_layer)

      concat_layer = keras.layers.Concatenate()([input2_layer, hidden2_layer])

      output_layer  = keras.layers.Dense(1)(concat_layer)

      model = keras.Model(inputs=[input1_layer, input2_layer], outputs=output_layer)

      return model

(2) 建模训练(注意红色字体部分)

model = build_model(X_train1, X_train2)

model.compile(loss=‘mse’, optimizer=keras.optimizers.SGD(lr=1e-3))

history = model.fit((X_train1, X_train2), Y_train)

eval = model.evaluate((X_val1, X_val2), Y_val)

Y_pred = model.pred((X_test1, X_test2))


 4. 多输入多输出模型

      模型由两个及以上输入层、隐藏层、两个及以上输出层连接构成(如图4所示)

  图4. 多输入多输出模型示意图

(1) 定义模型结构(注意红色字体部分)

def build_model(X_train1, X_train2):

      input1_layer = keras.layers.Input(shape=X_train1.shape[1:])

      input2_layer = keras.layers.Input(shape=X_train2.shape[1:])

      hidden1_layer = keras.layers.Dense(30, activation=‘ReLU’)(input1_layer)

      hidden2_layer = keras.layers.Dense(30,            activation=‘linear’)(hidden1_layer)

      concat_layer = keras.layers.Concatenate()([input2_layer, hidden2_layer])

      output1_layer  = keras.layers.Dense(1, name=‘main_output’)(concat_layer)

      ouput2_layer = keras.layers.Dense(1, name=‘aux_output)(hidden2_layer)

      model = keras.Model(inputs=[input1_layer, input2_layer], outputs=[output1_layer, output2_layer])

      return model

(2) 建模训练(注意红色字体部分)

model = build_model(X_train1, X_train2)

model.compile(loss=[‘mse’, ‘mse’], loss_weight=[0.9, 0.1], optimizer=keras.optimizers.SGD(lr=1e-3))

history = model.fit((X_train1, X_train2), (Y_train1, Y_train2))

eval = model.evaluate((X_val1, X_val2), (Y_val1, Y_val2))

Y_pred1, Y_pred2 = model.pred((X_test1, X_test2))


参考文献:

[1] A GéRon. Hands-on machine learning with Scikit-Learn and TensorFlow : concepts, tools, and techniques to build intelligent systems.  2017.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987461.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号