深度學習 TensorFlow 輸入資料處理框架

2021-09-21 01:38:07 字數 4478 閱讀 9088

將mnist資料集中的所有訓練資料儲存到tfrecord檔案中:

import tensorflow as tf

from tensorflow.examples.tutorials.mnist import input_data

import numpy as np

#生成整數型屬性 轉換型別 將輸入的value轉換成整數型

def _int64_feature(value):

return tf.train.feature(int64_list=tf.train.int64list(value=[value]))

#生成字串型別屬性 將輸入的value轉換成字串型別

def _bytes_feature(value):

return tf.train.feature(bytes_list=tf.train.byteslist(value=[value]))

# 將資料轉化為tf.train.example格式。

def _make_example(pixels, label, image):

image_raw = image.tostring() #將影象轉換成字串表示 傳給image_raw

#將乙個樣例轉換成example protocol buffer 將所有資訊寫入這個資料結構

example = tf.train.example(features=tf.train.features(feature=))

return example

# 讀取mnist訓練資料。

mnist = input_data.read_data_sets("d:/mnist_data",dtype=tf.uint8, one_hot=true)

images = mnist.train.images #訓練的

labels = mnist.train.labels #訓練對應的正確答案

pixels = images.shape[1] #訓練影象的解析度

num_examples = mnist.train.num_examples

# 輸出包含訓練資料的tfrecord檔案。

with tf.python_io.tfrecordwriter("d:/output.tfrecords") as writer:

for index in range(num_examples):

example = _make_example(pixels, labels[index], images[index])

writer.write(example.serializetostring()) #將乙個example寫入檔案

print("tfrecord訓練檔案已儲存。")

利用轉換好的tfrecord檔案作為神經網路的輸入:

import tensorflow as tf

# match_filenames_once 獲取乙個符合正規表示式的所有檔案

files = tf.train.match_filenames_once("output.tfrecords")

#通過函式 有效的管理檔案佇列 不打亂佇列

filename_queue = tf.train.string_input_producer(files,shuffle=false)

#解析tfrecord檔案資料

# 讀取檔案

reader = tf.tfrecordreader()

_,serialized_example = reader.read(filename_queue)

#解析一行讀取的資料

features = tf.parse_single_example(

serialized_example,

features = )

# 從原始影象資料解析出畫素矩陣,並根據影象尺寸還原影象

decode_images = tf.decode_raw(features['image_raw'],tf.uint8)

# 轉換影象格式

retype_images = tf.cast(decode_images,tf.float32)

images = tf.reshape(retype_images,[784])

labels = tf.cast(features['label'],tf.int32)

pixels = tf.cast(features['pixels'],tf.int32)

# 組合訓練資料

# 將檔案以100個為一組打包

min_after_dequeue = 10000 #出隊時,佇列中元素的最少個數

batch_size = 100

capacity = min_after_dequeue + 3 * batch_size #佇列的最大容量

image_batch,label_batch = tf.train.shuffle_batch([images,labels],

batch_size = batch_size,

capacity = capacity,

min_after_dequeue=min_after_dequeue)

# 訓練模型

# 定義前向傳播

def inference(input_tensor,weights1,biases1,weights2,biases2):

layer1 = tf.nn.relu(tf.matmul(input_tensor,weights1)+biases1)

return tf.matmul(layer1,weights2)+biases2

# 函式相關模型

input_node = 784

output_node = 10

layer1_node = 500

regularaztion_rate = 0.0001

training_steps = 5000

# 初始化變數

weights1 = tf.variable(tf.truncated_normal([input_node,layer1_node],stddev=0.1))

biases1 = tf.variable(tf.constant(0.1,shape=[layer1_node]))

weights2 = tf.variable(tf.truncated_normal([layer1_node,output_node],stddev=0.1))

biases2 = tf.variable(tf.constant(0.1,shape=[output_node]))

# 前向傳播結果

y = inference(image_batch,weights1,biases1,weights2,biases2)

# 計算反向傳播

cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y,labels=label_batch)

cross_entropy_mean = tf.reduce_mean(cross_entropy) #交叉熵平均值

# 正則化損失函式

regularizer = tf.contrib.layers.l2_regularizer(regularaztion_rate)

regularaztion = regularizer(weights1) + regularizer(weights2)

# 損失函式

loss = cross_entropy_mean + regularaztion

# 優化損失函式

train_step = tf.train.gradientdescentoptimizer(0.01).minimize(loss)

# 初始化會話,並開始訓練過程

with tf.session() as sess:

sess.run((tf.global_variables_initializer(),tf.local_variables_initializer())) #區域性變數 全域性變數

coord = tf.train.coordinator() #協同啟動的執行緒

threads = tf.train.start_queue_runners(sess=sess,coord=coord) #啟動所有執行緒

#迴圈神經網咯

for i in range(training_steps):

if i % 1000 == 0:

print("after %d training steps,loss is %g"%(i,sess.run(loss)))

sess.run(train_step)

coord.request_stop()

coord.join(threads)

訓練結果:

TensorFlow 深度學習筆記

google 深度學習筆記 經常總結是個好習慣,筆記目錄奉上。歡迎star,有問題可以到issue區討論 官方教程位址 最近tensorflow團隊出了乙個model專案,和這個課程無關,但是可以參考 框架 tensorflow 谷歌出品的基於python的深度學習工具集 工具 ipython,py...

TensorFlow深度學習框架

tensorflow支援python和c 兩種程式語言,再複雜的多層神經網路模型都可以用python來實現,如果業務使用其他程式設計也不用擔心,使用跨語言的grpc或者http服務也可以訪問使用tensorflow訓練好的智慧型模型。tensorflow 是乙個採用資料流圖 data flow gr...

深度學習 初識TensorFlow

深度學習使用場景 影象理解 語音識別 自然語言處理 機器自主 無人駕駛 深度學習,如深度神經網路 卷積神經網路和遞迴神經網路已被應用計算機視覺 語音識別 自然語言處理 音訊識別與生物資訊學等領域並取得了很好的效果。深度學習在人工智慧領域的地位 深度學習框架 google brain計畫產物 應用於a...