无法理解Tensorboard中给出的图

时间:2018-08-16 14:10:36

标签: python python-3.x tensorflow tensorboard

我已经在Tensorflow中编码了波士顿房屋价格的线性模型(没有任何特征工程)。

我已经计算了误差和权重(W0,W1)和偏差(b),并试图在Tensorboard中可视化偏差项(b)。

代码如下:

import tensorflow as tf
import numpy as np
import pandas as pd
from sklearn.datasets import load_boston
import matplotlib.pyplot as plt

tf.reset_default_graph()
boston=load_boston()
type(boston)
boston.feature_names

bd=pd.DataFrame(data=boston.data,columns=boston.feature_names)

bd['Price']=pd.DataFrame(data=boston.target)
np.random.shuffle(bd.values)


W0=tf.Variable(0.0000000000003)
W1=tf.Variable(0.000000000002)
b=tf.Variable(0.0000000000001)
    #print(bd.shape[1])

tf.summary.histogram('Weight0', W0)
tf.summary.histogram('Weight1', W1)
tf.summary.histogram('Bias', b)



dataset_input=bd.iloc[:, 0 : bd.shape[1]-1];
    #dataset_input.head(2)

dataset_output=bd.iloc[:, bd.shape[1]-1]
dataset_output=dataset_output.values
dataset_output=dataset_output.reshape((bd.shape[0],1)) #converted (506,) to (506,1) because in pandas
    #the shape was not changing and it was needed later in feed_dict


dataset_input=dataset_input.values  #only dataset_input is in DataFrame form and converting it into np.ndarray

    # ADDED
dataset_input = np.array(dataset_input, dtype=np.float32)
    # ADDED
dataset_output = np.array(dataset_output, dtype=np.float32)

X=tf.placeholder(tf.float32, shape=(None,bd.shape[1]-1))
Y=tf.placeholder(tf.float32, shape=(None,1))

Y_=W0*X*X + W1*X + b
    #Y_pred = tf.add(tf.multiply(tf.pow(X, pow_i), W), Y_pred)
print(X.shape)
print(Y.shape)


loss=tf.reduce_mean(tf.square(Y_-Y))
#tf.summary.scalar('loss',loss)

optimizer=tf.train.GradientDescentOptimizer(0.0000000000001)
train=optimizer.minimize(loss)

init=tf.global_variables_initializer()#tf.global_variables_initializer()#tf.initialize_all_variables()
sess=tf.Session()
sess.run(init)



wb_=[]
with tf.Session() as sess:
    summary_merge = tf.summary.merge_all()

    writer=tf.summary.FileWriter("/Users/ajay/Documents/Visual",sess.graph)

    epochs=21
    sess.run(init)

    for i in range(epochs):
        s_mer=sess.run(summary_merge,feed_dict={X: dataset_input, Y: dataset_output})  #ERROR________ERROR
        sess.run(train,feed_dict={X:dataset_input,Y:dataset_output})

            #CHANGED
        print("loss",sess.run(loss, feed_dict={X:dataset_input,Y:dataset_output}))
        #sess.run(loss, feed_dict={X:dataset_input,Y:dataset_output})
        writer.add_summary(s_mer,i)

        tf.summary.histogram(name="loss",values=loss)
        if(i%5==0):
            print(i, sess.run([W0,W1,b]))
            wb_.append(sess.run([W0,W1,b]))

        print(writer.get_logdir())
        print(writer.close())
tf.summary.FileWriterCache.clear()

这是代码的输出:

(?, 13)
(?, 1)
loss 592.029
0 [1.0872052e-07, 3.0845976e-10, 4.6065682e-12]
/Users/ajay/Documents/Visual
None
loss 591.911
/Users/ajay/Documents/Visual
None
loss 591.794
/Users/ajay/Documents/Visual
None
loss 591.676
/Users/ajay/Documents/Visual
None
loss 591.559
/Users/ajay/Documents/Visual
None
loss 591.443
5 [6.5024324e-07, 1.8367868e-09, 2.7130947e-11]
/Users/ajay/Documents/Visual
None
loss 591.327
/Users/ajay/Documents/Visual
None
loss 591.21
/Users/ajay/Documents/Visual
None
loss 591.095
/Users/ajay/Documents/Visual
None
loss 590.979
/Users/ajay/Documents/Visual
None
loss 590.864
10 [1.188318e-06, 3.3585248e-09, 4.9641281e-11]
/Users/ajay/Documents/Visual
None
loss 590.749
/Users/ajay/Documents/Visual
None
loss 590.635
/Users/ajay/Documents/Visual
None
loss 590.521
/Users/ajay/Documents/Visual
None
loss 590.406
/Users/ajay/Documents/Visual
None
loss 590.293
15 [1.722967e-06, 4.873717e-09, 7.2137664e-11]
/Users/ajay/Documents/Visual
None
loss 590.179
/Users/ajay/Documents/Visual
None
loss 590.066
/Users/ajay/Documents/Visual
None
loss 589.954
/Users/ajay/Documents/Visual
None
loss 589.841
/Users/ajay/Documents/Visual
None
loss 589.729
20 [2.2542119e-06, 6.3824039e-09, 9.4620201e-11]
/Users/ajay/Documents/Visual
None

可视化效果是:

enter image description here

我无法理解曲线试图描绘的是什么。 根据我的理解,偏置曲线中的x轴是每个时期之后的偏置,但是y轴显示了什么?纠正我,如果我错了。

y轴是一条恒定曲线,这让我有些困惑。

此外,曲线上没有x轴和y轴的标签描述。然后,我如何理解Tensorboard中其他曲线的含义?

此外,为什么我的“损失”没有显示在循环内部的Tensorboard中?以后是否需要将其添加到摘要中?

此外,“分布”标签显示的是“权重和偏差”,图中没有任何曲线。

0 个答案:

没有答案