tensorflow2.0 基本流程学习笔记

定义模型

# 销毁当前的TF图并创建一个新图。
# 有助于避免旧模型/图层混乱。
tf.keras.backend.clear_session()
model = models.Sequential()

model.add(layers.Dense(20, batch_input_shape=(None, 15)))
##等价--1
#model.add(layers.Dense(20,activation = 'relu', input_dim=15 ))
##等价--2:Optionally, the first layer can receive an `input_shape` argument:
#model.add(layers.Dense(20,activation = 'relu',input_shape=(15,))) ## 15 dimension

model.add(layers.Dense(10,activation = 'relu' ))
model.add(layers.Dense(1,activation = 'sigmoid' ))
model.summary()
### 如果没有 input_shape ,则没有 weights,会打印 ValueError
model = models.Sequential()
model.add(layers.Dense(32))
model.add(layers.Dense(32))
# model.weights  # returns []
model = models.Sequential()
model.add(layers.Dense(32))
# model.build((None, 5))
## 等价 --1, 但是dim 等于 32(疑问?)
model.build(input_shape=(None,3))
model.weights

训练

# 二分类问题选择二元交叉熵损失函数
model.compile(optimizer='adam', ## 优化函数
            loss='binary_crossentropy', ## 损失函数
            metrics=['AUC']) ## 评估函数

history = model.fit(x_train,y_train,
                    batch_size= 64,  ## 每次喂到模型的数据行
                    epochs= 30, ## 训练的轮数
                    validation_split=0.2 #分割一部分训练数据用于验证
                   )
test_scores = model.evaluate(x_train, y_train, verbose=2)
print('Test loss:', test_scores[0])
print('Test accuracy:', test_scores[1])

评估

### 评估
import matplotlib.pyplot as plt
def plot_metric(history, metric):
    train_metrics = history.history[metric]
    val_metrics = history.history['val_'+metric]
    epochs = range(1, len(train_metrics) + 1)
    plt.plot(epochs, train_metrics, 'bo--')
    plt.plot(epochs, val_metrics, 'ro-')
    plt.title('Training and validation '+ metric)
    plt.xlabel("Epochs")
    plt.ylabel(metric)
    plt.legend(["train_"+metric, 'val_'+metric])
    plt.show()
    
 plot_metric(history,"AUC")

模型保存

## 方法一

# 保存模型结构及权重
model.save('./data/keras_model.h5')  
del model  #删除现有模型
# identical to the previous one
model = models.load_model('./data/keras_model.h5')


方法二
# 保存模型结构
json_str = model.to_json()
#保存模型权重
model.save_weights('./data/keras_model_weight.h5')
# 恢复模型结构
model_json = models.model_from_json(json_str)
model_json.compile(
        optimizer='adam',
        loss='binary_crossentropy',
        metrics=['AUC']
    )

# 加载权重
model_json.load_weights('./data/keras_model_weight.h5')


方法三
# 保存模型结构与模型参数到文件,该方式保存的模型具有跨平台性便于部署
model.save('./data/tf_model_savedmodel', save_format="tf")
print('export saved model.')
model_loaded = tf.keras.models.load_model('./data/tf_model_savedmodel')

教程链接 eat_tensorflow2_in_30_days

你可能感兴趣的:(ML&DL)