花谢花飞花满天,红消香断有谁怜?
""" 回答多选项问题,使用softmax函数,对数几率回归在多个可能不同值上的推广。 函数返回值是C个分量的概率向量,每个分量对应一个输出类别概率。 分量为概率,C个分量和始终为1。 每个样本必须属于某个输出类别,所有可能样本均被覆盖。 分量和小于1,存在隐藏类别; 分量和大于1,每个样本可能同时属于多个类别。 类别数量为2,输出概率与对数几率回归模型输出相同。 变量初始化,需要C个不同权值组,每个组对应一个可能输出,使用权值矩阵。 每行与输入特征对应,每列与输出类别对应。 鸢尾花数据集Iris,包含4个数据特征、3类可能输出,权值矩阵4X3。 训练样本每个输出类别损失相加。 训练样本期望类别为1,其他为0。 只有一个损失值被计入,度量模型为真实类别预测的概率可信度。 每个训练样本损失相加,得到训练集总损失值。 TensorFlow的softmax交叉熵函数: sparse_softmax_cross_entropy_with_logits版本针对训练集每个样本只对应单个类别优化, softmax_cross_entropy_with_logits版本可使用包含每个样本属于每个类别的概率信息的训练集。 模型最终输出是单个类别值。 不需要每个类别都转换独立变量,需要把值转换为0~2整数(总类别数3)。 tf.stack创建张量,tf.equal把文件输入与每个可能值比较。tf.argmax找到张量值为真的位置。 推断过程计算测试样本属于每个类别概率。 tf.argmax函数选择预测输出值最大概率类别。 tf.equal与期望类别比较。 tf.reduce_meen计算准确率。 """ import tensorflow as tf#导入TensorFlow库 import os#导入OS库 W = tf.Variable(tf.zeros([4, 3]), name="weights")#变量权值,矩阵,每个特征权值列对应一个输出类别 b = tf.Variable(tf.zeros([3], name="bias"))#模型偏置,每个偏置对应一个输出类别 def combine_inputs(X):#输入值合并 print "function: combine_inputs" return tf.matmul(X, W) + b def inference(X):#计算返回推断模型输出(数据X) print "function: inference" return tf.nn.softmax(combine_inputs(X))#调用softmax分类函数 def loss(X, Y):#计算损失(训练数据X及期望输出Y) print "function: loss" return tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(logits=combine_inputs(X), labels=Y))#求平均值,针对每个样本只对应单个类别优化 def read_csv(batch_size, file_name, record_defaults):#从csv文件读取数据,加载解析,创建批次读取张量多行数据 filename_queue = tf.train.string_input_producer([os.path.join(os.getcwd(), file_name)])reader = tf.TextLineReader(skip_header_lines=1)key, value = reader.read(filename_queue)decoded = tf.decode_csv(value, record_defaults=record_defaults)#字符串(文本行)转换到指定默认值张量列元组,为每列设置数据类型 return tf.train.shuffle_batch(decoded, batch_size=batch_size, capacity=batch_size * 50, min_after_dequeue=batch_size)#读取文件,加载张量batch_size行 def inputs():#读取或生成训练数据X及期望输出Y print "function: inputs" #数据来源:https://archive.ics.uci.edu/ml/datasets/Iris #iris.data改为iris.csv,增加sepal_length, sepal_width, petal_length, petal_width, label字段行首行 sepal_length, sepal_width, petal_length, petal_width, label =\read_csv(100, "iris.csv", [[0.0], [0.0], [0.0], [0.0], [""]])#转换属性数据 label_number = tf.to_int32(tf.argmax(tf.to_int32(tf.stack([tf.equal(label, ["Iris-setosa"]),tf.equal(label, ["Iris-versicolor"]),tf.equal(label, ["Iris-virginica"])])), 0))#将类名称转抽象为从0开始的类别索引 features = tf.transpose(tf.stack([sepal_length, sepal_width, petal_length, petal_width]))#特征装入矩阵,转置,每行一样本,每列一特征 return features, label_number def train(total_loss):#训练或调整模型参数(计算总损失) print "function: train" learning_rate = 0.01 return tf.train.GradientDescentOptimizer(learning_rate).minimize(total_loss) def evaluate(sess, X, Y):#评估训练模型 print "function: evaluate" predicted = tf.cast(tf.arg_max(inference(X), 1), tf.int32)#选择预测输出值最大概率类别 print sess.run(tf.reduce_mean(tf.cast(tf.equal(predicted, Y), tf.float32)))#统计所有正确预测样本数,除以批次样本总数,得到正确预测百分比 with tf.Session() as sess:#会话对象启动数据流图,搭建流程 print "Session: start" tf.global_variables_initializer().run()X, Y = inputs()total_loss = loss(X, Y)train_op = train(total_loss)coord = tf.train.Coordinator()threads = tf.train.start_queue_runners(sess=sess, coord=coord)training_steps = 1000#实际训练迭代次数 for step in range(training_steps):#实际训练闭环 sess.run([train_op])if step % 10 == 0:#查看训练过程损失递减 print str(step)+ " loss: ", sess.run([total_loss])print str(training_steps) + " final loss: ", sess.run([total_loss])evaluate(sess, X, Y)#模型评估 coord.request_stop()coord.join(threads)sess.close()
花谢花飞花满天,红消香断有谁怜?相关推荐
- 花谢飘飞花满天...
花谢飘飞花满天 雨落成帘雨无眠 缘聚十月再相见 我羡鸳鸯不羡仙 --谙忆 转载请注明原文地址与作者笔名 原文地址: https://copyfuture.com/blogs-details/20191 ...
- 梦如繁花,无奈花开花谢花无常 伤感古典日志
梦如繁花,无奈花开花谢花无常 伤感古典日志 - 梦如繁花,无奈花开花谢花无常 伤感古典日志 忆往昔,花香满怀念红颜 恨离别,一帘幽梦情缘浅 -题记 夜静花寒,忽尔的一些往昔浮现,映着逐渐消瘦的脸颊, ...
- 怎么修剪_夹竹桃怎么养?这样“修剪”一下,一年开3、4次花,花大色艳
夹竹桃属于一种常绿灌木,一年四季叶子绿油油的,比较耐寒也比较耐炎热,夹竹桃一般都开粉红色花朵,但是也有红色的花儿也有白色的花儿,也有淡黄色的花色,它的花期在六到九月份. 夹竹桃能养在室内吗?1个种植小 ...
- 深圳六月有哪些公园能赏花 赏花打卡点推荐
深圳真的是一年四季常绿,不管什么季节都能赏花,现在已经到六月天了,那么深圳六月有哪些公园能赏花呢?给大家推荐一些赏花打卡点吧! 深圳六月有哪些公园能赏花 赏花打卡点推荐 荷花 分布区域:分布于中国.日 ...
- 花开花落花非花、缘起缘灭缘随缘
一个人,一条路,一片天. 仿佛整个世界就是自己,自己就是世界的全部!这不是孤傲,而是孤独! 走着走着...这个人突然发现原来这条路这片天原来不止他一个!原来还有形形色色的人,原来还有千奇百怪的事! 原 ...
- 19朵玫瑰花的花语-教你简单玫瑰花的折法
19朵玫瑰花的花语-教你简单玫瑰花的折法 今天教大家一款折纸玫瑰束花的DIY方法,各位折纸达人可以根据不同的玫瑰花语需求折一粟送给心中的ta 但不同数量.有不同的喻意,所以送花时应对不同的数量含义区别 ...
- c语言加花指令,花指令的应用
原标题:花指令的应用 对免杀的影响是非常大的,有效地利用花指令可以使免杀工作事半功倍,甚至单凭花指令就可以达到免杀的效果. 一.花指令在免杀领域的应用 1.花指令的应用技巧 在使用之前,首先我们应该明 ...
- c语言程序编写一朵花,一朵花(中英双语)
一朵花 A Flower 作者|白鹤清泉(Baihe Qingquan) 英译|周柯楠(Zhou Kenan) 轻轻地走近你的世界 Gently I approach your world 默默地与你 ...
- java独步寻花,江畔独步寻花
黄师塔前江水东,春光懒困倚微风. 桃花一簇开无主,可爱深红爱浅红? <江畔独步寻花>译文 黄师塔前江水向东流去,温暖的春天使人困倦,只想倚着春风小憩. 一株无主的桃花开得正盛,究竟是爱深红 ...
最新文章
- 命令行编译运行CSharp文件
- HTML5-WebSocket实现聊天室
- Avalonia跨平台入门第四篇之Popup在uos下问题
- 如何将商业第三方文物整合到您的Maven版本中
- set_bit() 等位函数分析! \linux-1.0\linux\include\asm\bitops.h
- Android Palette颜色提取
- ajax 调用asp.net后台方法
- nginx(三)初步搭建nginx虚拟主机
- Java+opencv+mysql实现人脸识别源码(人脸采集入库+人脸识别相似度)
- 深入探索 Android 网络优化(三、网络优化篇)下
- 刘汝佳 《竞赛入门》5.2.2
- 电脑数据恢复软件推荐10款
- 物联网常用无线模块 接收灵敏度及发射功率简化测量方法
- P2P网贷行业的新征程
- 算法设计与分析之分治法
- 通过cv2.VideoCapture完成跳帧截取视频图片
- php判断显示器横屏还是竖屏,判断横屏竖屏(三种)
- windbg错误码汇总
- iVX低代码平台系列详解 -- 概述篇(一)
- 不同vlan间的通信--三层交换技术
热门文章
- Java中线程的学习(四)——线程的进阶应用(涉及锁、经典卖票案列)
- mac地址和ip地址、子网掩码和默认网关
- vue后台系统管理项目-菜单权限管理功能
- Python笔试题: 足球双循环赛制积分计算方法
- 搭建DNS服务器的那些知识
- mobi 第五项修炼_第五项修炼(套装共5册)epub+mobi+azw3_电子书_下载百度云PDF下载...
- 风雪一隅 php,一隅小角,遇见美好——自然角中的二三事
- 四支独立团队如何通过Kickstarter获得资金:第一部分
- echarts的边框图片之切图(重要)
- 天猫再出黑科技,大数据推彩瞳趋势定制