如何定义TensorFlow输入节点

 更新时间:2020年01月23日 17:09:53   作者:cakincqm  
今天小编就为大家分享一篇如何定义TensorFlow输入节点,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

TensorFlow中有如下几种定义输入节点的方法。

通过占位符定义:一般使用这种方式。

通过字典类型定义:一般用于输入比较多的情况。

直接定义:一般很少使用。

一 占位符定义

示例:

具体使用tf.placeholder函数,代码如下:

X = tf.placeholder("float")
Y = tf.placeholder("float")

二 字典类型定义

1 实例

通过字典类型定义输入节点

2 关键代码

# 创建模型
# 占位符
inputdict = {
  'x': tf.placeholder("float"),
  'y': tf.placeholder("float")
}

3 解释

通过字典定义的方式和第一种比较像,只不过是堆叠到一起。

4 全部代码

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()
# 创建模型
# 占位符
inputdict = {
  'x': tf.placeholder("float"),
  'y': tf.placeholder("float")
}
# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
# 前向结构
z = tf.multiply(inputdict['x'], W)+ b
#反向优化
cost =tf.reduce_mean( tf.square(inputdict['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={inputdict['x']: x, inputdict['y']: y})
    #显示训练中的详细信息
    if epoch % display_step == 0:
      loss = sess.run(cost, feed_dict={inputdict['x']: train_X, inputdict['y']:train_Y})
      print ("Epoch:", epoch+1, "cost=", loss,"W=", sess.run(W), "b=", sess.run(b))
      if not (loss == "NA" ):
        plotdata["batchsize"].append(epoch)
        plotdata["loss"].append(loss)
  print (" Finished!")
  print ("cost=", sess.run(cost, feed_dict={inputdict['x']: train_X, inputdict['y']: train_Y}), "W=", sess.run(W), "b=", sess.run(b))
  #图形显示
  plt.plot(train_X, train_Y, 'ro', label='Original data')
  plt.plot(train_X, sess.run(W) * train_X + sess.run(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={inputdict['x']: 0.2}))

5 运行结果

三 直接定义

1 实例

直接定义输入结果

2 解释

直接定义:将定义好的Python变量直接放到OP节点中参与输入的运算,将模拟数据的变量直接放到模型中训练。

3 代码

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#生成模拟数据
train_X =np.float32( 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()
# 创建模型
# 模型参数
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
# 前向结构
z = tf.multiply(W, train_X)+ b
#反向优化
cost =tf.reduce_mean( tf.square(train_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)
    #显示训练中的详细信息
    if epoch % display_step == 0:
      loss = sess.run(cost)
      print ("Epoch:", epoch+1, "cost=", loss,"W=", sess.run(W), "b=", sess.run(b))
  print (" Finished!")
  print ("cost=", sess.run(cost), "W=", sess.run(W), "b=", sess.run(b))

4 运行结果

以上这篇如何定义TensorFlow输入节点就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python简单鼠标自动点击某区域的实例

    python简单鼠标自动点击某区域的实例

    今天小编就为大家分享一篇python简单鼠标自动点击某区域的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 多个python文件调用logging模块报错误

    多个python文件调用logging模块报错误

    这篇文章主要介绍了多个python文件调用logging模块产生错误,需要的朋友可以参考下
    2020-02-02
  • VSCode设置Python语言自动格式化的详细方案

    VSCode设置Python语言自动格式化的详细方案

    VSCode Python自动格式化是指使用VSCode编辑器中的Python插件,可以自动对Python代码进行格式化,使其符合PEP 8规范,这篇文章主要给大家介绍了关于VSCode设置Python语言自动格式化的详细方案,需要的朋友可以参考下
    2023-07-07
  • Python自动化处理Excel数据的操作过程

    Python自动化处理Excel数据的操作过程

    在实际数据处理和分析过程中,经常会遇到需要从大量数据中提取出特定日期范围内的信息的需求,本文将介绍如何使用Python的pandas库来处理Excel文件,感兴趣的朋友跟随小编一起看看吧
    2023-11-11
  • 详解设计模式中的工厂方法模式在Python程序中的运用

    详解设计模式中的工厂方法模式在Python程序中的运用

    这篇文章主要介绍了设计模式中的工厂方法模式在Python程序中的运用,工厂方法模式主张程序在设计时要可以根据不同的条件生成各种类的实例,需要的朋友可以参考下
    2016-03-03
  • 一文带你重温一下Python的对象模型

    一文带你重温一下Python的对象模型

    在面向对象的理论中,有两个核心的概念:类和实例。在 Python 里面,类和实例都是对象,也就是所谓的类对象和实例对象。本文主要来大家重温一下Python对象模型的相关知识,感兴趣的可以了解一下
    2023-04-04
  • Python开发一个功能齐全的IM聊天工具(附实例代码)

    Python开发一个功能齐全的IM聊天工具(附实例代码)

    即时通讯(IM)工具现在已经很常见了,从简单的文本聊天到文件传输、音视频通话,IM 工具功能丰富,那么,本文使用Python开发一个基础的IM聊天工具,包括:客户端和服务端架构、实时消息发送与接收、多用户聊天支持、一个简单的图形用户界面(GUI)
    2024-12-12
  • python Pandas如何对数据集随机抽样

    python Pandas如何对数据集随机抽样

    这篇文章主要介绍了python Pandas如何对数据集随机抽样,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python3 cookbook解压可迭代对象赋值给多个变量的问题及解决方案

    python3 cookbook解压可迭代对象赋值给多个变量的问题及解决方案

    这篇文章主要介绍了python3 cookbook-解压可迭代对象赋值给多个变量,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • 利用Python实现某OA系统的自动定位功能

    利用Python实现某OA系统的自动定位功能

    这篇文章主要介绍了利用Python实现某OA系统的自动定位功能,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论