tensorflow中model.compile()用法

tensorflow中model.compile()用法

model.compile()方法用于在配置训练方法时,告知训练时用的优化器、损失函数和准确率评测标准

 model.compile(optimizer = 优化器,

                        loss = 损失函数,

                        metrics = ["准确率”])

其中:

optimizer可以是字符串形式给出的优化器名字,也可以是函数形式,使用函数形式可以设置学习率、动量和超参数

例如:“sgd”   或者   tf.optimizers.SGD(lr = 学习率,

                                                             decay = 学习率衰减率,

                                                              momentum = 动量参数)

           “adagrad"  或者  tf.keras.optimizers.Adagrad(lr = 学习率,

                                                                                   decay = 学习率衰减率)

            ”adadelta"  或者  tf.keras.optimizers.Adadelta(lr = 学习率,

                                                                                     decay = 学习率衰减率)

             “adam"  或者  tf.keras.optimizers.Adam(lr = 学习率,

                                                                            decay = 学习率衰减率)

 

loss可以是字符串形式给出的损失函数的名字,也可以是函数形式

例如:”mse" 或者 tf.keras.losses.MeanSquaredError()

           "sparse_categorical_crossentropy"  或者  tf.keras.losses.SparseCatagoricalCrossentropy(from_logits = False)

             损失函数经常需要使用softmax函数来将输出转化为概率分布的形式,在这里from_logits代表是否将输出转为概率分布的形式,为False时表示转换为概率分布,为True时表示不转换,直接输出

 

Metrics标注网络评价指标

例如:

        "accuracy" : y_ 和 y 都是数值,如y_ = [1] y = [1]  #y_为真实值,y为预测值

        “sparse_accuracy":y_和y都是以独热码 和概率分布表示,如y_ = [0, 1, 0], y = [0.256, 0.695, 0.048]

        "sparse_categorical_accuracy" :y_是以数值形式给出,y是以 独热码给出,如y_ = [1], y = [0.256 0.695, 0.048]

         

 

示例代码:

#第一步,import
import tensorflow as tf #导入模块
from sklearn import datasets #从sklearn中导入数据集
import numpy as np #导入科学计算模块
import keras

#第二步,train, test
x_train = datasets.load_iris().data #导入iris数据集的输入

y_train = datasets.load_iris().target #导入iris数据集的标签

np.random.seed(120) #设置随机种子,让每次结果都一样,方便对照

np.random.shuffle(x_train) #使用shuffle()方法,让输入x_train乱序

np.random.seed(120) #设置随机种子,让每次结果都一样,方便对照

np.random.shuffle(y_train) #使用shuffle()方法,让输入y_train乱序

tf.random.set_seed(120) #让tensorflow中的种子数设置为120

#第三步,models.Sequential()
model = tf.keras.models.Sequential([ #使用models.Sequential()来搭建神经网络
    tf.keras.layers.Dense(3, activation = "softmax", kernel_regularizer = tf.keras.regularizers.l2()) #全连接层,三个神经元,激活函数为softmax,使用l2正则化
])

#第四步,model.compile()
model.compile(  #使用model.compile()方法来配置训练方法
    optimizer = tf.keras.optimizers.SGD(lr = 0.1), #使用SGD优化器,学习率为0.1
    loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits = False), #配置损失函数
    metrics = ['sparse_categorical_accuracy'] #标注网络评价指标
)

#第五步,model.fit()
model.fit(  #使用model.fit()方法来执行训练过程,
    x_train, y_train, #告知训练集的输入以及标签,
    batch_size = 32, #每一批batch的大小为32,
    epochs = 500, #迭代次数epochs为500
    validation_split = 0.2, #从测试集中划分80%给训练集
    validation_freq = 20 #测试的间隔次数为20
)

#第六步,model.summary()
model.summary() #打印神经网络结构,统计参数数目

 

 

你可能感兴趣的:(tensorflow,人工智能,深度学习,tensorflow,机器学习)