96SEO 2026-02-20 07:26 0
二、数据预处理1、加载数据2、数据可视化3、再次检查数据4、配置数据集

三、构建CNN网络四、训练模型1、设置动态学习率2、早停与保存最佳模型参数3、模型训练
五、模型评估1、Loss与Accuracy图2、尝试更改initial_learning_rate0.0013、指定图片预测
tf.config.list_physical_devices(GPU)if
#如果有多个GPU仅使用第0个GPUtf.config.experimental.set_memory_growth(gpu0,
#设置GPU显存用量按需使用tf.config.set_visible_devices([gpu0],GPU)2.
len(list(data_dir.glob(*/*/*.jpg)))
print(图片总数为,image_count)输出图片总数为
list(data_dir.glob(train/nike/*.jpg))
PIL.Image.open(str(Monkeypox[1]))二、数据预处理
使用image_dataset_from_directory方法将磁盘中的数据加载到tf.data.Dataset中。
tf.keras.preprocessing.image_dataset_from_directory(./data/train/,seed123,image_size(img_height,
img_width),batch_sizebatch_size)val_ds
tf.keras.preprocessing.image_dataset_from_directory(./data/test/,seed123,image_size(img_height,
img_width),batch_sizebatch_size)我们可以通过class_names输出数据集的标签。
标签将按字母顺序对应于目录名称。
1)plt.imshow(images[i].numpy().astype(uint8))plt.title(class_names[labels[i]])plt.axis(off)3、再次检查数据
train_ds:print(image_batch.shape)print(labels_batch.shape)break输出
train_ds.cache().shuffle(1000).prefetch(buffer_sizeAUTOTUNE)
val_ds.cache().prefetch(buffer_sizeAUTOTUNE)三、构建CNN网络
关于卷积核的计算不懂的可以参考文章https://blog.csdn.net/qq_38251616/article/details/114278995layers.Dropout(0.4)
关于Dropout层的更多介绍可以参考文章https://mtyjkh.blog.csdn.net/article/details/115826689
models.Sequential([layers.experimental.preprocessing.Rescaling(1./255,
卷积层2卷积核3*3layers.AveragePooling2D((2,
Flatten层连接卷积层与全连接层layers.Dense(128,
全连接层特征进一步提取layers.Dense(len(class_names))
tf.keras.optimizers.schedules.ExponentialDecay是
中的一个学习率衰减策略用于在训练神经网络时动态地降低学习率。
学习率衰减是一种常用的技巧可以帮助优化算法更有效地收敛到全局最小值从而提高模型的性能。
initial_learning_rate初始学习率初始学习率大小。
decay_steps衰减步数学习率衰减的步数。
在经过
10则每10步衰减一次。
decay_rate衰减率学习率的衰减率。
它决定了学习率如何衰减。
通常取值在
之间。
staircase阶梯式衰减一个布尔值控制学习率的衰减方式。
如果设置为
tf.keras.optimizers.schedules.ExponentialDecay(initial_learning_rate,
tf.keras.optimizers.Adam(learning_ratelr_schedule)model.compile(optimizeroptimizer,losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsTrue),metrics[accuracy])注这里设置的动态学习率为指数衰减型ExponentialDecay。
在每一个epoch开始前学习率learning_rate都将会重置为初始学习率initial_learning_rate然后再重新开始衰减。
计算公式如下
模式中方向会自动从被监测的数据的名字中判断出来。
baseline:
如果模型没有显示基准的改善训练将停止。
estore_best_weights:
ModelCheckpoint(best_model.h5,monitorval_accuracy,verbose1,save_best_onlyTrue,save_weights_onlyTrue)#
EarlyStopping(monitorval_accuracy,
model.fit(train_ds,validation_dataval_ds,epochsepochs,callbacks[checkpointer,
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
stopping从输出结果看到val_accuracy一直0.5000那么肯定是哪里不对了。
history.history[val_accuracy]loss
history.history[val_loss]epochs_range
range(len(loss))plt.figure(figsize(12,
plt.show()2、尝试更改initial_learning_rate0.001
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
stopping这里看到减小了initial_learning_rate后效果好了很多。
model.load_weights(best_model.h5)from
Image.open(./data/test/nike/1.jpg)
expand_dims函数在索引axis处增加一个值为1的维度这里使得image变成一个一张图片的一个批次
记得做归一化处理与训练集处理方式保持一致predictions
print(预测结果为,class_names[np.argmax(predictions)])输出
学习到tensorflow中的动态学习率函数ExponentialDecay模型的初始学习率不能设置过大过大的学习率可能导致模型不收敛且模型精度太差当然也不能太小太小模型收敛慢难跳出局部最优。
学习到使模型因没有改善早结束训练函数EarlyStopping
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback