在 tensorflow中使用 keras库 来进行神经网络模型的训练。它是tensorflow的高阶API,可以快速搭建和训练神经网络模型。
特点:
在 Keras 中,主要的数据结构是模型(model),我们使用最多的就是 Sequential 模型。
Sequential 是一个神经网络框架,可以认为是一个容器,其中封装了神经网络的结构,只有一组输入 和 一组输出,各层之间按照先后顺序堆叠,前一层的输出就是后一层的输入,通过多个层的堆叠,构建出神经网络。
使用 API :model = tf.keras.Sequential()。
通过type方法,可以看到是 Sequential 类的对象,此时这个 model 是一个空的容器。
现在在model里添加层, 构成神经网络,这也是 Sequential 的核心操作。
可以使用 add 方法,逐层添加神经网络中的各个层。
API: model.add( tf.keras.layers.*** )
其中,tf.keras.layers.**表示层的类型,keras 提供了很多,例如全连接层,池化层,卷积层等等,他们都是 layers 类中的函数,可以直接作为add方法的参数。
下面以全连接层为例,全连接使用 Dense 函数。
tf.keras.layers.Dense( inputs # 输入该网络层的数据,数字,即该层有几个神经元 activation # 激活函数,可以以字符串的形式给出:‘relu‘,‘softmax‘,‘sigmoid‘,‘tanh‘ input_shape # 输入数据的形状(全连接神经网络的第一层,接受来自输入层的数据,必须要指明形状,后面的层接受前一层的输出,不用再指明形状) )
三个参数的具体含义及参数范围在注释中已给出。
使用方法:model.summary()。
下面我们利用上面的几个API,给出一个三层神经网络搭建实例。
API:model.compile(loss, optimizer, metric)
下面给出这些参数的可选值:(每个参数都有两种形式,可以给出一个字符串,也可以给出一个函数形式)
关于多分类损失函数的参数 from_logits:神经网络输出前,已经使用softax函数将预测结果变换为概率分布(我们在多分类习惯这么做),所有的输出之和为 1,则该参数 为 false。如果输出前没有经过softmax变换,则需要设置为 true。
其中函数形式可以设置超参数如学习率 lr,动量 momentum 等。
可以使用 Keras 模型性能评估函数,也可以自定义性能评估函数
在该参数中,可以使用列表形式,写入多个评估函数。
主要使用 model.fit 方法,下面是各个参数,和每个参数的默认值。
可以通过 函数 model.metrics_names 查看模型的性能指标。
fit方法返回一个 History 对象,可以通过该对象的 history 属性查看。例如:history = model.fit(),history.history 查看,返回一个字典,其中有四个属性,分别是训练集和测试集上的损失和准确率,每个属性的值是一个列表。也可通过如下形式查看:
注意:fit 函数的validation_split 默认为 0,即不划分测试数据。那样在训练结果只有训练集的损失和准确率了。
如果没有在 fit 训练时划分数据集,则可以在下面的模型评估里进行。
使用的函数 model.evaluate(test_set_x, test_set_y, batch_size, verbose) 进行模型的评估
参数解释:
函数的第一个返回值是 损失,第二个返回值是在compiler中指定的性能指标,如下:
loss, acc = model.evaluate(x_test, y_test, verbose=2)
训练好模型之后,就可以使用它进行模型分类,通过 predict 方法实现。
model.predict(x, batch_size, verbose),当 x 为批量数据时,程序会根据batch_size 的大小分批量的预测数据
原文:https://www.cnblogs.com/dongao/p/14369986.html