tensorflow中用summary.merge_all 时出现 Nontype问题

来源:互联网 发布:ps在mac上如何下载 编辑:程序博客网 时间:2024/05/16 18:15

我用的是python3.5,tensorflow版本是1.4。

错误的意思,是在运行 summary_str = sess.run(summary_op) 时,summary_op没有被定义。
但是我在前面妥妥的加了summary_op = tf.summary.merge_all()这句话,当我调试的时候,发现summary_op真的是Nonetype,这问题就很奇怪,折磨了我好久。
后来我就换了一种数据传递的方式:
一开始,我用的是placeholder + feed_dict的方式,summary_op一直都显示没有被定义
然后,我改成了直接传入数据的方式,就没有问题了(见下面代码)

说来很玄学。。。可能是tensorflow更新太快的缘故吧

代码很简单,放出正确的代码

import tensorflow as tfimport numpy as npimport pandas as pdimport oslr =0.001batch_size = 32capacity = 2000MAX_STEP = 100000#获取一批数据def get_batch(data, label):    data = tf.cast(data, tf.float32)    label = tf.cast(label, tf.float32)    input_queue = tf.train.slice_input_producer([data, label])#input_queue是大小为2的list    label = input_queue[1]    data = input_queue[0]    data_batch, label_batch = tf.train.batch([data, label],                                                batch_size= batch_size,                                                num_threads= 64,                                                 capacity = capacity)    return data_batch, label_batchdef add_layer(inputs, in_size, out_size, activation_function=None,norm = False):    with tf.name_scope('layer'):        with tf.name_scope('weights'):            Weights = tf.Variable(tf.random_normal([in_size, out_size]), name='W')        with tf.name_scope('biases'):            biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='b')        with tf.name_scope('Wx_plus_b'):            Wx_plus_b = tf.add(tf.matmul(inputs, Weights), biases)        if activation_function is None:            outputs = Wx_plus_b        else:            outputs = activation_function(Wx_plus_b, )        return outputs
data = pd.read_csv("data.csv")label = pd.read_csv("label.csv")data = np.array(data)label = np.array(label)s= data.shapeinput_size = s[1]with tf.name_scope('inputs'):    data_batch,label_batch = get_batch(data, label)# define placeholder for inputs to network#with tf.name_scope('inputs'):#    xs = tf.placeholder(tf.float32, [None, input_size])#    ys = tf.placeholder(tf.float32, [None, 1])# add hidden layerl1 = add_layer(data_batch, input_size, 2*input_size, activation_function= tf.nn.relu,norm = True)l2 = add_layer(l1,2*input_size,2*input_size, activation_function= tf.nn.relu,norm = True)l3 = add_layer(l2,2*input_size,input_size, activation_function= tf.nn.relu,norm = True)l4 = add_layer(l3,input_size,int(input_size/2), activation_function= tf.nn.relu,norm = True)l5 = add_layer(l4,int(input_size/2),int(input_size/4), activation_function= tf.nn.relu,norm = True)# add output layerprediction = add_layer(l5,int(input_size/4),1, activation_function= None)with tf.name_scope('loss'):    loss = tf.reduce_mean(tf.reduce_sum(tf.square(tf.subtract(label_batch,prediction)),                     reduction_indices=[1]))with tf.name_scope('train'):    train_op = tf.train.AdamOptimizer(lr).minimize(loss)summary_op = tf.summary.merge_all()sess = tf.Session()init = tf.global_variables_initializer()writer = tf.summary.FileWriter(logs_train_dir, sess.graph)saver = tf.train.Saver()sess.run(init)for step in np.arange(MAX_STEP):    _,train_loss = sess.run([train_op,loss])    if step % 2000 == 0:        summary_str = sess.run(summary_op)        writer.add_summary(summary_str,step)        print('loss: ', train_loss)

在上述代码中


阅读全文
0 0
原创粉丝点击