TensorFlow学习笔记(二)(函数式搭建模型-可解决sequential单入单出问题)

keras API

一.具有多个输入和输出的模型:
1.文本数据

num_words = 10000  # 文本数据Embedding数量
num_departments = 4  # Number of departments for predictions
#定义三个输入
title_input = keras.Input(shape=(None,), name="title") 
body_input = keras.Input(shape=(None,), name="body")
tags_input = keras.Input(shape=(2,), name="tags")

#对输入进行编码
title_features = layers.Embedding(num_words, 64)(title_input)
body_features = layers.Embedding(num_words, 64)(body_input)

# 定义LSTM层并输入数据
title_features = layers.LSTM(128)(title_features)
body_features = layers.LSTM(32)(body_features)

# concatenate将三个输入参数合并为一个输出
#[,128],[,32],[,12] -> [,172]
x = layers.concatenate([title_features, body_features, tags_input])

priority_pred = layers.Dense(1, name="priority")(x)
department_pred =layers.Dense(num_departments,name="department")(x)
#创建模型时必须将所有输入与输出合并为列表作为参数
model = keras.Model(
    inputs=[title_input, body_input, tags_input],
    outputs=[priority_pred, department_pred],
)
  1. 对于图像数据:
inputs = keras.Input(shape=(32, 32, 3), name="img")
x = layers.Conv2D(32, 3, activation="relu")(inputs)
x = layers.Conv2D(64, 3, activation="relu")(x)
block_1_output = layers.MaxPooling2D(3)(x)

x = layers.Conv2D(64, 3, activation="relu", padding="same")(block_1_output)
x = layers.Conv2D(64, 3, activation="relu", padding="same")(x)
block_2_output = layers.add([x, block_1_output])

x = layers.Conv2D(64, 3, activation="relu", padding="same")(block_2_output)
x = layers.Conv2D(64, 3, activation="relu", padding="same")(x)
block_3_output = layers.add([x, block_2_output])

x = layers.Conv2D(64, 3, activation="relu")(block_3_output)
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dense(256, activation="relu")(x)
x = layers.Dropout(0.5)(x)
outputs = layers.Dense(10)(x)

model = keras.Model(inputs, outputs, name="toy_resnet")

为了保证输入输出维度相同可以设置padding参数

x = layers.Conv2D(64, 3, activation="relu", padding="same")

调用已经加载好的模型:

vgg19 = tf.keras.applications.VGG19()
features_list = [layer.output for layer in vgg19.layers]
feat_extraction_model = keras.Model(inputs=vgg19.input, outputs=features_list)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值