是否可以創建一個input_fn
,它可以隨機生成隨機數據,以便與Tensorflow中的Estimator API一起使用?在Tensorflow的input_fn中生成無限的隨機訓練數據
這基本上是我想什麼:
def create_input_fn(function_to_generate_one_sample_with_label):
def _input_fn():
### some code ###
return feature_cols, labels
然後,我會想使用的功能與Estimator
情況是這樣的:
def data_generator():
features = ... generate a (random) feature vector ...
lablel = ... create suitable label ...
return features, labels
input_fn = create_input_fn(data_generator)
estimator.train(input_fn=input_fn, steps=ANY_NUMBER_OF_STEPS)
的一點是一定要能夠爲訓練儘可能多的步驟,即時生成所需的培訓數據。這是爲了模型調整目的,能夠試驗不同複雜度的不同訓練數據,以便我能夠了解模型適合訓練數據的能力。
編輯 作爲JKM建議,我試圖用一個實際的發電機,就像這樣:
def create_input_fn(function, batch_size=100):
def create_generator():
while True:
features = ... generate <batch_size> feature vectors ...
lablel = ... create <batch_size> labels ...
yield features, label
g = create_generator()
def _input_fn():
return next(g)
return _input_fn
我不得不添加一個批量大小,以使之運行。它現在運行,但input_fn
只被調用一次,所以它不會生成任何新的數據。它只是訓練生成的第一批<batch_size>
樣本。有什麼方法告訴估算人員使用提供的input_fn
刷新數據?
感謝您的意見。它有幫助,但它仍然沒有做我想做的。請參閱編輯的問題:) –