TensorFlow之feed提交数据

1. 如果构建了一个包含placeholder操作的计算图,当在session中调用run方法时,placeholder占用的变量bi必须过feed_dict参数传递进去,否则报错。

import tensorflow as tf

a = tf.placeholder(tf.float32, name='a')
b = tf.placeholder(tf.float32, name='b')
c = tf.multiply(a, b, name='c')

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    #通过feed_dict的参数传值,按字典格式
    result = sess.run(c, feed_dict={a:8.0, b:3.5})
    
    print(result)

 注:如果只用placeholder进行变量占位而不用真正的变量时,可以不用进行变量初始化。

2. 多个操作可以通过一次feed完成执行。

import tensorflow as tf

a = tf.placeholder(tf.float32, name='a')
b = tf.placeholder(tf.float32, name='b')
c = tf.multiply(a, b, name='c')
d = tf.subtract(a, b, name='d')

init = tf.global_variables_initalizer()

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

    #[c, d] 把c和d组合成一个列表,返回的result也是一个列表
    result = sess.run([c, d], feed_dict={a:[8.0, 2.0, 3.5], b:[1.5, 2.0, 4.]})

    print(result)
    #取结果中的第一个
    print(result[0])

3. 一次返回多个值分别赋值给多个变量

import tensorflow as tf

a = tf.placeholder(tf.float32, name='a')
b = tf.placeholder(tf.float32, name='b')
c = tf.multiply(a, b, name='c')
d = tf.subtract(a, b, name='d')

init = tf.global_variables_initalizer()

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

    #[c, d] 把c和d组合成一个列表
    #返回的两个值分别赋值给两个变量
    rc,rd = sess.run([c, d], feed_dict={a:[8.0, 2.0, 3.5], b:[1.5, 2.0, 4.]})

    print("value of c=",rc ,"valut of d=",rd)

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在神经网络中,数据归一化是非常重要的一步,可以提高训练效率,减少训练时间和提高模型的精度。下面是在tensorflow1.8中实现数据归一化的方法: 1. 使用tf.nn.batch_normalization函数进行归一化 batch normalization可以在网络层与网络层之间进行归一化,通常是在卷积层或全连接层后面进行归一化。使用batch normalization需要定义一些参数,例如均值和方差,可以使用tf.nn.moments函数计算。 示例代码: ```python import tensorflow as tf # 输入数据 x = tf.placeholder(tf.float32, [None, 784]) # 定义网络结构 W1 = tf.Variable(tf.truncated_normal([784, 256], stddev=0.1)) b1 = tf.Variable(tf.zeros([256])) L1 = tf.nn.relu(tf.matmul(x, W1) + b1) # 归一化 mean, variance = tf.nn.moments(L1, [0]) L1 = tf.nn.batch_normalization(L1, mean, variance, None, None, 1e-6) # 定义输出层 W2 = tf.Variable(tf.truncated_normal([256, 10], stddev=0.1)) b2 = tf.Variable(tf.zeros([10])) y = tf.matmul(L1, W2) + b2 # 定义损失函数 y_ = tf.placeholder(tf.float32, [None, 10]) cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=y, labels=y_)) # 定义优化器 train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy) # 训练模型 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) ``` 2. 使用tf.layers.batch_normalization函数进行归一化 在tensorflow1.8中,可以使用tf.layers.batch_normalization函数进行归一化,这个函数比较方便,只需要设置一些参数即可。 示例代码: ```python import tensorflow as tf # 输入数据 x = tf.placeholder(tf.float32, [None, 784]) # 定义网络结构 W1 = tf.Variable(tf.truncated_normal([784, 256], stddev=0.1)) b1 = tf.Variable(tf.zeros([256])) L1 = tf.nn.relu(tf.matmul(x, W1) + b1) # 归一化 L1 = tf.layers.batch_normalization(L1, training=True) # 定义输出层 W2 = tf.Variable(tf.truncated_normal([256, 10], stddev=0.1)) b2 = tf.Variable(tf.zeros([10])) y = tf.matmul(L1, W2) + b2 # 定义损失函数 y_ = tf.placeholder(tf.float32, [None, 10]) cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=y, labels=y_)) # 定义优化器 train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entropy) # 训练模型 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) ``` 以上是在tensorflow1.8中实现神经网络数据归一化的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值