我的问题是关于如何从多个(或分片的)tfrecords获取批处理输入。我已经阅读了示例https://github.com/tensorflow/models/blob/master/inception/inception/image_processing.py#L410。基本的管道,把培训作为集为例,(1)首先产生一系列tfrecords(例如,train-000-of-005
,train-001-of-005
,…),从这些文件名(2),生成一个列表并将其塞进了tf.train.string_input_producer
获得队列,(3)同时生成一个tf.RandomShuffleQueue
做其他事情,(4)tf.train.batch_join
用于生成批处理输入。
我认为这很复杂,我不确定此过程的逻辑。就我而言,我有一个.npy
文件列表,我想生成分片的tfrecords(多个分开的tfrecords,而不仅仅是一个大文件)。每个.npy
文件都包含不同数量的正样本和负样本(2类)。一种基本方法是生成一个大的tfrecord文件。但是文件太大(~20Gb
)。所以我求助于tfrecords。有没有更简单的方法可以做到这一点?谢谢。
整个过程使用简化Dataset API
。这是两个部分:(1): Convert numpy array to tfrecords
和(2,3,4): read the tfrecords to generate batches
。
def npy_to_tfrecords(...):
# write records to a tfrecords file
writer = tf.python_io.TFRecordWriter(output_file)
# Loop through all the features you want to write
for ... :
let say X is of np.array([[...][...]])
let say y is of np.array[[0/1]]
# Feature contains a map of string to feature proto objects
feature = {}
feature['X'] = tf.train.Feature(float_list=tf.train.FloatList(value=X.flatten()))
feature['y'] = tf.train.Feature(int64_list=tf.train.Int64List(value=y))
# Construct the Example proto object
example = tf.train.Example(features=tf.train.Features(feature=feature))
# Serialize the example to a string
serialized = example.SerializeToString()
# write the serialized objec to the disk
writer.write(serialized)
writer.close()
# Creates a dataset that reads all of the examples from filenames.
filenames = ["file1.tfrecord", "file2.tfrecord", ..."fileN.tfrecord"]
dataset = tf.contrib.data.TFRecordDataset(filenames)
# for version 1.5 and above use tf.data.TFRecordDataset
# example proto decode
def _parse_function(example_proto):
keys_to_features = {'X':tf.FixedLenFeature((shape_of_npy_array), tf.float32),
'y': tf.FixedLenFeature((), tf.int64, default_value=0)}
parsed_features = tf.parse_single_example(example_proto, keys_to_features)
return parsed_features['X'], parsed_features['y']
# Parse the record into tensors.
dataset = dataset.map(_parse_function)
# Shuffle the dataset
dataset = dataset.shuffle(buffer_size=10000)
# Repeat the input indefinitly
dataset = dataset.repeat()
# Generate batches
dataset = dataset.batch(batch_size)
# Create a one-shot iterator
iterator = dataset.make_one_shot_iterator()
# Get batch X and y
X, y = iterator.get_next()
我的问题是如何从多个(或分片)TFR记录中获取批输入。我读过这个例子https://github.com/tensorflow/models/blob/master/inception/inception/image_processing.py#L410.以培训集为例,基本管道是:(1)首先生成一系列TF记录(例如,,,…),(2) 从这些文件名生成一个列表,并将它们输入到获取队列,(3)同时生成
问题内容: 我正在尝试将长度不定的多个数据列表输出到CSV文件。每个列表应该是输出CSV文件中的一列。有直接的做事方法吗?如果我将每个列表输出为一行,那么我将遍历每个列表并在结束时输出返回值,但是这种方法在按列工作时不起作用。 我曾想过一次逐项检查所有列表并增加一个计数器,但这也会失败,因为有些列表比另一些更长。为了解决这个问题,我将不得不在每次迭代时检查计数器是否在每个列表的末尾,这在计算方
问题内容: 我正在尝试弄清楚如何解析一些XML(对于Android应用程序),在Java中很难做到这一点似乎很荒谬。似乎需要创建一个具有各种回调(startElement,endElement等)的XML处理程序,然后您必须注意将所有这些数据更改为对象。类似于本教程。 我真正需要的只是将XML文档更改为多维数组,甚至更好的是拥有某种Hpricot处理器。有没有办法做到这一点,还是真的必须在上面的示
我正在开发一个java程序,它接受输入的分数,给出输入的总数和平均值,但是我很难计算出如何获得当前输入的最高分数“我使用了大量嵌套的else-if语句,但必须有一种简单的方法来实现这一点,而不是键入100个else-if语句这是我的代码。我在else-if语句开始的地方添加了一条注释,以确定最高级别
有没有Angular2的方法可以做到这一点,或者我只是使用老式的JavaScript?
问题内容: 来自Gson项目的此链接似乎表明,将类型化的Map序列化为JSON时,我将必须执行以下操作: 很酷,这行得通,但是似乎有很多开销( 整个Type Adapter类? )。我使用了其他JSONLib之类的JSON库,它们使您可以通过以下方式构建地图: 或者,如果我有一个自定义类,则如下所示: 该过程更加手动,但是所需的代码更少,并且没有开销来为Number创建自定义类型适配器,或者在大多