Python Tensorflow估计器:缓存瓶颈
在学习tensorflow图像分类教程时,首先会缓存每个图像的瓶颈: 我已经使用tensorflow的Python Tensorflow估计器:缓存瓶颈,python,tensorflow,machine-learning,classification,Python,Tensorflow,Machine Learning,Classification,在学习tensorflow图像分类教程时,首先会缓存每个图像的瓶颈: 我已经使用tensorflow的估计器重写了培训。这确实简化了所有代码。但是我想在这里缓存瓶颈特性 这是我的型号fn。我想缓存密集层的结果,这样我就可以对实际训练进行更改,而不必每次都计算瓶颈 我怎样才能做到这一点 def型号(功能、标签、模式、参数): is_training=mode==tf.estimator.ModeKeys.TRAIN num\u classes=len(参数['label\u vocab']) 模
估计器
重写了培训。这确实简化了所有代码。但是我想在这里缓存瓶颈特性
这是我的型号fn
。我想缓存密集
层的结果,这样我就可以对实际训练进行更改,而不必每次都计算瓶颈
我怎样才能做到这一点
def型号(功能、标签、模式、参数):
is_training=mode==tf.estimator.ModeKeys.TRAIN
num\u classes=len(参数['label\u vocab'])
模块=集线器模块(参数['module_spec'],可培训=is_training,参数['train_module']))
瓶颈张量=模块(特征['image'])
使用tf.name\u范围(“最终再培训操作”):
logits=tf.layers.dense(瓶颈张量,单位=num\u类,可训练=is\u训练)#保存这个?
def列操作fn(丢失):
优化器=tf.train.AdamOptimizer()
return optimizer.minimize(loss,global\u step=tf.train.get\u global\u step())
head=tf.contrib.estimator.multi_class_head(n_class=num_class,label_词汇表=params['label_vocab']))
返回head.create\u估计器\u spec(
特征、模式、登录、标签,列车运行fn=列车运行fn
)
TF不能像您编写代码那样工作。你应该:
进一步阐述@Feng所说的: 看到和 类似的方法应该可以工作(未经测试):
您也可以使用
Dataset.cache
,但我不能100%确定详细信息。您能举个例子说明如何做到这一点吗?
# Serialize the data into two tfrecord files
tf.enable_eager_execution()
feature_extractor = ...
features_file = tf.python_io.TFRecordWriter('features.tfrec')
label_file = tf.python_io.TFRecordWriter('labels.tfrec')
for images, labels in dataset:
features = feature_extractor(images)
features_file.write(tf.serialize_tensor(features))
label_file.write(tf.serialize_tensor(labels))
# Parse the files and zip them together
def parse(type, shape):
_def parse(x):
result = tf.parse_tensor(x, out_type=shape)
result = tf.reshape(result, FEATURE_SHAPE)
return result
return parse
features_ds = tf.data.TFRecordDataset('features.tfrec')
features_ds = features_ds.map(parse(tf.float32, FEATURE_SHAPE), num_parallel_calls=AUTOTUNE)
labels_ds = tf.data.TFRecordDataset('labels.tfrec')
labels_ds = labels_ds.map(parse(tf.float32, FEATURE_SHAPE), num_parallel_calls=AUTOTUNE)
ds = tf.data.Dataset.zip(features_ds, labels_ds)
ds = ds.unbatch().shuffle().repeat().batch().prefetch()...