Tensorflow复习笔记1:基础的softmax模型

最近在复习tensorflow的基础部分,做些笔记,就当备忘和写写教程啦。
与其他教程不同的是:
1. 所有程序能保证在tensorflow-gpu 1.8.0上测试通过。可以避免一些老教程低版本的坑吧。
2. 很多文章就是光BB,看的也挺爽,就是看完也没留下啥。我会在最后尽量给上完整的代码。


TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段。
在构建阶段, op 的执行步骤 被描述成一个图。
在执行阶段, 使用会话(Session)执行图中的 op。

实验依然用的mnist数据集。后面会用到更新的fashion-mnist数据集。
使用简单的多分类模型:softmax模型,来解决mnist分类的问题。
代码有参考官网的例子,并加入了注释,进行了整理:

import tensorflow as tf

# 构建模型阶段
# 载入数据
import tensorflow.examples.tutorials.mnist.input_data as input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

# 输入数据:x
x = tf.placeholder(tf.float32, [None, 784])
# 输入数据:y
y_ = tf.placeholder("float", [None,10])

# 权重参数
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))

# 定义模型。得到预测的y
y = tf.nn.softmax(tf.matmul(x,W) + b)


# 定义损失函数:交叉熵
cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
# 定义优化器和训练器
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)

# 定义准确率的计算方式
# 取预测值和真实值 概率最大的标签
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

# 执行会话阶段
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)

# i 表示 iteration
for i in range(10000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

  if i%1000==0 :
    print("%d iteration, accuarcy:%.4f " % (i, sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})) )

跑到最后,测试集的acc应该能拿到91%左右。
如果有不很清楚的API,建议都查查清楚。以上是最基础的代码啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础
好的,以下是一个使用 TensorFlow 实现自定义层的示例,包括对MNIST数据集进行图像分类的完整代码: ```python import tensorflow as tf from tensorflow import keras from tensorflow.keras.layers import Layer # 自定义层 class CustomLayer(Layer): def __init__(self, output_dim, **kwargs): self.output_dim = output_dim super(CustomLayer, self).__init__(**kwargs) def build(self, input_shape): self.kernel = self.add_weight(name='kernel', shape=(input_shape[1], self.output_dim), initializer='uniform', trainable=True) super(CustomLayer, self).build(input_shape) def call(self, inputs): return tf.matmul(inputs, self.kernel) def compute_output_shape(self, input_shape): return (input_shape[0], self.output_dim) # 加载数据集 mnist = keras.datasets.mnist (train_images, train_labels), (test_images, test_labels) = mnist.load_data() # 数据预处理 train_images = train_images / 255.0 test_images = test_images / 255.0 # 构建模型 model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), CustomLayer(128), keras.layers.Dense(10, activation=tf.nn.softmax) ]) # 编译模型 model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(train_images, train_labels, epochs=5) # 评估模型 test_loss, test_acc = model.evaluate(test_images, test_labels) print('Test accuracy:', test_acc) ``` 在上面的代码中,我们定义了一个名为 `CustomLayer` 的自定义层,它是 `Layer` 类的子类。这个自定义层接受一个参数 `output_dim`,表示输出维度,然后定义了一个 `build()` 方法和一个 `call()` 方法来实现层的功能。`build()` 方法用于初始化层的权重,在这里我们使用了一个随机均匀分布来初始化权重。`call()` 方法用于实现前向传播,这里我们使用了矩阵乘法来计算输出。 接下来,我们加载了 MNIST 数据集,对数据进行预处理,并构建了一个包含自定义层的模型。我们使用了 `compile()` 方法来编译模型,并使用 `fit()` 方法来训练模型。最后,我们使用 `evaluate()` 方法来评估模型的性能,输出测试集的准确率。 希望这个示例能够帮助你理解如何在 TensorFlow 中实现自定义层,并构建图像分类模型

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值