当前位置: 首页 > wzjs >正文

wordpress类似的前端seo待遇

wordpress类似的前端,seo待遇,平面设计接单一个月多少钱,wordpress仿hexo主题目录 从零开始构建CNN网络:以MNIST手写数字识别为例 一、CNN的基本原理 二、CNN的代码实现 1. 导入必要的库 2. 加载和预处理数据 3. 构建CNN模型 4. 编译模型 5. 训练模型 6. 评估模型 7. 可视化训练过程 三、MNIST-C数据集的处理 四、Fine-tuning方法…

目录

从零开始构建CNN网络:以MNIST手写数字识别为例

一、CNN的基本原理

二、CNN的代码实现

1. 导入必要的库

2. 加载和预处理数据

3. 构建CNN模型

4. 编译模型

5. 训练模型

6. 评估模型

7. 可视化训练过程

三、MNIST-C数据集的处理

四、Fine-tuning方法训练

五、学习心得


一、CNN的基本原理

CNN的核心在于卷积操作,它通过卷积核在图像上滑动,提取局部特征。卷积核的大小和数量会影响特征提取的效果。例如,一个3x3的卷积核可以在图像上提取边缘信息,而多个卷积核可以提取不同的特征。卷积操作的结果是一个特征图(feature map),它反映了输入图像与卷积核之间的匹配程度。为了减少计算量,CNN还引入了池化(Pooling)操作。池化层通常使用最大池化(max-pooling),即取池化区域内的最大值作为输出。这样可以保留特征图中的重要信息,同时减小特征图的尺寸。此外,CNN还使用了激活函数ReLU(Rectified Linear Unit),它将输入值小于0的部分置为0,保留正值。ReLU的作用是引入非线性因素,使网络能够学习复杂的特征。CNN的结构通常包括卷积层、池化层、全连接层等。卷积层用于提取特征,池化层用于降采样,全连接层用于分类。通过堆叠多个卷积层和池化层,CNN可以提取图像的多层次特征。

二、CNN的代码实现

在学习CNN的过程中,我使用了TensorFlow和Keras框架来构建模型。以下是一个简单的CNN模型的代码实现,用于MNIST手写数字识别任务。

1. 导入必要的库

import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt
import numpy as np

2. 加载和预处理数据

MNIST数据集是一个经典的手写数字数据集,包含60,000张训练图像和10,000张测试图像。每张图像的大小为28x28像素。

# 加载数据集
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()# 数据预处理
train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255# 将标签转换为one-hot编码
train_labels = tf.keras.utils.to_categorical(train_labels)
test_labels = tf.keras.utils.to_categorical(test_labels)

3. 构建CNN模型

CNN模型由多个卷积层、池化层和全连接层组成。以下是一个简单的CNN模型结构:

model = models.Sequential([# 卷积层1layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),layers.MaxPooling2D((2, 2)),# 卷积层2layers.Conv2D(64, (3, 3), activation='relu'),layers.MaxPooling2D((2, 2)),# 展平层layers.Flatten(),# 全连接层layers.Dense(64, activation='relu'),layers.Dense(10, activation='softmax')
])

4. 编译模型

在编译模型时,需要指定优化器、损失函数和评估指标。这里使用Adam优化器和交叉熵损失函数。

model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])

5. 训练模型

训练模型时,需要指定训练数据、验证数据、训练轮数(epochs)和批次大小(batch size)。

history = model.fit(train_images, train_labels, epochs=5, batch_size=64, validation_split=0.2)

6. 评估模型

评估模型的性能,输出测试集的准确率。

test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f"Test accuracy: {test_acc}")

7. 可视化训练过程

通过绘制训练过程中的准确率曲线,可以直观地了解模型的训练效果。

plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label='val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0, 1])
plt.legend(loc='lower right')
plt.show()

三、MNIST-C数据集的处理

MNIST-C是MNIST数据集的一个变体,加入了人工噪声,如模糊、扭曲、亮度变化等,用于测试模型的鲁棒性。以下是如何加载和处理MNIST-C数据集的代码:

import os
import numpy as np
import matplotlib.pyplot as plt# 加载数据集并打印每个子文件夹前10个数据集
data_root = './mnist_c'
dirlist = os.listdir(data_root)
fig, axs = plt.subplots(len(dirlist), 10, figsize=(10, 10))for i, folder_name in enumerate(dirlist):folder_path = os.path.join(data_root, folder_name)if os.path.isdir(folder_path):file_path = os.path.join(folder_path, 'train_images.npy')data = np.load(file_path)for j in range(0, 10):axs[i, j].imshow(data[j].reshape(28, 28), cmap='gray')axs[i, j].axis('off')
plt.tight_layout()
plt.show()

四、Fine-tuning方法训练

假设我们已经有一个在MNIST数据集上训练好的模型(位于./model.h5),我们可以使用Fine-tuning方法在MNIST-C数据集上继续训练该模型。以下是实现Fine-tuning的代码:

import tensorflow.keras as layers
import tensorflow as tf
import datetimeTARGET_MODEL_DIR = "./"
MODEL_NAME = "model.h5"
epochs_count = 5def againTrain(x_train, y_train, x_test, y_test):targetModel = os.path.join(TARGET_MODEL_DIR, MODEL_NAME)# 加载CNN模型model = tf.keras.models.load_model(targetModel)# 冻结模型的前几层model.layers[0].trainable = Falsemodel.layers[1].trainable = False# 对输入图像进行预处理x_train = x_train.reshape(-1, 28, 28, 1).astype('float32') / 255.0x_test = x_test.reshape(-1, 28, 28, 1).astype('float32') / 255.0y_train = tf.keras.utils.to_categorical(y_train, num_classes=10)y_test = tf.keras.utils.to_categorical(y_test, num_classes=10)now = datetime.datetime.now()format_time = now.strftime("%Y-%m-%d%H-%M-%S")checkpoint = tf.keras.callbacks.ModelCheckpoint(targetModel, save_best_only=True, save_weights_only=False, monitor='val_loss')# 继续训练模型history = model.fit(x_train, y_train, batch_size=128, epochs=epochs_count, validation_data=(x_test, y_test), callbacks=[checkpoint])test_loss, test_acc = model.evaluate(x_test, y_test)print('Test accuracy:', test_acc)def loadDataMnistC(data_root, func):dirlist = os.listdir(data_root)for i, folder_name in enumerate(dirlist):folder_path = os.path.join(data_root, folder_name)if os.path.isdir(folder_path):print("开始读取:" + folder_path)train_images = np.load(os.path.join(folder_path, 'train_images.npy'))train_labels = np.load(os.path.join(folder_path, 'train_labels.npy'))test_images = np.load(os.path.join(folder_path, 'test_images.npy'))test_labels = np.load(os.path.join(folder_path, 'test_labels.npy'))print("开始训练:" + folder_path)func(train_images, train_labels, test_images, test_labels)print("训练完成:" + folder_path)# 加载 MNIST-C 数据集
data_root = './mnist_c'
loadDataMnistC(data_root, againTrain)
print("全部训练完成")

五、学习心得

通过这次学习,我对CNN有了更深入的理解。CNN通过卷积操作提取图像的局部特征,通过池化操作减少计算量,通过激活函数引入非线性因素。这些设计使得CNN能够自动学习图像中的特征,而无需人工设计特征提取器。

参考:深度学习03-卷积神经网络(CNN)_cnn卷积神经网络-CSDN博客

@浙大疏锦行

http://www.dtcms.com/wzjs/350306.html

相关文章:

  • 网站前端怎么做做微商怎么找客源加人
  • 有了域名怎么做网站昆明seo关键字推广
  • wordpress实现积分seo排名关键词
  • 制作app需要先做网站wordpress企业网站模板
  • 重庆建设部网站官网百度关键词推广可以自己做吗
  • 旅游电子商务网站开发百度推广优化是什么?
  • 阿里巴巴怎么做自己的免费网站推广平台收费标准
  • 怎么自己编程做网站百度总部电话
  • 免费做网站有哪些家怎么自己做一个网页
  • 做影视网站该怎么发展怎么开网站详细步骤
  • 教育网站开发需求说明书武汉seo首页
  • 我自己做的一个网站显示证书错误外贸营销型网站设计
  • 资讯网站 整体ui免费刷推广链接的软件
  • 怎么做好网站推广企业邮箱怎么开通注册
  • 一个数据库两个网站wordpress登陆淘宝seo 优化软件
  • 2020十大网络安全公司排名台州做优化
  • 西安网站开发外包培训教育机构
  • 网站营销推广应该怎么做百度问一问
  • 17网站一起做网店新塘seo咨询顾问
  • 网站设计怎么做一点首页就跳转厦门seo服务
  • 百度 门户网站怎样和政府交换友链
  • 开发商建设审批网站做好的网站怎么优化
  • 做web网站前端扬州百度关键词优化
  • 现在最长用的做网站软件是什么网络推广企业
  • 如何做网站视频模板关键词搜索量全网查询
  • 怎么做同城网站关键词优化的方法有哪些
  • 做网站的尺寸1920网络营销策略是什么
  • 香港特别行政区政府seo综合查询怎么进入网站
  • 电脑iis做网站网络优化工程师需要学什么
  • 企业网站开发研究现状谷歌推广怎么样