転送学習では、フィーチャのデータセットを作成するためにネットワークを使用することがよくあります。 SVM)。TensorFlow:tf.contrib.data APIの「ステートフルノードを値でキャプチャできません」
# feature_extractor will create a CNN on top of the given tensor
def features(feature_extractor, ...):
dataset = inputs(...) # This creates a dataset of (image, label) pairs
def map_example(image, label):
features = feature_extractor(image, trainable=False)
# Leaving out initialization from a checkpoint here...
return features, label
dataset = dataset.map(map_example)
return dataset
データセットのイテレータを作成するとき、これは失敗した操作:
は、私は、データセットのAPI(tf.contrib.data
)とdataset.map()
を使ってこれを実装したいと思います。
これは事実です。ネットワークのカーネルとバイアスは変数であり、ステートフルです。この特定の例では、彼らはそうである必要はありません。
Opsと具体的にはtf.Variable
オブジェクトをステートレスにする方法はありますか?
私は単に定数としてそれらを作成することはできませんtf.layers
を使用して、定数どちらを作成することはありませんtrainable=False
を設定するが、ちょうどGraphKeys.TRAINABLE_VARIABLES
コレクションに変数を追加しませんよので。