我想将参数提供给生成器以与tf.data.Dataset.from_generator()
结合使用。例如:
def generator(lo, hi):
for i in range(lo, hi):
yield float(i)
此生成器产生的浮点在lo
和hi
之间。但是请注意,与创建数据集时相比,这些参数永远不会传递给此生成器。
tf.data.Dataset.from_generator(generator, tf.float64)
这是因为tf.data.Dataset.from_generator()
的generator参数不应包含任何参数。
有解决方案吗?
答案 0 :(得分:0)
我找到了一个基于功能编程概念的解决方案,该概念称为部分应用函数。总结:
PAF是一个具有多个参数的函数并返回具有较少参数的函数的函数。
我的操作方式如下:
from functools import partial
import tensorflow as tf
def generator(lo, hi):
for i in range(lo, hi):
yield float(i)
def get_generator(lo, hi):
return partial(generator, lo, hi)
tf.data.Dataset(get_generator(lo, hi), tf.float64)
get_generator(lo, hi)
函数为生成器返回部分应用的函数,该函数固定lo
和hi
参数的值,实际上这是{{1}所需的无参数生成器}。
答案 1 :(得分:0)
TensorFlow @page "/selectedtext"
@inject IJSRuntime JsRuntime
<h3>TextSelection</h3>
<input type="text" placeholder="Type here" @ref="myTextInput"/>
<button class="btn btn-primary" @onclick="@(async () => await GetSelectionStart(myTextInput))"></button>
@code {
public ElementReference myTextInput { get; set; }
public async Task GetSelectionStart(ElementReference element)
{
int pos = await JsRuntime.InvokeAsync<int>("GetSelectedStart", element);
}
}
// myscript.js
{
getSelectedStart : function (element) {
return element.selectionStart;
}
}
已经支持通过参数Dataset
对生成器进行参数化,该参数仅传递给生成器(see docs)。这是在TensorFlow args
上测试过的最小工作示例。
2.0.0