Estimators封装了如下actions:training、evaluation、prediction、exprot for serving。

Tensorflow提供预置的Estimator,也支持自定义Estimator。

注意,tensorflow的废弃使用tf.contrib.learn.Estimator

Estimators在tf.layers上构建,简化了配置。

Estimators会自动创建graph,因此无需自己创建graph。

预置的Estimators

通过预置的Estimators构建tensorflow程序,首先需要构建data importing函数。

def input_fn(dataset):
   ...  
   return feature_dict, label

定义特征列时,每个tf.feature_column定义一个特征名,类型,输入预处理过程。

population = tf.feature_column.numeric_column('population')
crime_rate = tf.feature_column.numeric_column('crime_rate')
median_education = tf.feature_column.numeric_column('median_education',
                    normalizer_fn='lambda x: x - global_education_mean')

实例化预置Estimators

estimator = tf.estimator.Estimator.LinearClassifier(
    feature_columns=[population, crime_rate, median_education],
    )

调用training,evaluation,inference方法

estimator.train(input_fn=my_training_set, steps=2000)

自定义Estimators

Estimator的核心是model函数,它用于构建graph。

下面将keras model,转化为Estimators。

实例化Keras inception v3 model

keras_inception_v3 = tf.keras.applications.inception_v3.InceptionV3(weights=None)

编译模型

keras_inception_v3.compile(optimizer=tf.keras.optimizers.SGD(lr=0.0001, momentum=0.9),
                          loss='categorical_crossentropy',
                          metric='accuracy')

将keras model转化为estimator

est_inception_v3 = tf.keras.estimator.model_to_estimator(keras_model=keras_inception_v3)

定义estimator的input函数

keras_inception_v3.input_names
train_input_fn = tf.estimator.inputs.numpy_input_fn(
    x={"input_1": train_data},
    y=train_labels,
    num_epochs=1,
    shuffle=False)

调用estimator的train方法

est_inception_v3.train(input_fn=train_input_fn, steps=2000)

results matching ""

    No results matching ""