Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 在tf 2.0中不使用已弃用的tf.placeholder方法的情况下提供函数_Python 2.7_Tensorflow_Tensorflow Datasets - Fatal编程技术网

Python 2.7 在tf 2.0中不使用已弃用的tf.placeholder方法的情况下提供函数

Python 2.7 在tf 2.0中不使用已弃用的tf.placeholder方法的情况下提供函数,python-2.7,tensorflow,tensorflow-datasets,Python 2.7,Tensorflow,Tensorflow Datasets,我在tf 1中构建了一个功能正常的tf.estimator管道,但现在我决定迁移到tf 2.0,在管道的最后,当我想以.pb格式保存模型时,我遇到了一些问题 我正在使用高级估计器导出保存的模型方法: 我有两个数字特征,“年龄”和“花费的时间” 它们是使用tf.feature_列定义的,如下所示: age = tf.feature_column.numeric_column('age') time_spent = tf.feature_column.numeric_column('time_sp

我在tf 1中构建了一个功能正常的tf.estimator管道,但现在我决定迁移到tf 2.0,在管道的最后,当我想以.pb格式保存模型时,我遇到了一些问题

我正在使用高级估计器导出保存的模型方法:

我有两个数字特征,“年龄”和“花费的时间”

它们是使用tf.feature_列定义的,如下所示:

age = tf.feature_column.numeric_column('age')
time_spent = tf.feature_column.numeric_column('time_spent')

features = [age,time_spent]
在模型经过训练后,我使用方法feature\u column\u make\u parse\u example\u spec()将特征列表转换为dict,并将其提供给另一个方法build\u parsing\u service\u input\u receiver\u fn(),具体如tensorflow的网页上的estimators下所示

columns_dict = tf.feature_column_make_parse_example_spec(features)
input_receiver_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(columns_dict)
model.export_saved_model(export_dir,input_receiver_fn)
然后,我使用CLI工具检查输出

saved_model_cli show --dir mydir --all: 
结果如下:

不知何故,Tensorflow将我的两个有用的数字特性压缩成一个无用的字符串输入垃圾,称为“输入”

在TF1中,可以通过使用一些TF.placeholder方法创建一个自定义的input\u receiver\u fn()函数来避免这一问题,这样我就可以得到两个不同数字特征的正确输出。但是tf2中不存在tf.placeholder,所以现在它非常无用

很抱歉,Tensorflow有可怕的文档记录,我真的在使用高级API,它应该是直接的,但不是

我非常感谢您的帮助:)

Tensorflow将我的两个有用的数字特征压缩成一个无用的 字符串输入垃圾称为“输入”

不完全正确,因为导出的模型需要序列化的tf.Example proto。因此,您可以将您的
年龄
和花费的
时间
扭曲为两个功能,如下所示:

features {
  feature {
    key: "age"
    value {
      float32_list {
        value: 10.2
      }
    }
  }
  feature {
    key: "time_spent"
    value {
      float32_list {
        value: 40.3
      }
    }
  }
}
然后可以使用序列化字符串调用回归函数

Tensorflow将我的两个有用的数字特征压缩成一个无用的 字符串输入垃圾称为“输入”

不完全正确,因为导出的模型需要序列化的tf.Example proto。因此,您可以将您的
年龄
和花费的
时间
扭曲为两个功能,如下所示:

features {
  feature {
    key: "age"
    value {
      float32_list {
        value: 10.2
      }
    }
  }
  feature {
    key: "time_spent"
    value {
      float32_list {
        value: 40.3
      }
    }
  }
}
然后可以使用序列化字符串调用回归函数