使用tensorflow创建一个简单的三层神经网络(2)

上一篇文章在创建输入层时使用的是一个常量去定义的  x = tf.constant([[0.7,0.9]]),然而我们在真实训练时输出层的数据时多个的,这样定义显然不行。tensorflow提供了placeholder的机制用于提供数据的输入,placeholder相当于定义了一个位置,这个位置的数据在程序运行时再指定。

import tensorflowas tf

# 定义变量

w1 = tf.Variable(tf.random_normal([2,3],stddev=1),name=”w1″)

w2 = tf.Variable(tf.random_normal([3,1],stddev=1),name=”w2″)

biases1 = tf.Variable(tf.zeros([3]),name=”b1″)   # 隐藏层的偏向bias    [ 0. 0. 0.]

biases2 = tf.Variable(tf.zeros([1]),name=”b1″)   # 输出层的偏向bias   [0.]

# 使用placeholder

x = tf.placeholder(tf.float32,shape=[None,2],name=”input”) #多个零件时shape=[None,2]

a = tf.matmul(x,w1)+biases1

y = tf.matmul(a,w2)+biases2

那么此时要怎样输入我们的数据呢?我们要做的就是在sess.run()的第二个参数feed_dict传入我们的输入值

with tf.Session()as sess:

     init_op = tf.global_variables_initializer()

     sess.run(init_op)

     print sess.run(y,feed_dict={x:[[0.7,0.9],[0.1,0.4],[0.5,0.8]]})  #表示当输入值为[[0.7,0.9],[0.1,0.4],[0.5,0.8]],打印当前向前神经网络的输出  也可以打印多个值

    #print sess.run([a,y],feed_dict={x:[[0.7,0.9]]})

完整代码:

import tensorflowas tf

# 定义变量

w1 = tf.Variable(tf.random_normal([2,3],stddev=1),name=”w1″)

w2 = tf.Variable(tf.random_normal([3,1],stddev=1),name=”w2″)

biases1 = tf.Variable(tf.zeros([3]),name=”b1″)   # 隐藏层的偏向bias    [ 0. 0. 0.]

biases2 = tf.Variable(tf.zeros([1]),name=”b1″)   # 输出层的偏向bias   [0.]

# 使用placeholder

x = tf.placeholder(tf.float32,shape=[None,2],name=”input”)

a = tf.matmul(x,w1) + biases1

y = tf.matmul(a,w2) + biases2

with tf.Session()as sess:

    init_op = tf.global_variables_initializer()

    sess.run(init_op)

    print sess.run(y,feed_dict={x:[[0.7,0.9],[0.1,0.4],[0.5,0.8]]}) 

#输出层的结果

[[ 2.15648317]
 [ 0.2483343 ]
 [ 1.50576186]]

    原文作者:MR天亮了灬
    原文地址: https://www.jianshu.com/p/240493b9d7ef
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞