TensorFlow训练网络的方式有哪些
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章给大家分享的是有关TensorFlow训练网络的方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。TensorFlow训练网络有两种方式,一种是基于tenso
千家信息网最后更新 2025年11月07日TensorFlow训练网络的方式有哪些
这篇文章给大家分享的是有关TensorFlow训练网络的方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
TensorFlow训练网络有两种方式,一种是基于tensor(array),另外一种是迭代器
两种方式区别是:
第一种是要加载全部数据形成一个tensor,然后调用model.fit()然后指定参数batch_size进行将所有数据进行分批训练
第二种是自己先将数据分批形成一个迭代器,然后遍历这个迭代器,分别训练每个批次的数据
方式一:通过迭代器
IMAGE_SIZE = 1000# step1:加载数据集(train_images, train_labels), (val_images, val_labels) = tf.keras.datasets.mnist.load_data()# step2:将图像归一化train_images, val_images = train_images / 255.0, val_images / 255.0# step3:设置训练集大小train_images = train_images[:IMAGE_SIZE]val_images = val_images[:IMAGE_SIZE]train_labels = train_labels[:IMAGE_SIZE]val_labels = val_labels[:IMAGE_SIZE]# step4:将图像的维度变为(IMAGE_SIZE,28,28,1)train_images = tf.expand_dims(train_images, axis=3)val_images = tf.expand_dims(val_images, axis=3)# step5:将图像的尺寸变为(32,32)train_images = tf.image.resize(train_images, [32, 32])val_images = tf.image.resize(val_images, [32, 32])# step6:将数据变为迭代器train_loader = tf.data.Dataset.from_tensor_slices((train_images, train_labels)).batch(32)val_loader = tf.data.Dataset.from_tensor_slices((val_images, val_labels)).batch(IMAGE_SIZE)# step5:导入模型model = LeNet5()# 让模型知道输入数据的形式model.build(input_shape=(1, 32, 32, 1))# 结局Output Shape为 multiplemodel.call(Input(shape=(32, 32, 1)))# step6:编译模型model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])# 权重保存路径checkpoint_path = "./weight/cp.ckpt"# 回调函数,用户保存权重save_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path, save_best_only=True, save_weights_only=True, monitor='val_loss', verbose=0)EPOCHS = 11for epoch in range(1, EPOCHS): # 每个批次训练集误差 train_epoch_loss_avg = tf.keras.metrics.Mean() # 每个批次训练集精度 train_epoch_accuracy = tf.keras.metrics.SparseCategoricalAccuracy() # 每个批次验证集误差 val_epoch_loss_avg = tf.keras.metrics.Mean() # 每个批次验证集精度 val_epoch_accuracy = tf.keras.metrics.SparseCategoricalAccuracy() for x, y in train_loader: history = model.fit(x, y, validation_data=val_loader, callbacks=[save_callback], verbose=0) # 更新误差,保留上次 train_epoch_loss_avg.update_state(history.history['loss'][0]) # 更新精度,保留上次 train_epoch_accuracy.update_state(y, model(x, training=True)) val_epoch_loss_avg.update_state(history.history['val_loss'][0]) val_epoch_accuracy.update_state(next(iter(val_loader))[1], model(next(iter(val_loader))[0], training=True)) # 使用.result()计算每个批次的误差和精度结果 print("Epoch {:d}: trainLoss: {:.3f}, trainAccuracy: {:.3%} valLoss: {:.3f}, valAccuracy: {:.3%}".format(epoch, train_epoch_loss_avg.result(), train_epoch_accuracy.result(), val_epoch_loss_avg.result(), val_epoch_accuracy.result()))方式二:适用model.fit()进行分批训练
import model_sequential(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()# step2:将图像归一化train_images, test_images = train_images / 255.0, test_images / 255.0# step3:将图像的维度变为(60000,28,28,1)train_images = tf.expand_dims(train_images, axis=3)test_images = tf.expand_dims(test_images, axis=3)# step4:将图像尺寸改为(60000,32,32,1)train_images = tf.image.resize(train_images, [32, 32])test_images = tf.image.resize(test_images, [32, 32])# step5:导入模型# history = LeNet5()history = model_sequential.LeNet()# 让模型知道输入数据的形式history.build(input_shape=(1, 32, 32, 1))# history(tf.zeros([1, 32, 32, 1]))# 结局Output Shape为 multiplehistory.call(Input(shape=(32, 32, 1)))history.summary()# step6:编译模型history.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])# 权重保存路径checkpoint_path = "./weight/cp.ckpt"# 回调函数,用户保存权重save_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_path, save_best_only=True, save_weights_only=True, monitor='val_loss', verbose=1)# step7:训练模型history = history.fit(train_images, train_labels, epochs=10, batch_size=32, validation_data=(test_images, test_labels), callbacks=[save_callback])
感谢各位的阅读!关于"TensorFlow训练网络的方式有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
训练
数据
模型
方式
图像
批次
迭代
权重
精度
误差
网络
内容
函数
尺寸
形式
更多
用户
篇文章
结局
维度
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
mfc如何读取数据库
华为外包软件开发工程师工资
云开发多数据库
java实现数据库表数据对比
外部数据库读字段
我与网络安全文案
成都项目软件开发机构
医院无线网络安全设计
武汉电脑软件开发教程
开源文件服务器部署
信息化软件开发零售价格
熟悉键盘软件开发
互联网科技未来估值
网络安全 高职 规划教材
蜂窝网络技术种类
生活中运用的网络技术
二十大网络安全征文
公安厅 网络安全培训
网络技术部考评报告
芙蓉区软件开发专业学校
个人用服务器app
电驴子服务器
精算数据库在哪
全民奇迹gm数据库工具
宝德服务器管理口默认ip
填写数据库名怎么填
数据库储存图片路径
gtv服务器人数太过火爆
常规网络安全调试
软件开发用不到算法