调节使用Keras创建模型的超参数对于结果的影响

超参数对于CNN模型效果的影响

上一篇文章已经详细介绍使用Keras创建的基础模型,这一篇文章详细探究超参数对于神经网络结果的影响。

模型当前的训练结果

  1. 训练样本以及测试样本
    X_train shape: (600, 64, 64, 3)
    Y_train shape: (600, 1)
    X_test shape: (150, 64, 64, 3)
    Y_test shape: (150, 1)
    输入时人脸图片,分类器需要识别出人是否处于“笑”和“不笑”的状态,笑,输出1,不笑,输出0
  2. 优化器的设置

happyModel.compile(optimizer=keras.optimizers.Adam(lr=0.001,beta_1=0.9,beta_2=0.999,epsilon=1e-08, decay=0.0), loss=‘binary_crossentropy’, metrics=[‘accuracy’])

学习率=0.001

  1. 训练包的大小以及优化次数设置

happyModel.fit(x=X_train, y=Y_train, batch_size=16, epochs=20)

批量包大小=16,优化次数设置为20
对于训练样本得到的结果如下:

Epoch 1/20
600/600 [==============================] - 6s 10ms/step - loss: 0.5106 - acc: 0.7683
Epoch 2/20
600/600 [==============================] - 4s 7ms/step - loss: 0.2408 - acc: 0.9233
Epoch 3/20
600/600 [==============================] - 4s 6ms/step - loss: 0.1509 - acc: 0.9583
Epoch 4/20
600/600 [==============================] - 4s 6ms/step - loss: 0.1059 - acc: 0.9750
Epoch 5/20
600/600 [==============================] - 4s 6ms/step - loss: 0.0827 - acc: 0.9850
Epoch 6/20
600/600 [==============================] - 4s 6ms/step - loss: 0.0665 - acc: 0.9900
Epoch 7/20
600/600 [==============================] - 4s 7ms/step - loss: 0.0478 - acc: 0.9917
Epoch 8/20
600/600 [==============================] - 4s 7ms/step - loss: 0.0422 - acc: 0.9917
Epoch 9/20
600/600 [==============================] - 4s 7ms/step - loss: 0.0313 - acc: 0.9983
Epoch 10/20
600/600 [==============================] - 4s 7ms/step - loss: 0.0302 - acc: 0.9917
Epoch 11/20
600/600 [==============================] - 4s 7ms/step - loss: 0.0228 - acc: 0.9967
Epoch 12/20
600/600 [==============================] - 4s 6ms/step - loss: 0.0227 - acc: 0.9983
Epoch 13/20
600/600 [==============================] - 4s 7ms/step - loss: 0.0254 - acc: 0.9933A: 0s - loss: 0.0274 - acc:
Epoch 14/20
600/600 [==============================] - 4s 6ms/step - loss: 0.0127 - acc: 0.9967
Epoch 15/20
600/600 [==============================] - 4s 6ms/step - loss: 0.0140 - acc: 0.9967A
Epoch 16/20
600/600 [==============================] - 4s 7ms/step - loss: 0.0090 - acc: 1.0000
Epoch 17/20
600/600 [==============================] - 4s 6ms/step - loss: 0.0153 - acc: 1.0000
Epoch 18/20
600/600 [==============================] - 4s 6ms/step - loss: 0.0114 - acc: 0.9983
Epoch 19/20
600/600 [==============================] - 4s 7ms/step - loss: 0.0084 - acc: 1.0000
Epoch 20/20
600/600 [==============================] - 4s 7ms/step - loss: 0.0123 - acc: 0.9967
  1. 模型对于测试样本的分类结果
Loss = 0.07760623216629028
Test Accuracy = 0.98000
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Keras是一个高级神经网络API,它在TensorFlow、Theano和CNTK等低级库之上提供了一个简单易用的用户界面。在Keras,您可以使用Python编写高级神经网络模型,而无需编写低级的神经网络代码。下面是构建模型的基本步骤: 1.导入必要的库 首先,您需要导入所需的库,包括Keras、NumPy和Matplotlib等。 ```python import keras import numpy as np import matplotlib.pyplot as plt ``` 2.加载数据集 接下来,您需要加载数据集。您可以使用Keras内置的数据集,例如MNIST数字图像数据集。您也可以使用自己的数据集。 ```python from keras.datasets import mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() # 将图像数据转换为浮点数,并将其归一化为0到1之间的值 x_train = x_train.astype('float32') / 255. x_test = x_test.astype('float32') / 255. # 将标签数据转换为独热编码 y_train = keras.utils.to_categorical(y_train, 10) y_test = keras.utils.to_categorical(y_test, 10) ``` 3.定义模型 接下来,您需要定义模型Keras提供了一个Sequential模型,您可以使用它来堆叠各种神经网络层。例如,以下代码定义了一个具有两个密集层的模型: ```python from keras.models import Sequential from keras.layers import Dense model = Sequential() model.add(Dense(512, activation='relu', input_shape=(784,))) model.add(Dense(10, activation='softmax')) ``` 这个模型有两个密集层。第一层有512个神经元,使用ReLU激活函数。输入形状为(784,),因为MNIST图像大小为28x28像素,展平后为784个像素。第二层有10个神经元,使用Softmax激活函数,因为MNIST数据集有10个类别。 4.编译模型 接下来,您需要编译模型。在编译之前,您需要指定损失函数、优化器和评估指标。例如,以下代码将损失函数设置为交叉熵,优化器设置为Adam,并将评估指标设置为准确性: ```python model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) ``` 5.训练模型 接下来,您需要训练模型。您可以使用fit()函数来训练模型。例如,以下代码将模型拟合到训练数据,并使用批量大小为128、训练周期数为5: ```python history = model.fit(x_train, y_train, batch_size=128, epochs=5, validation_data=(x_test, y_test)) ``` 6.评估模型 接下来,您需要评估模型。您可以使用evaluate()函数来评估模型。例如,以下代码将模型评估为测试数据集: ```python score = model.evaluate(x_test, y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1]) ``` 7.绘制模型训练过程 最后,您可以使用Matplotlib库绘制模型训练过程。例如,以下代码绘制了模型训练损失和准确性: ```python plt.plot(history.history['loss'], label='train_loss') plt.plot(history.history['val_loss'], label='val_loss') plt.plot(history.history['accuracy'], label='train_acc') plt.plot(history.history['val_accuracy'], label='val_acc') plt.legend() plt.show() ``` 这是一个基本的Keras模型构建过程。您可以根据需要添加更多的层和参数,以获得更好的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值