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

2022-01-02 12:34:50 浏览数 (1)

初学者在调用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变量。

0 人点赞