TensorFlow中placeholder与feed_dict的使用详解

青禾
青禾
发布时间:2026-10-13| 6人浏览过
原创

本文介绍TensorFlow中占位符placeholder的作用及feed_dict的数据馈送机制。通过解析参数定义、数据类型、形状设置及名称规范,结合字符串、数值及矩阵运算实例,展示如何高效构建计算图并避免节点冗余,适用于神经网络训练场景。

TensorFlow提供了占位符(placeholder)机制。占位符在定义时不分配具体数值,仅预留所需的内存空间。在实际运行会话时,可以通过feed_dict向占位符注入具体数据。

feed_dict是一个字典结构,用于在会话执行期间为每个占位符指定具体的输入值。

在训练神经网络时,通常需要分批提供训练样本。若每次迭代的数据都通过常量表示,TensorFlow会在计算图中为每个常量添加一个节点,导致计算图极其庞大,甚至包含数百万个节点。使用占位符可解决此问题,无论迭代次数多少,计算图中仅保留占位符节点,从而优化内存和计算效率。

placeholder函数的定义如下:

tf.placeholder(dtype, shape=None, name=None)

参数说明:

dtype:指定数据类型,常用的包括tf.int32、tf.float32、tf.float64、tf.string等。 shape:定义数据形状,默认为None,表示一维数据。也可指定多维形状,例如[2, 3]表示2行3列。若设为[None, 3],则表示列数固定为3,行数可变。 name:可选的名称标识。

该函数返回Tensor类型对象。

示例1:

import tensorflow as tf

x = tf.placeholder(tf.string)

with tf.Session() as sess:
  output = sess.run(x, feed_dict={x: 'Hello World'})
  print(output)

运行结果:Hello World

示例2:

import tensorflow as tf

x = tf.placeholder(tf.string)
y = tf.placeholder(tf.int32)
z = tf.placeholder(tf.float32)

with tf.Session() as sess:
  output = sess.run(x, feed_dict = {x :'Hello World', y:123, z:45.67})
  print(output)
  output = sess.run(y, feed_dict = {x :'Hello World', y:123, z:45.67})
  print(output)
  output = sess.run(z, feed_dict = {x :'Hello World', y:123, z:45.67})
print(output)

运行结果:

Hello Word 123 45.66999816894531

示例3:

import tensorflow as tf
import numpy as np

x = tf.placeholder(tf.float32, shape=(3, 3)) 
y = tf.matmul(x, x) 
 
with tf.Session() as sess:  
  rand_array = np.random.rand(3, 3)
print(sess.run(y, feed_dict = {x: rand_array}))

运行结果:

[[0.62475741 0.40487182 0.5968855 ] [0.17491265 0.08546661 0.23616122] [0.53931886 0.24997233 0.56168258]]

以上内容涵盖了TensorFlow中placeholder与feed_dict的基本用法,希望能为读者提供有益参考。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。