【问题标题】:NameError: name 'random_normal' is not defined TensorflowNameError:名称'random_normal'未定义Tensorflow
【发布时间】:2018-02-21 09:40:53
【问题描述】:
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data


mnist = input_data.read_data_sets("/var/data/",one_hot=True)

n_nodes_hl1=500
n_nodes_hl2=500
n_nodes_hl3=500

n_classes=10
batch_size=100

#height* width
x=tf.placeholder('float',[None,784]) #28*28
y=tf.placeholder('float')

def neural_network_model(data):
    #(input_data*weight)+biases
    hidden_1_layer={'weight':tf.Variable(tf.random_normal([784, n_nodes_hl1])), 'biases':tf.Variable(random_normal([n_nodes_hl1]))}
    hidden_2_layer={'weight':tf.Variable(tf.random_normal([n_nodes_hl1, n_nodes_hl2])), 'biases':tf.Variable(random_normal([n_nodes_hl2]))}
    hidden_3_layer={'weight':tf.Variable(tf.random_normal([n_nodes_hl2, n_nodes_hl3])), 'biases':tf.Variable(random_normal([n_nodes_hl3]))}
    output_layer={'weight':tf.Variable(tf.random_normal([n_nodes_hl3, n_classes])), 'biases':tf.Variable(random_normal([n_classes]))}

    l1=tf.add(tf.matmul(data,hidden_1_layer['weight']), hidden_1_layer[ 'biases'])
    l1=tf.nn.relu(l1)

    l2=tf.add(tf.matmul(l1,hidden_2_layer['weight']), hidden_2_layer[ 'biases'])
    l2=tf.nn.relu(l2)

    l3=tf.add(tf.matmul(l2,hidden_3_layer['weight']), hidden_3_layer[ 'biases'])
    l3=tf.nn.relu(l3)

    output=matmul(l3,output_layer['weight']), output_layer[ 'biases']

    return output   

def train_neural_network(x):
    prediction=neural_network_model(x)
    cost=tf.reduce_mean(tf.nn.softmax_cross_entropy_logits(prediction,y))

    optimizer=tf.train.AdamOptimizer().minimize(cost)

    hm_epochs=10

    with tf.Session() as sess:
        sess.run(tf.initialize_all_variables())

        for epoch in hm_epochs:
            epoch_loss=0
            for _ in range(int(mnist.train.num_examples/batch_size)):
                epoch_x, epoch_y =mnist.train.next_batch(batch_size)
                _, c =sess,run([optimizer,cost], feed_dict ={x: epoch_x, y: epoch_y})
                epoch_loss += c
            print('Epoch',epoch, 'complete out of', hm_epochs, 'loss',epoch_loss)
        correct= tf.equal(tf.argmax(prediction,1), tf.argmx(y,1))
        accuracy= tf.reduce_mean(tf.cast(correct, 'float'))
        print('Accuracy:', accuracy.eval({x:mnist.test.images, y:mnist.test.labels}))



train_neural_network(x)

这是我的代码,编译时显示此错误

Traceback(最近一次调用最后一次):文件“frist.py”,第 63 行,在 train_neural_network(x) 文件“frist.py”,第 40 行,在 train_neural_network prediction=neural_network_model(x) 文件“frist.py”,第 21 行,在 neural_network_model hidden_​​1_layer={'weight':tf.Variable(tf.random_normal([784, n_nodes_hl1])), 'biases':tf.Variable(random_normal([n_nodes_hl1]))} NameError: name 'random_normal' 没有定义

【问题讨论】:

    标签: python python-3.x python-2.7 tensorflow


    【解决方案1】:

    您在这些行中缺少random_normal 前面的tf.(在第二个tf.Variable 调用中)

    hidden_1_layer={'weight':tf.Variable(tf.random_normal([784, n_nodes_hl1])), 'biases':tf.Variable(random_normal([n_nodes_hl1]))}
    hidden_2_layer={'weight':tf.Variable(tf.random_normal([n_nodes_hl1, n_nodes_hl2])), 'biases':tf.Variable(random_normal([n_nodes_hl2]))}
    hidden_3_layer={'weight':tf.Variable(tf.random_normal([n_nodes_hl2, n_nodes_hl3])), 'biases':tf.Variable(random_normal([n_nodes_hl3]))}
    output_layer={'weight':tf.Variable(tf.random_normal([n_nodes_hl3, n_classes])), 'biases':tf.Variable(random_normal([n_classes]))}
    

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 2021-04-15
      相关资源
      最近更新 更多