TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。
原生接口文章
- 【Tensorflow】tf.placeholder函数
- 【TensorFlow】tf.nn.conv2d是怎样实现卷积的
- 【TensorFlow】tf.nn.max_pool实现池化操作
- 【Tensorflow】tf.nn.relu函数
- 【Tensorflow】tf.reshape 函数
- 【Tensorflow】tf.nn.dropout函数
- 【Tensorflow】tf.argmax函数
- 【Tensorflow】tf.cast 类型转换 函数
- 【Tensorflow】tf.train.AdamOptimizer函数
- 【Tensorflow】tf.Graph()函数
- 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法
- 【Tensorflow】tf.dynamic_partition 函数 分拆数组
slim接口文章
- 【Tensorflow】tensorflow.contrib.slim 包
- 【Tensorflow slim】 slim.arg_scope的用法
- 【Tensorflow slim】slim.data包
- 【Tensorflow slim】slim evaluation 函数
- 【Tensorflow slim】slim layers包
- 【Tensorflow slim】slim learning包
- 【Tensorflow slim】slim losses包
- 【Tensorflow slim】slim nets包
- 【Tensorflow slim】slim variables包
- 【Tensorflow slim】slim metrics包
kera 接口文章
tensorflow使用过程中的辅助接口或通过tensorflow实现的批量操作接口
=========================================================================
slim.data包下面有很多对数据的操作方法;在slim.__init__种有如下几种:
from tensorflow.contrib.slim.python.slim.data import data_decoder
from tensorflow.contrib.slim.python.slim.data import data_provider
from tensorflow.contrib.slim.python.slim.data import dataset
from tensorflow.contrib.slim.python.slim.data import dataset_data_provider
from tensorflow.contrib.slim.python.slim.data import parallel_reader
from tensorflow.contrib.slim.python.slim.data import prefetch_queue
from tensorflow.contrib.slim.python.slim.data import tfexample_decoder
Data Decoder
# Load the data
my_encoded_data = ...
data_decoder = slim.DataDecoder()
# 解析输入和标签:
decoded_input, decoded_labels = data_decoder.Decode(data, ['input', 'labels'])
# 只解析输入:
decoded_input = data_decoder.Decode(data, ['input'])
# Check which items a data decoder knows how to decode:
for item in data_decoder.list_items():
print(item)
Data Provider
provider = slim.DataProvider(...)
image, sentence, clazz = provider.get(['image', 'sentence', 'class'])
DataSet
dataset = slim.dataset.Dataset(
data_sources='./pascal_train_*.tfrecord',
reader=tf.TFRecordReader,
num_samples = 3, # 手动生成了三个样本集
decoder=decoder,
items_to_descriptions = {},
num_classes=21)
Data Data Provider
shuffle=Flase,主要的话,每一次取的数据是一样的
pascal_voc_data_provider = slim.DatasetDataProvider(
slim.datasets.pascal_voc.get_split('train'),
shuffle=False)
images, labels = pascal_voc_data_provider.get(['images', 'labels'])
shuffle=True,每一次取的数据会进行洗牌,取的结果和上传会不一样的
pascal_voc_data_provider = slim.DatasetDataProvider(
slim.datasets.pascal_voc.Dataset(),
num_readers=10,
shuffle=True)
images, labels = pascal_voc_data_provider.get(['images', 'labels'])
分开取元素
[images] = pascal_voc_data_provider.get(['images'])
[labels] = pascal_voc_data_provider.get(['labels'])
Parallel Reader
通过队列和可选洗牌实现并行数据读取器
common_queue = tf.RandomShuffleQueue(
capacity=256,
min_after_dequeue=128,
dtypes=[tf.string, tf.string])
p_reader = slim.ParallelReader(tf.TFRecordReader, common_queue)
common_queue = tf.FIFOQueue(
capacity=256,
dtypes=[tf.string, tf.string])
p_reader = slim.ParallelReader(readers, common_queue, num_readers=2)
Prefetch Queue
预取队列images, labels = tf.train.batch([image, label], batch_size=32, num_threads=4)
batch_queue = slim.prefetch_queue([images, labels])
images, labels = batch_queue.dequeue()
logits = Net(images)
loss = Loss(logits, labels)