- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为我的训练数据使用 tensorflow 数据集 api,为 tf.data.Dataset.from_generator api 使用 input_fn 和生成器
def generator():
......
yield { "x" : features }, label
def input_fn():
ds = tf.data.Dataset.from_generator(generator, ......)
......
feature, label = ds.make_one_shot_iterator().get_next()
return feature, label
然后我使用如下代码为我的 Estimator 创建了一个自定义 model_fn:
def model_fn(features, labels, mode, params):
print(features)
......
layer = network.create_full_connect(input_tensor=features["x"],
(or layer = tf.layers.dense(features["x"], 200, ......)
......
训练时:
estimator.train(input_fn=input_fn)
但是,代码不起作用,因为函数 model_fn 的 features 参数是这样的:
Tensor("IteratorGetNext:0", dtype=float32, device=/device:CPU:0)
代码 "features["x"]"会失败并告诉我:
......"site-packages\tensorflow\python\ops\array_ops.py", line 504, in _SliceHelper end.append(s + 1) TypeError: must be str, not int
如果我将 input_fn 更改为:
input_fn = tf.estimator.inputs.numpy_input_fn(
x={"x": np.array([[1,2,3,4,5,6]])},
y=np.array([1]),
代码继续,因为 features 现在是一个字典。
我搜索了 estimator 的代码,发现它使用了一些函数,例如
features, labels = self._get_features_and_labels_from_input_fn(
input_fn, model_fn_lib.ModeKeys.TRAIN)
从 input_fn 中检索特征和标签,但我不知道为什么它通过使用不同的数据集实现传递给我(model_fn)两种不同数据类型的特征,如果我想使用我的生成器模式,那么如何使用它类型(IteratorGetNext)的功能?
感谢您的帮助!
[更新]
我对代码做了一些修改,
def generator():
......
yield features, label
def input_fn():
ds = tf.data.Dataset.from_generator(generator, ......)
......
feature, label = ds.make_one_shot_iterator().get_next()
return {"x": feature}, label
然而,在 tf.layers.dense 仍然失败,现在它说
"Input 0 of layer dense_1 is incompatible with the layer: its rank is undefined, but the layer requires a defined rank."
虽然特征是一个字典:
'x': tf.Tensor 'IteratorGetNext:0' shape=unknown dtype=float64
在正确的情况下,它是:
'x': tf.Tensor 'random_shuffle_queue_DequeueMany:1' shape=(128, 6) dtype=float64
我从
学到了类似的用法https://developers.googleblog.com/2017/09/introducing-tensorflow-datasets.html
def my_input_fn(file_path, perform_shuffle=False, repeat_count=1):
def decode_csv(line):
......
d = dict(zip(feature_names, features)), label
return d
dataset = (tf.data.TextLineDataset(file_path)
但是对于将迭代器返回到自定义 model_fn 的生成器情况,没有官方示例。
最佳答案
根据examples on how to use from_generator
,生成器返回要放入数据集中的值,而不是特征字典。相反,您在 input_fn
中构建字典.
按如下方式更改代码应该可以正常工作:
def generator():
......
yield features, label
def input_fn():
ds = tf.data.Dataset.from_generator(generator, ......)
......
feature, label = ds.make_one_shot_iterator().get_next()
return {"x": feature}, label
您的代码失败是因为 Dataset.from_generator
的迭代器生成的张量没有静态 shape
已定义(因为生成器原则上可以返回不同形状的数据)。假设您的数据确实始终具有相同的形状,您可以调用 (有关执行此操作的正确方法,请参阅编辑打击)。feature.set_shape(<the_shape_of_your_data>)
之前return
来自 input_fn
正如您在评论中指出的那样, tf.data.Dataset.from_generator()
有第三个参数设置输出张量的形状,所以不是feature.set_shape()
只需将形状传递为 output_shapes
在 from_generator()
.
关于python - 有没有一种简单的方法可以在 tensorflow 中将 tf.data.Dataset.from_generator 中的特性与自定义 model_fn(Estimator) 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47390473/
目录 C#特性 1. 概括 2. 语法 定义特性类 应用特性
是否有关于 Python 语言必须提供哪些功能的文章/论文?为什么应该使用 Python 而不是任何其他语言? Python 的优点和缺点是什么? 最佳答案 Why Python和 Why Pytho
我想弄清楚为什么 .x比*.x具有更高的特异性当后者有望获胜时。 不是*.x应该具有 0-0-1-1 的特异性(1 个类,1 个标签)而 .x只是一个类(class) 0-0-1-0 ? 考虑以下基本
在尝试评估非 instanceof 条件时,我发现了我在 Groovy 2.4.7、1.6.0 JVM 中没有预料到的行为。 总之: class Foo { static Boolean
当使用可变结构和属性时,编译器可以解决一些问题,但不能对其他相当明显的事情做同样的事情,这对我来说似乎很奇怪。 以下面的自动属性为例: Vector2 Vector { get; set; } 而不是
我对 ES3 有一定的了解,但我对 ES5 的特性不是很了解。我 - 或多或少 - 知道: Object.create(), Object.freeze() “使用严格” getter 和 sette
我最近开始将 Django 1.5.4 用于带有 MySQL 后端的 Web 应用程序。就在一开始,我遇到了某些限制,这让我想知道 Django 是否是继续前进的正确方法。 一些明显的缺点是: 缺少复
在函数模板的定义中,模板参数的实例化一般是未知的。类型特征可用于在编译时获取一些信息。例如,这是 is_pointer 的一个简单应用: template void foo(T p) { cout
我正在设计页面的样式,该页面具有除最后一个框外的带底部边框的连续框。我为所有框应用类 .box 并添加 .box_last 以仅隐藏最后一个框的边框。 .box { border-bottom-s
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我有兴趣编制一份不建议在嵌入式系统中使用的 c++ 功能列表(这可能会导致人们推荐使用 c 而不是 c++)。如果您知道,请尝试添加原因,或者将您的原因添加到其他人的答案中。 这是一个开始(我知道的唯
作为一名 Ruby 程序员,您是否曾觉得任何使用起来有点冒险的功能,可能是因为它的奇怪行为?它可能有很好的文档记录,但在调试时很难找到,或者难以记住? 我通常尽量远离 String#gsub!。文档说
我正在开发一个连接到健身 watch 的蓝牙应用程序。这是我第一次使用蓝牙。我设法使用出色的 FlutterBlue 将我的应用程序与设备连接起来图书馆。 但是我无法理解我从阅读中获得的结果。这是我阅
1. 迭代器(Iterator)的介绍 背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间费连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历。 定义:迭代器是一种检
嗨,伙计们,有没有动态更改 Spring 属性文件内容的好例子?如果您能给我一些示例或链接,我将不胜感激。 非常感谢 最佳答案 我想你可以使用 ReloadableResourceBundleMess
SystemVerilog 引入了一些非常有用的结构来改进编码风格。然而,正如我的一位同事经常说的,“你不是在写软件,你是在描述硬件。”考虑到这一点,当最终结果需要合成时,应该避免语言的哪些特征?这个
我定义了这些测试依赖项 / Test Dependencies lazy val wiremock = "com.github.tomakehurst" % "wir
我正在为 Android 手机和 Android watch (wearOS) 编写应用程序。这些应用程序将通过蓝牙相互通信。基本上,Android 手机上的应用程序将与 WearOS 设备绑定(bi
我正在为 Android 手机和 Android watch (wearOS) 编写应用程序。这些应用程序将通过蓝牙相互通信。基本上,Android 手机上的应用程序将与 WearOS 设备绑定(bi
我有兴趣提高我的设计能力(设计具有属性、方法等的类)。即如何决定类、方法和属性应该是什么? 你们能建议我改进这个的好 Material 吗? 最佳答案 请看: Any source of good o
我是一名优秀的程序员,十分优秀!