记录sklearn数据训练时的loss值,用tensorboard可视化

三步骤:红字处

  1. import tensorflow as tf
  2. from sklearn.datasets import load_digits
  3. from sklearn.cross_validation import train_test_split
  4. from sklearn.preprocessing import LabelBinarizer
  5.  
  6. # load data
  7. digits = load_digits()
  8. X = digits.data
  9. y = digits.target
  10. y = LabelBinarizer().fit_transform(y) # 转换格式
  11. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3)
  12.  
  13. def add_layer(inputs, in_size, out_size, layer_name, active_function=None):
  14. """
  15. :param inputs:
  16. :param in_size: 行
  17. :param out_size: 列 , [行, 列] =矩阵
  18. :param active_function:
  19. :return:
  20. """
  21. with tf.name_scope('layer'):
  22. with tf.name_scope('weights'):
  23. W = tf.Variable(tf.random_normal([in_size, out_size]), name='W') #
  24. with tf.name_scope('bias'):
  25. b = tf.Variable(tf.zeros([1, out_size]) + 0.1) # b是一行数据,对应out_size列个数据
  26. with tf.name_scope('Wx_plus_b'):
  27. Wx_plus_b = tf.matmul(inputs, W) + b
  28. Wx_plus_b = tf.nn.dropout(Wx_plus_b, keep_prob=keep_prob)
  29. if active_function is None:
  30. outputs = Wx_plus_b
  31. else:
  32. outputs = active_function(Wx_plus_b)
  33. tf.summary.histogram(layer_name + '/outputs', outputs) # 1.2.记录outputs值,数据直方图
  34. return outputs
  35.  
  36. # define placeholder for inputs to network
  37. keep_prob = tf.placeholder(tf.float32) # 不被dropout的数量
  38. xs = tf.placeholder(tf.float32, [None, 64]) # 8*8
  39. ys = tf.placeholder(tf.float32, [None, 10])
  40.  
  41. # add output layer
  42. l1 = add_layer(xs, 64, 50, 'l1', active_function=tf.nn.tanh)
  43. prediction = add_layer(l1, 50, 10, 'l2', active_function=tf.nn.softmax)
  44.  
  45. # the loss between prediction and really
  46. cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction), reduction_indices=[1]))
  47. tf.summary.scalar('loss', cross_entropy) # 字符串类型的标量张量,包含一个Summaryprotobuf 1.1记录标量
  48. # training
  49. train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
  50.  
  51. sess = tf.Session()
  52. merged = tf.summary.merge_all() # 2.把所有summary节点整合在一起,只需run一次,这儿只有cross_entropy
  53. sess.run(tf.initialize_all_variables())
  54.  
  55. train_writer = tf.summary.FileWriter('log/train', sess.graph) # 3.写入
  56. test_writer = tf.summary.FileWriter('log/test', sess.graph)
  57.  
  58. # start training
  59. for i in range(500):
  60. sess.run(train_step, feed_dict={xs: X_train, ys: y_train, keep_prob: 0.5}) # keep_prob训练时保留50%,防止过拟合
  61. if i % 50 == 0:
  62. # record loss
  63. train_result = sess.run(merged, feed_dict={xs: X_train, ys: y_train, keep_prob: 1}) # 3.1 激活 tensorboard记录保留100%的数据
  64. test_result = sess.run(merged, feed_dict={xs: X_test, ys: y_test, keep_prob: 1})
  65. train_writer.add_summary(train_result, i)
  66. test_writer.add_summary(test_result, i)
  67.  
  68. print("Record Finished !!!")

tensorboard-sklearn数据-loss的更多相关文章

  1. sklearn数据预处理-scale

    对数据按列属性进行scale处理后,每列的数据均值变成0,标准差变为1.可通过下面的例子加深理解: from sklearn import preprocessing import numpy as ...

  2. sklearn数据预处理

    一.standardization 之所以标准化的原因是,如果数据集中的某个特征的取值不服从标准的正太分布,则性能就会变得很差 ①函数scale提供了快速和简单的方法在单个数组形式的数据集上来执行标准 ...

  3. 利用tensorboard将数据可视化

    注:代码是网上下载的,但是找不到原始出处了,侵权则删 先写出visual类: class TF_visualizer(object): def __init__(self, dimension, ve ...

  4. sklearn 数据预处理1: StandardScaler

    作用:去均值和方差归一化.且是针对每一个特征维度来做的,而不是针对样本. [注:] 并不是所有的标准化都能给estimator带来好处. “Standardization of a dataset i ...

  5. 数据预处理及sklearn方法实现

    1.标准化(中心化) 在许多机器学习执行前,需要对数据集进行标准化处理.因为很对算法假设数据的特征服从标准正态分布.所以如果不对数据标准化,那么算法的效果会很差. 例如,在学习算法的目标函数,都假设数 ...

  6. Sklearn 预处理数据

    ## 版权所有,转帖注明出处 章节 SciKit-Learn 加载数据集 SciKit-Learn 数据集基本信息 SciKit-Learn 使用matplotlib可视化数据 SciKit-Lear ...

  7. 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn

    https://www.cnblogs.com/31415926535x/p/11001669.html 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn ...

  8. 学习笔记CB013: TensorFlow、TensorBoard、seq2seq

    tensorflow基于图结构深度学习框架,内部通过session实现图和计算内核交互. tensorflow基本数学运算用法. import tensorflow as tf sess = tf.S ...

  9. Tensorboard简介

    Tensorflow官方推出了可视化工具Tensorboard,可以帮助我们实现以上功能,它可以将模型训练过程中的各种数据汇总起来存在自定义的路径与日志文件中,然后在指定的web端可视化地展现这些信息 ...

随机推荐

  1. 当前目录如何打开cmd

    前言 有时候需要在当前文件夹打开cmd控制台,直接从开始打开cmd进入当前目录比较麻烦,可以直接进入. 方法 按住键盘上Shift键的同时,在要操作的文件夹(DOS年代称为目录)上点击鼠标右键,在弹出 ...

  2. 与众不同 制作会唱歌的WinRAR - imsoft.cnblogs

    为了使用方便,我们可能会把RAR压缩包制作成自解压文件.WinRAR自带的自解压模块虽然使用很方便,但千篇一律的外观看起来实在 乏味.其实,只要通过简单改造,你就可以制作出与众不同,声色俱佳的WinR ...

  3. CodeForces - 1093G:Multidimensional Queries (线段树求K维最远点距离)

    题意:给定N个K维的点,Q次操作,或者修改点的坐标:或者问[L,R]这些点中最远的点. 思路:因为最后一定可以表示维+/-(x1-x2)+/-(y1-y2)+/-(z1-z2)..... 所以我们可以 ...

  4. 【spring data jpa】好文储备

    [spring data jpa]带有条件的查询后分页和不带条件查询后分页实现  :  https://blog.csdn.net/lihuapiao/article/details/48782843 ...

  5. java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用

    当项目是ssh框架时,每一个Action会对应一个Service和一个Dao.但是所有的Ation对应的Dao中的方法是相同的,只是要查的表不一样.由于封装的思想,为了提高代码的重用性.可以使用jav ...

  6. day10 python学习 函数的嵌套命名空间作用域 三元运算 位置参数 默认参数 动态参数

    1.三元运算 #1.三元运算 利用已下方法就可以实现一步运算返回a b中大的值 def my_max(a,b): c=0 a=int(input('请输入')) b=int(input('请输入')) ...

  7. 阻塞队列 BlockingQueue

    在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利.本文 ...

  8. jmeter自动生成报告

    从JMeter 3.0开始已支持自动生成动态报告,我们可以更容易根据生成的报告来完成我们的性能测试报告. 如何生成html测试报告 如果未生成结果文件(.jtl),可运行如下命令生成报告: jmete ...

  9. 转 Fiddler导出jmeter脚本

    前提条件:                1.下载安装抓包工具Fiddler                2.下载Fiddler插件,参考下载地址:http://download.csdn.net/ ...

  10. Windows OS系统变量

    %userprofile% C:\Users\Administrator\ %windir% C:\Windows\