之前在softmax多分类中讲到多用交叉熵作为损失函数,这里顺便写个例子,tensorlflow练手。
# encoding:utf-8 import tensorflow as tf import input_data ### softmax 回归 # 自动下载安装数据集 mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) # 图片 28 * 28 = 784 x=tf.placeholder('float',[None,784]) # 特征数 784 # 初始化参数 w=tf.Variable(tf.zeros([784,10])) # 10是输出维度,0-9数字的独热编码 b=tf.Variable(tf.zeros([10])) # 模型 y=tf.nn.softmax(tf.matmul(x,w)+b) ### 训练模型 y_=tf.placeholder('float',[None,10]) # 10维 # 损失函数 交叉熵 cross_entropy=-tf.reduce_sum(y_*tf.log(y)) # reduce_sum 计算张量的所有元素之和 所有图片的交叉熵综合 # 优化算法 梯度下降 train_step=tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy) # 0.01 学习率 最小化 损失函数 # 初始化变量 init=tf.initialize_all_variables() # 启动图 会话 sess=tf.Session() sess.run(init) # 初始化变量 # 迭代,训练参数 for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) # 训练集 sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) # 模型评估 准确率 correct_predict = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1)) # 输出布尔值,即预测与真实是否一样 accuracy = tf.reduce_mean(tf.cast(correct_predict, 'float')) # 将布尔值转化成浮点数,然后求平均, 正确/总数 print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})) # 测试集 0.9194
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人