tensorflow中keras.models()的使用总结

初学者在调用keras时,不需要纠结于选择tf.keras还是直接import keras,现如今两者没有区别。从具体实现上来讲,Keras是TensorFlow的一个依赖(dependency)。但,从设计上希望用户只透过TensorFlow来使用,即tf.keras。

所以在此主要记录一下tf.keras.models的使用。

函数型模型

即利用函数API,从inputs开始,然后指定前向过程,根据输入和输出建立模型。

由于Layer提供了集中函数式的调用方式,通过这种调用构建层与层之间的网络模型。

所以其编程特点:

1. 我们构建层,通过layer对象的可调用特性,或者使用apply与call实现链式函数调用。

2. Model只需通过inputs和outputs。

函数式模型示意图

示例1:

1. 导入

import tensorflow as tf
import tensorflow.keras as keras
import tensorflow.keras.layers as layers
import sklearn.datasets as datasets


2. 定义layer层

input_layer = keras.Input(shape=(4,))
# 隐藏层:8-4
hide1_layer = layers.Dense(units=8, activation='relu')
hide2_layer = layers.Dense(units=4, activation='relu')
# 输出层:1
output_layer = layers.Dense(units=1, activation='sigmoid')

3. 构建layer之间的函数链式关系

hide1_layer_tensor = hide1_layer(input_layer)
hide2_layer_tensor = hide2_layer(hide1_layer_tensor)
output_layer_tensor = output_layer(hide2_layer_tensor)

这里同样可以使用layer的apply函数,相当于`self.__call__`的别名,将输入(参数)应用在layer上。

hide1_layer_tensor = hide1_layer(input_layer)
hide2_layer_tensor = hide2_layer(hide1_layer_tensor)
output_layer_tensor = output_layer(hide2_layer_tensor)

4. 使用inputs与outputs建立函数链式模型

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

5. 训练

# .1 训练参数
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['mse'])
# .2 训练
data, target = datasets.load_iris(return_X_y=True)
data = data[:100, :]
target = target[:100]
model.fit(x=data, y=target, batch_size=10, epochs=100, verbose=0)

6. 预测

# .3 预测评估
pre_result = model.predict(data)
category = [0 if item<=0.5 else 1 for item in pre_result]
accuracy = (target == category).mean()
print(F'分类准确度:{accuracy*100.0:5.2f}%', )


输出结果:分类准确度:99.00%


顺序式模型

顺序式模型的编程特点:

1. Layer提供input与output属性;

2. Sequential类通过Layer的input与output属性来维护层之间的关系,构建网络模型;

其中第一层必须是InputLayer或者Input函数构建的张量;


实例

导入和定义layer就不再赘述,仅在步骤3、4的有所改变,可直接使用Sequential构建顺序模型,即使用add方法直接添加layer。

seq_model = keras.Sequential()
seq_model.add(input_layer)
seq_model.add(hide1_layer)
seq_model.add(hide2_layer)
seq_model.add(output_layer)

使用layer参数构建模型

 seq_model = keras.Sequential(layers=[input_layer, hide1_layer, hide2_layer, output_layer])

之后的训练中不要忘记改变model变量。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容