TensorFlow(2) 使用TF构建多层感知机预测MNIST数据集
import tensorflow as tf import tensorflow.examples.tutorials.mnist.input_data as input_data import matplotlib.pyplot as plt #读入数据---------------------------------------------------------------------- mnist input_data.read_data_sets(MNIST_data/,one_hotTrue)#label为one-hot-encoding #查看读入的数据格式------------------------------------------------------------- print(train,mnist.train.num_examples, ,validation,mnist.validation.num_examples, ,test,mnist.test.num_examples) print(train images:,mnist.train.images.shape, labels:,mnist.train.labels.shape) #查看label的值 mnist.train.labels[0] #函数将读入的数据图像显示 def plot_image(image): #上面读入的图像是一维的用reshape转成矩阵输出 plt.imshow(image.reshape(28,28),cmapbinary) plt.show() plot_image(mnist.train.images[0]) #函数输出10张图像带标签label和预测值prediction def plot_images_labels_prediction(images, labels, prediction, idx, num10): figplt.gcf() fig.set_size_inches(12,14) if num25: num25 for i in range(0, num): ax plt.subplot(5,5,1i) ax.imshow(np.reshape(images[idx],(28,28)),cmapbinary) title labelstr(np.argmax(labels[idx])) if len(prediction)0: title,predictionstr(prediction[idx]) ax.set_title(title, fontsize10) ax.set_xticks([]);ax.set_yticks([]) idx1 plt.show() plot_images_labels_prediction(mnist.validation.images, mnist.validation.labels,[],0) #构建MLP模型--------------------------------------------------------------------- #自定义layer def layer(output_dim, input_dim, inputs, activationNone): W tf.Variable(tf.random_normal([input_dim, output_dim])) b tf.Variable(tf.random_normal([1, output_dim])) WXb tf.matmul(inputs,W)b if activation is None: outputs WXb else: outputs activation(WXb) return outputs #两个隐藏层h1、h2一个输入x一个输出y_predict x tf.placeholder(float,[None, 784]) h1 layer(output_dim1000,input_dim784,inputsx,activationtf.nn.relu) h2 layer(output_dim1000,input_dim1000,inputsh1,activationtf.nn.relu) y_predict layer(output_dim10,input_dim1000,inputsh2,activationNone) #定义标签值 y_label tf.placeholder(float,[None,10]) #损失函数 loss_function tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(logitsy_predict,labelsy_label)) #优化器使loss最小化学习率为0.001 optimizer tf.train.AdamOptimizer(learning_rate0.001).minimize(loss_function) #预测结果的正确性 correct_prediction tf.equal(tf.argmax(y_label,1),tf.argmax(y_predict,1)) #计算精度cast():转换值的类型,reduce_mean():计算平均值 accuracy tf.reduce_mean(tf.cast(correct_prediction,float)) #开始训练--------------------------------------------------------------------- trainEpochs 15 #epoch batchSize 100 totalBatchs int(len(mnist.train.images)/batchSize) #一个周期总的批次 loss_list[];epoch_list[];accuracy_list[] #记录训练过程的loss,epoch,accuracy from time import time startTime time() sess tf.Session() sess.run(tf.global_variables_initializer()) for epoch in range(trainEpochs): for i in range(totalBatchs): batch_x, batch_y mnist.train.next_batch(batchSize) #读取下一个批次的数据循环读取 sess.run(optimizer, feed_dict{x:batch_x,y_label:batch_y}) loss, acc sess.run([loss_function,accuracy],feed_dict\ {x:mnist.validation.images,y_label:mnist.validation.labels}) epoch_list.append(epoch) loss_list.append(loss) accuracy_list.append(acc) print(Train Epoch:, %02d%(epoch1), Loss,\ {:.9f}.format(loss), Accuary,acc) duration time()-startTime print(Train Finished takes:, duration) #训练结果显示-------------------------------------------------------------------- %matplotlib inline fig plt.gcf()#获取当前的figure图 fig.set_size_inches(4,2) plt.plot(epoch_list, loss_list, labelloss) plt.ylabel(loss) plt.xlabel(epoch) plt.legend([loss], locupper right) plt.plot(epoch_list,accuracy_list,labelaccuracy) fig plt.gcf() fig.set_size_inches(4,2) plt.ylim(0.8,1)#设置y轴范围 plt.ylabel(accuracy) plt.xlabel(epoch) plt.legend([accuarcy], locupper right) #评估------------------------------------------------------------------------------ #测试集test准确率 print(Accuracy:, sess.run(accuracy,feed_dict\ {x:mnist.test.images,y_label:mnist.test.labels})) #预测test prediction_result sess.run(tf.argmax(y_predict,1),feed_dict{x:mnist.test.images}) #显示真实值和预测值及图像 plot_images_labels_prediction(mnist.test.images,mnist.test.labels,prediction_result,0)

相关新闻

3个维度重塑你的英雄联盟体验:League Akari如何成为你的智能游戏伙伴

3个维度重塑你的英雄联盟体验:League Akari如何成为你的智能游戏伙伴

3个维度重塑你的英雄联盟体验:League Akari如何成为你的智能游戏伙伴 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 当英雄联盟的…

2026/10/16 1:41:32 阅读更多 →
中欧 PHP 开发者大会因多元化争议而取消

中欧 PHP 开发者大会因多元化争议而取消

没有女性的演讲者名单导致提倡多元化的男性演讲者退出会议,最终使得计划于德国举办的中欧 PHP 开发者大会宣布取消。 上周末,原定于 10 月 4 日至 6 日在德国德累斯顿举行的 PHP 会议 PHP Central Europe developer conference (PHP.CE) 因多元化争议宣布…

2026/10/16 18:31:49 阅读更多 →
SpringBoot在线投稿系统开发与优化实践

SpringBoot在线投稿系统开发与优化实践

1. 项目概述 在线投稿系统是学术期刊、会议和内容平台的核心基础设施,它直接关系到内容生产的效率和质量管控。基于SpringBoot框架开发的投稿系统,能够为编辑部、审稿人和作者提供全流程的数字化解决方案。这个毕业设计项目采用Java技术栈实现&#xff0…

2026/10/13 18:35:59 阅读更多 →

最新新闻

嵌入式C语言实现多项式拟合polyfit:资源受限场景下的高鲁棒性算法

嵌入式C语言实现多项式拟合polyfit:资源受限场景下的高鲁棒性算法

简介:本资源是一份面向C语言初学者与嵌入式/Linux开发者的数值计算实践代码包,聚焦多项式拟合这一经典数据建模方法,解决在无高级语言环境(如Python/Matlab)时,如何用纯C实现最小二乘法拟合并评估模型的问题…

2026/10/16 21:18:39 阅读更多 →
ThreadX资源体系深度解析:从内核裁剪到运行时健康监控

ThreadX资源体系深度解析:从内核裁剪到运行时健康监控

简介:本资源是面向嵌入式开发工程师与RTOS学习者的ThreadX实时操作系统全栈学习包,聚焦工业控制、汽车电子、医疗设备等对实时性要求严苛的领域,助力初学者系统入门与进阶开发者深度定制优化。压缩包含134个文件,以100个C源文件和…

2026/10/16 21:18:39 阅读更多 →
AD9361寄存器配置本质:射频状态机与时序约束解析

AD9361寄存器配置本质:射频状态机与时序约束解析

简介:本资源是一份面向嵌入式射频开发工程师与SDR(软件定义无线电)初学者的AD9361寄存器级配置实战指南,聚焦高频通信系统中收发器底层驱动调试这一关键难点。内容覆盖参考时钟设定、LVDS接口配置、采样率与带宽协同调整、AGC/MGC…

2026/10/16 21:18:39 阅读更多 →
SOEM源码解析:从EtherCAT主站协议栈到Linux实时运行实践

SOEM源码解析:从EtherCAT主站协议栈到Linux实时运行实践

简介:SOEM库源码是一套基于EtherCAT主站协议的开源实现,面向工业自动化、运动控制和实时通信领域的开发者,可帮助构建主站并进行设备扫描、配置、状态监控及数据读写。资源压缩包共141个文件,以c源文件、h头文件为主体&#xff0c…

2026/10/16 21:18:39 阅读更多 →
TDC-GP22时间数字转换芯片详解:从测量原理到例程移植避坑指南

TDC-GP22时间数字转换芯片详解:从测量原理到例程移植避坑指南

简介:面向单片机与嵌入式硬件开发者的TDC-GP22芯片例程包,聚焦MSP430超低功耗单片机与高精度时间测量芯片的协同应用,可支撑超声水表流量计算、超声波测距、脉冲测速等典型场景,也适合作为高校课程设计、毕业设计或产品原型的基础…

2026/10/16 21:18:39 阅读更多 →
数组差异识别:带顺序保障的集合差集实现

数组差异识别:带顺序保障的集合差集实现

1. 这道题到底在考什么:从“找不同”到工程级数据比对思维“找出不是两个数组共有的元素”——光看标题,很多人第一反应是“这不就是个去重取差集的小练习吗?用个set不就完事了?”但如果你真这么想,说明你还没摸到PTA这…

2026/10/16 21:17:38 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →