1. import tempfile
  2. import tensorflow as tf
  3.  
  4. # 1. 列举输入文件。
  5. # 输入数据生成的训练和测试数据。
  6. train_files = tf.train.match_filenames_once("F:\\output.tfrecords")
  7. test_files = tf.train.match_filenames_once("F:\\output_test.tfrecords")
  8. # 定义解析TFRecord文件的parser方法。
  9. # 解析一个TFRecord的方法。
  10. def parser(record):
  11. features = tf.parse_single_example(record,features={'image_raw':tf.FixedLenFeature([],tf.string),'pixels':tf.FixedLenFeature([],tf.int64),'label':tf.FixedLenFeature([],tf.int64)})
  12. decoded_images = tf.decode_raw(features['image_raw'],tf.uint8)
  13. retyped_images = tf.cast(decoded_images, tf.float32)
  14. images = tf.reshape(retyped_images, [784])
  15. labels = tf.cast(features['label'],tf.int32)
  16. #pixels = tf.cast(features['pixels'],tf.int32)
  17. return images, labels
  1. # 定义训练数据集。
  2. image_size = 299 # 定义神经网络输入层图片的大小。
  3. batch_size = 100 # 定义组合数据batch的大小。
  4. shuffle_buffer = 10000 # 定义随机打乱数据时buffer的大小。
  5.  
  6. # 定义读取训练数据的数据集。
  7. dataset = tf.data.TFRecordDataset(train_files)
  8. dataset = dataset.map(parser)
  9.  
  10. # 对数据进行shuffle和batching操作。这里省略了对图像做随机调整的预处理步骤。
  11. dataset = dataset.shuffle(shuffle_buffer).batch(batch_size)
  12.  
  13. # 重复NUM_EPOCHS个epoch。
  14. NUM_EPOCHS = 10
  15. dataset = dataset.repeat(NUM_EPOCHS)
  16.  
  17. # 定义数据集迭代器。
  18. iterator = dataset.make_initializable_iterator()
  19. image_batch, label_batch = iterator.get_next()
  1. # 定义神经网络结构和优化过程。
  2. # 定义神经网络的结构以及优化过程。这里与7.3.4小节相同。
  3. def inference(input_tensor, weights1, biases1, weights2, biases2):
  4. layer1 = tf.nn.relu(tf.matmul(input_tensor, weights1) + biases1)
  5. return tf.matmul(layer1, weights2) + biases2
  6.  
  7. INPUT_NODE = 784
  8. OUTPUT_NODE = 10
  9. LAYER1_NODE = 500
  10. REGULARAZTION_RATE = 0.0001
  11. TRAINING_STEPS = 5000
  12.  
  13. weights1 = tf.Variable(tf.truncated_normal([INPUT_NODE, LAYER1_NODE], stddev=0.1))
  14. biases1 = tf.Variable(tf.constant(0.1, shape=[LAYER1_NODE]))
  15.  
  16. weights2 = tf.Variable(tf.truncated_normal([LAYER1_NODE, OUTPUT_NODE], stddev=0.1))
  17. biases2 = tf.Variable(tf.constant(0.1, shape=[OUTPUT_NODE]))
  18.  
  19. y = inference(image_batch, weights1, biases1, weights2, biases2)
  20.  
  21. # 计算交叉熵及其平均值
  22. cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=label_batch)
  23. cross_entropy_mean = tf.reduce_mean(cross_entropy)
  24.  
  25. # 损失函数的计算
  26. regularizer = tf.contrib.layers.l2_regularizer(REGULARAZTION_RATE)
  27. regularaztion = regularizer(weights1) + regularizer(weights2)
  28. loss = cross_entropy_mean + regularaztion
  29.  
  30. # 优化损失函数
  31. train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)
  1. # 定义测试用数据集。
  2. # 定义测试用的Dataset。
  3. test_dataset = tf.data.TFRecordDataset(test_files)
  4. test_dataset = test_dataset.map(parser)
  5. test_dataset = test_dataset.batch(batch_size)
  6.  
  7. # 定义测试数据上的迭代器。
  8. test_iterator = test_dataset.make_initializable_iterator()
  9. test_image_batch, test_label_batch = test_iterator.get_next()
  10.  
  11. # 定义测试数据上的预测结果。
  12. test_logit = inference(test_image_batch, weights1, biases1, weights2, biases2)
  13. predictions = tf.argmax(test_logit, axis=-1, output_type=tf.int32)
  14.  
  15. # 声明会话并运行神经网络的优化过程。
  16. with tf.Session() as sess:
  17. # 初始化变量。
  18. sess.run((tf.global_variables_initializer(),tf.local_variables_initializer()))
  19.  
  20. # 初始化训练数据的迭代器。
  21. sess.run(iterator.initializer)
  22.  
  23. # 循环进行训练,直到数据集完成输入、抛出OutOfRangeError错误。
  24. while True:
  25. try:
  26. sess.run(train_step)
  27. except tf.errors.OutOfRangeError:
  28. break
  29.  
  30. test_results = []
  31. test_labels = []
  32. # 初始化测试数据的迭代器。
  33. sess.run(test_iterator.initializer)
  34. # 获取预测结果。
  35. while True:
  36. try:
  37. pred, label = sess.run([predictions, test_label_batch])
  38. test_results.extend(pred)
  39. test_labels.extend(label)
  40. except tf.errors.OutOfRangeError:
  41. break
  42.  
  43. # 计算准确率
  44. correct = [float(y == y_) for (y, y_) in zip (test_results, test_labels)]
  45. accuracy = sum(correct) / len(correct)
  46. print("Test accuracy is:", accuracy)

吴裕雄--天生自然 pythonTensorFlow图形数据处理:数据集高层操作的更多相关文章

  1. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:队列操作

    import tensorflow as tf #1. 创建队列,并操作里面的元素. q = tf.FIFOQueue(2, "int32") init = q.enqueue_m ...

  2. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:windows操作系统安装指定版本的tensorflow

    pip install tensorflow==1.14.0

  3. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:数据集基本使用方法

    import tempfile import tensorflow as tf # 1. 从数组创建数据集. input_data = [1, 2, 3, 5, 8] dataset = tf.dat ...

  4. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:循环神经网络预测正弦函数

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 定义RNN的参数. HIDDEN_SIZE = ...

  5. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:输入数据处理框架

    import tensorflow as tf # 1. 创建文件列表,通过文件列表创建输入文件队列 files = tf.train.match_filenames_once("F:\\o ...

  6. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:输入文件队列

    import tensorflow as tf # 1. 生成文件存储样例数据. def _int64_feature(value): return tf.train.Feature(int64_li ...

  7. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:多线程队列操作

    import tensorflow as tf #1. 定义队列及其操作. queue = tf.FIFOQueue(100,"float") enqueue_op = queue ...

  8. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:图像预处理完整样例

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt #随机调整图片的色彩,定义两种顺序. def di ...

  9. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:TensorFlow图像处理函数

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt #读取图片 image_raw_data = tf ...

随机推荐

  1. TX2_安装view_team

    TX2上的帐号是:1317149963,dc200820305233 参考网站:https://blog.csdn.net/qq_33512213/article/details/90050792 安 ...

  2. 使用模拟器调试react-native步骤(安卓机)

    1.在cmd界面搭建react-native 环境: 可参考https://reactnative.cn/docs/0.51/getting-started.html#content (1)npm i ...

  3. SFINAE 与 type_traits

    SFINAE 与 type_traits SFINAE 替换失败不是错误 (Substitution Failure Is Not An Error),此特性被用于模板元编程. 在函数模板的重载决议中 ...

  4. LIS是什么?

    在之前的随笔中,大概介绍了医疗系统有哪些,是干什么的,是怎么配合医院业务的.现在就开始主要的说一说我的主要工作业务 — LIS了. 前面说到过LIS(LIMS),名称是实验室信息管理系统,大概可以分解 ...

  5. kettle 数据库连接失败

    kettle 数据库连接失败 测试连接提示缺少驱动. 提示错误信息:Driver class 'oracle.jdbc.driver.OracleDriver' could not be found, ...

  6. 2020/2/12 PHP编程学习

    感冒终于差不多好了.. 学了一天的tp框架商城开发,到此,一个小商城算是开发完了,写一个简单小总结吧233 首先说的编程方面,其实并没有质的提升orz,怎么可能几天就有大突破233 不过收获还是有的, ...

  7. 【Linux】Linux中的网络命令

    dig命令:是常用的域名查询工具,可以用来测试域名系统工作是否正常. 语法: dig(选项)(参数) [root@localhost tmp]# dig http://oa.kingnet.com ; ...

  8. Linux基础应用

    Linux刚面世时并没有图形界面,因此所有的操作全靠命令完成,如磁盘操作.文件读取.目录操作.进程管理.文件权限等都要通过命令完成.且在职场中,大量的服务器维护都是通过远程命令来完成. 常用的7个命令 ...

  9. (day 1)创建项目--3【创建应用】

    创建步骤 1.打开命令行,进入项目中manage.py的同级目录 2.在命令行输入 python manage.py startapp blog 3.添加应用名到settings.py的INSTALL ...

  10. 第一个eclipse maven项目!我超全!

    前言:以前一直用idea做东西,今天突然想试一下,没想到配置起来是真的麻烦!!!!会出现各种各样的问题,太晚了,本文只做出几处非常严重的问题,如有疑问,请私信,留言 准备:本文     JDK 1.8 ...