Tensorflow 基本用法(二)

本文深入介绍了TensorFlow中常用的六个函数,包括随机初始化张量、创建常数张量、二维卷积、最大池化、ReLU激活函数及Dropout层的具体用法与参数说明,并通过实例演示了这些函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍在官方文档中MNIST进阶中用到的函数

1. tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
  • shape:生成张量的形状
  • mean:正态分布的均值
  • stddev:正太分布的标准差
  • dtype:数据类型
  • seed:种子
  • name:操作的命名(可以不指定)
  • 返回值是随机截断的正太分布值填充的张量
initial = tf.truncated_normal([3,3], stddev=0.1)
sess = tf.InteractiveSession()
print(initial.eval())
sess.close()
#[[-0.1338151  -0.01149522 -0.00680522]
  [ 0.07212916 -0.1230556   0.07994577]
  [ 0.1255837  -0.1215869  -0.13001645]]
2. tf.constant(value, dtype=None, shape=None, name=’Const’)
  • value:用于填充的数值或列表
  • dtype:数据类型
  • shape:生成张量的形状
  • name:操作的命名(可以不指定)
  • 返回值一个常数张量
# Constant 1-D Tensor populated with value list.
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) => [1 2 3 4 5 6 7]

# Constant 2-D tensor populated with scalar value -1.
tensor = tf.constant(-1.0, shape=[2, 3]) => [[-1. -1. -1.]
                                             [-1. -1. -1.]]
# Constant 2-D tensor populated with value list.
tensor = tf.constant([1,2,3,4,5,6], shape=[2,3]) => [[1 2 3]
                                                     [4 5 6]]
3. tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=True, data_format=’NHWC’, dilations=[1, 1, 1, 1], name=None)
  • input:输入张量,形状是4D
  • filter:卷积核,形状是4D张量,[核高度 , 核宽度 , 输入通道数, 输出通道数]
  • strides:步长
  • padding:填充方式,只能选SAME或VALID,SAME在图像边缘进行0填充,VALID不进行填充
  • use_cudnn_on_gpu:使用gpu加速
  • data_format:输入维度格式,NHWC依次是批,高度,宽度,通道;NCHW依次是批,通道,高度,宽度
  • dilations:输入的扩张
  • name:操作的命名(可以不指定)
  • 返回值一个类型与输入相同的张量

具体操作在这篇博客介绍的非常详细 http://www.cnblogs.com/welhzh/p/6607581.html

4. tf.nn.max_pool(value, ksize, strides, padding, data_format=’NHWC’, name=None)
  • value:输入张量,形状是4D,格式由data_format
  • ksize:输入张量每个维度的窗口大小,一个4个元素的列表或元组
  • strides:步长
  • padding:填充方式,只能选SAME或VALID,SAME在图像边缘进行0填充,VALID不进行填充
  • data_format:输入维度格式,NHWC依次是批,高度,宽度,通道;NCHW依次是批,通道,高度,宽度
  • name:操作的命名(可以不指定)
  • 返回值是经过最大池化的data_format格式的张量
sess = tf.InteractiveSession()
a = tf.constant(np.arange(9),shape = [1,3,3,1])
print(a.eval())
'''
 [[[[0]
   [1]
   [2]]
  [[3]
   [4]
   [5]]
  [[6]
   [7]
   [8]]]]
'''
print(a.eval)
#<bound method Tensor.eval of <tf.Tensor 'Const_1:0' shape=(1, 3, 3, 1) dtype=int32>>
b = tf.nn.max_pool(a,ksize=[1, 2, 2, 1],strides=[1, 2, 2, 1], padding='SAME')
print(b.eval())
'''
[[[[4]
   [5]]
  [[7]
   [8]]]]
'''
print(b.eval)
#<bound method Tensor.eval of <tf.Tensor 'MaxPool:0' shape=(1, 2, 2, 1) dtype=int32>> 形状改变了
sess.close()
5. tf.nn.relu(features, name=None)
  • features:输入张量(图像特征)
  • name:操作的命名(可以不指定)
  • 返回值与输入类型相同的张量
sess = tf.InteractiveSession()
a = tf.constant([-1,-2,2,1],shape = [4])
print(a.eval())
#[-1 -2 2 1]
b = tf.nn.relu(a)
print(b.eval())
#[0 0 2 1]
sess.close()
6. tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None)
  • x:输入张量
  • keep_prob:神经元被选中概率
  • noise_shape:选中/丢弃
  • seed:种子
  • name:操作的命名(可以不指定)
  • 返回值是一个与输入相同形状的张量
keep_prob = tf.placeholder("float")
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)#必须设置keep_prob,并且keep_prob是一个占位符
### TensorFlow基本用法入门 TensorFlow是一个开源的机器学习框架,广泛应用于构建和训练各种类型的模型。以下是关于TensorFlow基本用法的一些核心概念和操作: #### 1. 安装TensorFlow 在使用TensorFlow之前,需要先安装它。可以通过pip命令来完成安装: ```bash pip install tensorflow ``` 确认安装成功后可以运行以下代码验证版本号: ```python import tensorflow as tf print(tf.__version__) ``` 此部分未涉及具体引用。 #### 2. 创建张量 (Tensors) 张量是TensorFlow中的基础数据结构,类似于NumPy数组。 ```python # 创建常量张量 tensor_a = tf.constant([[1, 2], [3, 4]], dtype=tf.int32) # 打印张量形状和内容 print(tensor_a.shape) # 输出: (2, 2)[^1] print(tensor_a.numpy()) # 转换为numpy array并打印[^2] ``` #### 3. 构建计算图 (Graphs and Sessions) 早期版本的TensorFlow依赖于显式的图定义和会话管理。虽然现代版本更倾向于即时执行模式(eager execution),但在某些场景下仍需理解这一机制。 - **创建计算图** ```python graph = tf.Graph() with graph.as_default(): a = tf.placeholder(tf.float32, shape=[None, 3]) # 占位符用于输入数据[^1] b = tf.Variable(0.5, name='b') # 可变参数初始化 ``` - **启动会话(Session)** 并运行图 ```python init_op = tf.global_variables_initializer() # 初始化变量 with tf.Session(graph=graph) as sess: sess.run(init_op) # 执行初始化操作 result = sess.run(b + 1) # 计算表达式的结果[^2] print(result) ``` 注意,在TensorFlow 2.x中,默认启用了eager execution,简化了许多复杂流程。 #### 4. 使用Keras API进行高层抽象开发 对于初学者来说,推荐利用内置的`tf.keras`模块实现神经网络的设计与训练过程。下面展示如何建立简单的全连接层模型: ```python model = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), # 输入展平层 tf.keras.layers.Dense(128, activation='relu'), # 隐藏层ReLU激活函数 tf.keras.layers.Dropout(0.2), # Dropout防止过拟合 tf.keras.layers.Dense(10, activation='softmax') # 输出层Softmax分类器 ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', # 损失函数配置 metrics=['accuracy']) # 性能评估指标设置 history = model.fit(x_train, y_train, epochs=5) # 开始训练循环 test_loss, test_acc = model.evaluate(x_test, y_test) # 测试集上的表现分析 ``` 以上介绍了TensorFlow的基础组件及其典型应用方式,涵盖了从环境搭建到实际项目实践的关键环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值