tensorflow-softmax

本文通过TensorFlow实现了一个简单的softmax回归模型,用于识别MNIST数据集中的手写数字。模型使用了交叉熵作为损失函数,并通过梯度下降进行优化。经过1000次迭代训练后,模型在测试集上的准确率达到91.94%。

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

之前在softmax多分类中讲到多用交叉熵作为损失函数,这里顺便写个例子,tensorlflow练手。

# encoding:utf-8
import tensorflow as tf
import input_data

### softmax 回归

# 自动下载安装数据集
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)


# 图片    28 * 28 = 784
x=tf.placeholder('float',[None,784])    # 特征数 784
# 初始化参数
w=tf.Variable(tf.zeros([784,10]))       # 10是输出维度,0-9数字的独热编码
b=tf.Variable(tf.zeros([10]))

# 模型
y=tf.nn.softmax(tf.matmul(x,w)+b)


### 训练模型
y_=tf.placeholder('float',[None,10])     # 10维

# 损失函数  交叉熵
cross_entropy=-tf.reduce_sum(y_*tf.log(y))      # reduce_sum 计算张量的所有元素之和    所有图片的交叉熵综合

# 优化算法 梯度下降
train_step=tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)      # 0.01 学习率  最小化 损失函数

# 初始化变量
init=tf.initialize_all_variables()

# 启动图  会话
sess=tf.Session()
sess.run(init)      # 初始化变量

# 迭代,训练参数
for i in range(1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)            # 训练集
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})


# 模型评估 准确率
correct_predict = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))       # 输出布尔值,即预测与真实是否一样
accuracy = tf.reduce_mean(tf.cast(correct_predict, 'float'))        # 将布尔值转化成浮点数,然后求平均, 正确/总数
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))      # 测试集   0.9194

 

转载于:https://www.cnblogs.com/yanshw/p/10460175.html

### 配置和使用 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、付费专栏及课程。

余额充值