tensorboard应用学习

这个方法不错    思路比较清晰

http://blog.csdn.net/phdat101/article/details/52538061    [重要]

要运行tensorboard应用直接在命令行输入 tensorboard --logdir  /home.....


截至62相关的测试代码:

# -*- coding: UTF-8 -*- 
'''
Created on 2017年12月7日
'''
import pandas as pd
from sklearn.model_selection import train_test_split
import tensorflow as tf
import numpy as np
#从CSV文件中读入数据
data = pd.read_csv('train.csv')
# data.info()
#取部分特征字段用于分类,并将所有缺失的字段补充为0
#对Sex字段进行正规化处理
data['Sex'] = data['Sex'].apply(lambda s:1 if s == 'male' else 0)   #男为1,女为0
data = data.fillna(0)  #缺失的字段全部补充为0
dataset_X = data[['Sex','Age','Pclass','SibSp','Parch','Fare']]
dataset_X = dataset_X.as_matrix()     #转换成矩阵
# print dataset_X
#两种分类分别是幸存和死亡,即'Survived'和'Deceased'
data['Deceased'] = data['Survived'].apply( lambda s: int (not s))  #取非
dataset_Y = data[['Deceased','Survived']]
dataset_Y = dataset_Y.as_matrix()   #one-hot encoding
'# print dataset_Y'
#scikit-learn库中提供了用于切分数据集的工具函数train_test_split,随机打乱数据集后按比列拆分数据集
#使用函数train_test_split将标记数据切分为训练数据集和验证数据集,其中验证数据集占20%
X_train, X_validation, Y_train, Y_validation = train_test_split(dataset_X, dataset_Y, test_size = 0.2, random_state = 42 )
#设置 random_state = 42之后,就是代表多次运行程序后得到的随机数都是一样的,若设不同的值或者不设则随机数就是不一样的
# print Y_validation
# print len(X_train)
# a = [[1,2],[2,3],[3,4]]
# print len(a)

#接下来,使用TensorFlow构建计算图--------------------------------------------------------------------------------------------------------------------------------------
#使用placeholder声明占位符

#声明输入数据占位符
#shape参数的第一个元素为none,表示可以同时放入任意条记录
X = tf.placeholder(tf.float32, shape = [None, 6])
Y = tf.placeholder(tf.float32, shape = [None, 2])

#声明参数变量
W = tf.Variable(tf.random_normal([6, 2]), name = 'weights')
b = tf.Variable(tf.zeros([2]), name = 'bias')
# use saver to save and restore model
saver = tf.train.Saver()        #保存声明之前的所有变量

#构造前向传播计算图
y_pred = tf.nn.softmax(tf.matmul(X, W) + b)

#声明代价函数
cross_entropy = - tf.reduce_sum(Y*tf.log(y_pred+1e-10), reduction_indices = 1)  #reduction_indices指示按照哪个维度求和 *对应元素的乘积
#这里表示把每行的2个值加起来
# a = [1, 2]
# b = [3, 4]
# aa = np.array(a)
# bb =np. array(b)
# print aa
# print bb
# print aa*bb
cost =  tf.reduce_mean(cross_entropy)     #代价函数使用了cross-entropy
tf.scalar_summary('cost',cost) 

#使用梯度下降算法最小化代价,系统自动构建反向传播部分的计算图
train_op = tf.train.GradientDescentOptimizer(0.001).minimize(cost)   #此处learing rate设为0.01 且仅仅使用了梯度下降算法
#计算图的声明完成-------------------至此计算图结束


#构建训练迭代过程
with tf.Session() as sess:   #session对象负责把运行环境打包
    #初始化所有变量
    tf.initialize_all_variables().run()
    merged = tf.merge_all_summaries() #collect the tf.xxxxx_summary  
    writer = tf.train.SummaryWriter('/home/tensorBoardLog',sess.graph)   
        # maybe many writers to show different curvs in the same figure 
    #training loop
    for epoch in range(100):
        total_loss = 0.
        for i in range(len(X_train)):   #len返回行数
            #prepare feed data and run,这里相关于是使用随机梯度下降,对每一样本进来都进行参数更新
            feed_dict = {X: [X_train[i]], Y:[Y_train[i]]}
            summary, _, loss = sess.run([merged, train_op, cost], feed_dict = feed_dict)    #触发后端执行的入口,cost是tensor,不是优化算子,所以有值返回
            total_loss += loss
        writer.add_summary(summary, epoch)
        print('Epoch: %04d, total loss = %-9f' % (epoch+1, total_loss))
        
        
        
    #用验证数据集合评估模型的表现
    pred = sess.run(y_pred, feed_dict = {X: X_validation})
    print pred
    #argmax是找最大值的位置,后面的1指的是轴
    correct = np.equal(np.argmax(pred, 1), np.argmax(Y_validation, 1))
#     print correct
#     cao = correct.astype(np.float32)
#     print cao
#astype指的是类型转换, boolen型换成float型,mean表示加起来,除以个数,这里是1 和 0, 所以可以
    accuracy = np.mean(correct.astype(np.float32))
    print ('Accuracy on validation set: %.9f' % accuracy)
#     save_path = saver.save(sess, "model.ckpt" )      #保存训练好的参数


# #再开一个session进行最后的测试
# with tf.Session() as sess2:
#     #predict on test data
#     testdata = pd.read_csv('test.csv')
#     testdata = testdata.fillna(0)
#     testdata['Sex'] = testdata['Sex'].apply(lambda s: 1 if s == 'male' else 0)
#     X_test = testdata[['Sex', 'Age', 'Pclass', 'SibSp', 'Parch', 'Fare' ]]
#     saver.restore(sess2,  "model.ckpt" )        #加载变量
#     predictions = np.argmax(sess2.run(y_pred, feed_dict = {X: X_test}),1)
#     print predictions
#     submission = pd.DataFrame({
#                  'PassengerId': testdata['PassengerId'],
#                  'Survived': predictions
#                                })
#     submission.to_csv('Titanic-submission-miao.csv', index = False)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值