如何定义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 相关文章推荐
centos系统升级python 2.7.3
Jul 03 Python
在Python的Django框架中生成CSV文件的方法
Jul 22 Python
一波神奇的Python语句、函数与方法的使用技巧总结
Dec 08 Python
在python中利用opencv简单做图片比对的方法
Jan 24 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
Django高级编程之自定义Field实现多语言
Jul 02 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
最小二乘法及其python实现详解
Feb 24 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
Keras 中Leaky ReLU等高级激活函数的用法
Jul 05 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 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
基于mysql的bbs设计(四)
2006/10/09 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
Jquery 数组操作大全个人总结
2013/11/13 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
Python Sleep休眠函数使用简单实例
2015/02/02 Python
Django接受前端数据的几种方法总结
2016/11/04 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
Python中协程用法代码详解
2018/02/10 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
django-初始配置(纯手写)详解
2019/07/30 Python
Django之路由层的实现
2019/09/09 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
Python流程控制常用工具详解
2020/02/24 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
年度考核自我评价
2014/01/25 职场文书
教师专业自荐信
2014/05/31 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python