如何定义TensorFlow输入节点


Posted in Python onJanuary 23, 2020

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 运行结果

如何定义TensorFlow输入节点

三 直接定义

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输入节点

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

Python 相关文章推荐
wxpython中自定义事件的实现与使用方法分析
Jul 21 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
基于pytorch的lstm参数使用详解
Jan 14 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
Feb 28 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
Python collections.deque双边队列原理详解
Oct 05 Python
Django扫码抽奖平台的配置过程详解
Jan 14 Python
python中PyQuery库用法分享
Jan 15 Python
Python中的datetime包与time包包和模块详情
Feb 28 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 #Python
python动态文本进度条的实例代码
Jan 22 #Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 #Python
使用Python实现Wake On Lan远程开机功能
Jan 22 #Python
python定义类self用法实例解析
Jan 22 #Python
通过实例解析python描述符原理作用
Jan 22 #Python
python基于property()函数定义属性
Jan 22 #Python
You might like
浅析php原型模式
2014/11/25 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
js Dialog 实践分享
2012/10/22 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
2013/06/28 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
详解JavaScript中分解数字的三种方法
2021/01/05 Javascript
Python中实现常量(Const)功能
2015/01/28 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
《一个小村庄的故事》教学反思
2014/04/13 职场文书
批评与自我批评发言稿
2014/10/15 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
表扬信格式模板
2015/05/05 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
python not运算符的实例用法
2021/06/30 Python
Python turtle编写简单的球类小游戏
2022/03/31 Python