C. *_*ang 12 python tensorflow
我是tensorflow的新手,我从官方的MNIST示例代码开始学习tensorflow的逻辑.但是,我感觉不太好的一件事是,MNIST示例将原始数据集提供为一些压缩文件,其格式对于初学者来说并不清楚.这种情况也适用于Cifar10,它将数据集作为二进制文件提供.我认为在实际的深度学习任务中,我们的数据集可能是很多图像文件,例如*.jpg或*.png在目录中,我们还有一个文本文件记录每个文件的标签(如ImageNet数据集).我以MNIST为例.
MNIST包含50k大小的训练图像28 x 28.现在让我们假设这些图像是jpg格式,并存储在目录中./dataset/.在./dataset/,我们有一个文本文件label.txt存储每个图像的标签:
/path/to/dataset/
image00001.jpg
image00002.jpg
... ... ... ...
image50000.jpg
label.txt
Run Code Online (Sandbox Code Playgroud)
这label.txt是这样的:
#label.txt:
image00001.jpg 1
image00002.jpg 0
image00003.jpg 4
image00004.jpg 9
... ... ... ...
image50000.jpg 3
Run Code Online (Sandbox Code Playgroud)
现在我想使用Tensorflow来训练具有这些数据集的单层模型.任何人都可以帮助提供一个简单的代码片段吗?
基本上有两件事你需要。第一个是普通的python代码,如下所示:
import numpy as np
from scipy import misc # feel free to use another image loader
def create_batches(batch_size):
images = []
for img in list_of_images:
images.append(misc.imread(img))
images = np.asarray(images)
#do something similar for the labels
while (True):
for i in range(0,total,batch_size):
yield(images[i:i+batch_size],labels[i:i+batch_size])
Run Code Online (Sandbox Code Playgroud)
现在是张量流部分
imgs = tf.placeholder(tf.float32,shape=[None,height,width,colors])
lbls = tf.placeholder(tf.int32, shape=[None,label_dimension])
with tf.Session() as sess:
#define rest of graph here
# convolutions or linear layers and cost function etc.
batch_generator = create_batches(batch_size)
for i in range(number_of_epochs):
images, labels = batch_generator.next()
loss_value = sess.run([loss], feed_dict={imgs:images, lbls:labels})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16116 次 |
| 最近记录: |