Tensorflow---dropout之神经网络结构分析

本文详细介绍了如何使用TensorFlow实现带Dropout的全连接神经网络,通过实验对比展示了Dropout在防止过拟合方面的显著效果。

一、引言

经过一段时间tensorflow的学习,对全连接神经网络代码的框架有了一定的了解。通过dropout实验来解析代码结构。

二、代码释义

1、定义神经网络层

def add_layer_dropput(input, in_size, out_size,keep_prob = None,activation_function=None):
    Weights = Variable(random_normal([out_size, in_size]))
    Biases = Variable(zeros([out_size, 1]) + 0.1)
    Wx_plus_b = matmul(Weights, input) + Biases
    Wx_plus_b = nn.dropout(Wx_plus_b,keep_prob= keep_prob)
    if activation_function == None:
        output = Wx_plus_b
    else:
        output = activation_function(transpose(Wx_plus_b))
        output = transpose(output)
    return output

在其中定义一个神经网络层应有的权重Weights,偏置Biaes,输出Wx_plus_b,激活函数输出output。数据的格式是一列为一个样本,格式详见bp反向传播+3层全连接神经网络+softmax交叉熵损失+代码实现详解,相应的权重和偏置都会有所调整。至于output这里为什么会有转置,请转到Tensorflow解决训练误差大于测试误差查看。

3、定义神经网络类

class neural_network_3(object):
    def __init__(self,in_size,hidden_size,ou
### 配置和使用 Tensorflow-CPU 与 TensorFlow-DirectML-Plugin 为了配置并使用 `tensorflow-cpu` 和 `TensorFlow-DirectML-Plugin` 来进行深度学习模型训练,需遵循特定的安装流程以及环境设置。 #### 安装依赖项 确保环境中已正确安装 Python 版本,并建议创建一个新的虚拟环境来管理项目所需的包。这有助于避免不同版本之间的冲突[^3]。 ```bash python -m venv directml_env source directml_env/bin/activate # Linux or macOS directml_env\Scripts\activate # Windows ``` #### 安装 TensorFlow CPU 及 DirectML 插件 按照官方指导文档中的说明,先安装兼容版本的 `tensorflow-cpu`,再安装 `tensorflow-directml-plugin`: ```bash pip install tensorflow-cpu==2.10 pip install tensorflow-directml-plugin ``` 上述命令会下载并安装指定版本的 TensorFlow CPU 库及其对应的 DirectML 加速插件。 #### 设置环境变量 (可选) 某些情况下可能需要调整系统的环境路径以支持 DirectML 的正常工作。具体操作取决于操作系统类型和个人偏好。通常来说,默认配置已经足够满足大多数需求[^2]。 #### 编写代码示例 下面是一个简单的例子展示如何加载数据集、定义模型结构并通过 GPU 或者集成显卡加速来进行训练过程: ```python import tensorflow as tf from tensorflow.keras import layers, models # 检查是否能够检测到 DirectML 设备 physical_devices = tf.config.experimental.list_physical_devices('DML') print("Detected DML devices:", physical_devices) # 构建简单卷积神经网络模型 model = models.Sequential([ layers.Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)), layers.MaxPooling2D(pool_size=(2, 2)), layers.Flatten(), layers.Dense(64, activation='relu'), layers.Dropout(0.5), layers.Dense(10, activation='softmax') ]) # 使用 MNIST 数据集作为测试样本 (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data() x_train = x_train.reshape(-1, 28, 28, 1).astype('float32') / 255. x_test = x_test.reshape(-1, 28, 28, 1).astype('float32') / 255. # 编译模型 model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) # 开始训练 history = model.fit(x=x_train, y=y_train, epochs=5, validation_split=0.2) ``` 此脚本会在控制台输出可用的 DirectML 设备信息,并尝试通过这些设备执行计算任务。如果一切顺利,则可以观察到性能上的显著提升。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值