TensorFlow定义"学习参数"的变量

原创 2018年04月15日 12:12:02
学习参数的定义与输入的定义很像,分为直接定义和字典定义两部分。
这两种都是常见的使用方式,只不过在深层神经网络里由于参数过多,普遍使用第二种情况。
一 直接定义
1 说明
通过tf.Variable可以对参数直接定义。
2 示例
# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
二 字典定义
1 说明
通过字典的方式定义和直接定义比较相似,只不过是堆叠到了一起。
2 关键代码
# 模型参数
paradict = {
    'w': tf.Variable(tf.random_normal([1])),
    'b': tf.Variable(tf.zeros([1]))
}
# 前向结构
z = tf.multiply(X, paradict['w'])+ paradict['b']
3 全部代码
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
plotdata = { "batchsize":[], "loss":[] }
def moving_average(a, w=10):
    if len(a) < w:
        return a[:]    
    return [val if idx < w else sum(a[(idx-w):idx])/w for idx, val in enumerate(a)]
#生成模拟数据
train_X = np.linspace(-1, 1, 100)
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3 # y=2x,但是加入了噪声
#图形显示
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.legend()
plt.show()
# 创建模型
# 占位符
X = tf.placeholder("float")
Y = tf.placeholder("float")
# 模型参数
paradict = {
    'w': tf.Variable(tf.random_normal([1])),
    'b': tf.Variable(tf.zeros([1]))
}
# 前向结构
z = tf.multiply(X, paradict['w'])+ paradict['b']
#反向优化
cost =tf.reduce_mean( tf.square(Y - z))
learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) #Gradient descent
# 初始化变量
init = tf.global_variables_initializer()
#参数设置
training_epochs = 20
display_step = 2
# 启动session
with tf.Session() as sess:
    sess.run(init)
    # Fit all training data
    for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X: x, Y: y})
        #显示训练中的详细信息
        if epoch % display_step == 0:
            loss = sess.run(cost, feed_dict={X: train_X, Y:train_Y})
            print ("Epoch:", epoch+1, "cost=", loss,"W=", sess.run(paradict['w']), "b=", sess.run(paradict['b']))
            if not (loss == "NA" ):
                plotdata["batchsize"].append(epoch)
                plotdata["loss"].append(loss)
    print (" Finished!")
    print ("cost=", sess.run(cost, feed_dict={X: train_X, Y: train_Y}), "W=", sess.run(paradict['w']), "b=", sess.run(paradict['b']))
    #图形显示
    plt.plot(train_X, train_Y, 'ro', label='Original data')
    plt.plot(train_X, sess.run(paradict['w']) * train_X + sess.run(paradict['b']), label='Fitted line')
    plt.legend()
    plt.show()
    
    plotdata["avgloss"] = moving_average(plotdata["loss"])
    plt.figure(1)
    plt.subplot(211)
    plt.plot(plotdata["batchsize"], plotdata["avgloss"], 'b--')
    plt.xlabel('Minibatch number')
    plt.ylabel('Loss')
    plt.title('Minibatch run vs. Training loss')
     
    plt.show()
    print ("x=0.2,z=", sess.run(z, feed_dict={X: 0.2}))
4 运行结果

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/79948098

Tensorflow变量表示神经网络参数

上一部分我们讲到神经网络结构中每个神经元都有参数,那么这些神经网络参数该如何在Tensorflow中呈现呢?通常我们知道用变量可表示相应的参数,那么Tensorflow中变量(tf.Variable)...
  • zhonghua18517
  • zhonghua18517
  • 2017-06-06 20:37:38
  • 739

TensorFlow变量详细介绍

TensorFlow中变量的作用主要是用来保存和更新神经网络中的参数,TensorFlow提供了tf.Variable函数来创建和初始化变量。TensorFlow提供了许多的随机生成函数和常数生成函数...
  • sinat_29957455
  • sinat_29957455
  • 2017-10-22 20:29:15
  • 247

TensorFlow 基本变量定义,基本操作,矩阵基本操作

使用 TensorFlow 进行基本操作的实例,这个实例主要是使用 TensorFlow 进行了加法运算。 包括使用 constant 常量进行加法运算和使用 placeholder 进行变量加法...
  • fendouaini
  • fendouaini
  • 2017-07-19 19:49:26
  • 1206

tensorflow初学,变量学习(代码)

  • 2017年11月20日 22:12
  • 353B
  • 下载

TensorFlow入门 - 变量(Variables)

训练模型时,需要使用变量(Variables)保存和更新参数。Variables是包含张量(tensor)的内存缓冲。变量必须要先被初始化(initialize),而且可以在训练时和训练后保存(sav...
  • muyiyushan
  • muyiyushan
  • 2017-03-23 12:19:43
  • 7573

tensorflow 加载部分变量

tensorflow模型保存为saver = tf.train.Saver()函数,saver.save()保存模型,代码如下: import tensorflow as tf v1= tf.Va...
  • u011961856
  • u011961856
  • 2017-08-07 16:01:44
  • 2381

tensorflow学习:定义变量

tensorflow定义变量,并对变量累加 import tensorflow as tf #给变量赋值为10,并给它起个名字:counter,但貌似没啥用,至少现在还不知道有什么用 stat =...
  • qoopqpqp
  • qoopqpqp
  • 2017-07-13 19:41:15
  • 451

tensorflow: 如何定义常量tensor与变量tensor

Refence:  《Tensorflow machine learning cookbook》 : Declaring Tensors Packt.TensorFlow.Machine.L...
  • vagrantabc2017
  • vagrantabc2017
  • 2017-09-22 13:57:20
  • 795

tensorflow中对于模型的参数都必须声明为变量

1、tensorflow中所有的定义都只是声明,只有在session中run的时候,才会被执行。 谨记:对于模型中所有的参数都必须要使用variable来定义。可以使用tf.truncated_no...
  • lujiandong1
  • lujiandong1
  • 2017-06-30 14:53:43
  • 560

Tensorflow学习笔记——张量、图、常量、变量(一)

1 张量和图 TensorFlow是一种采用数据流图(data flow graphs),用于数值计算的开源软件库。其中 Tensor 代表传递的数据为张量(多维数组),Flow 代表使用计算图进行...
  • m0_37324740
  • m0_37324740
  • 2017-09-02 20:36:32
  • 1474
收藏助手
不良信息举报
您举报文章:TensorFlow定义"学习参数"的变量
举报原因:
原因补充:

(最多只允许输入30个字)