当前位置: 首页 > 知识库问答 >
问题:

具有numpy数组input_fn的估计器

关飞翼
2023-03-14
def input_fun(data):
    x, y = data

    x, y = np.reshape(x, (batch_size, -1, 1)), \
           np.reshape(y, (batch_size, -1, 1))

    return tf.estimator.inputs.numpy_input_fn({'x': x}, y)

def forward(x, params, mode):

    layers = [tf.nn.rnn_cell.LSTMCell(n_neurons) for _ in range(n_layers)]
    cells = tf.nn.rnn_cell.MultiRNNCell(layers)
    outputs, state = tf.nn.dynamic_rnn(cells, x)

    predictions = ...

    return predictions

def model_fn(features, labels, mode, params):
    predict = forward(features, params, mode)

    return tf.estimator.EstimatorSpec(predict , ...)

def experiment_fn(config, params):
    return learn.Experiment(
        estimator = estimator(model_fn,...),
        train_input_fn = lambda: input_fun(train_set),
        eval_input_fn = lambda: input_fun(eval_set))

回溯(最近调用的最后一次):

文件“”,第1行,在runfile('/experient.py',wdir='/tensorflow')中

文件“C:\users\hp\anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py”,第710行,在runfile execfile(文件名,命名空间)中

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\extran_hooks”,第367行,在train hooks=self._train_monitors+extran_hooks中)

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\contrib\learn\python\learn\experment.py”,第807行,在_call_train hooks=hooks中)

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py”,第302行,在train loss=self._train_model(input_fn,hooks,saving_listeners)中

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py”,第711行,in_train_model features,labels,model_fn_lib.modekeys.train,self.config)

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\estimator\estimator.py”,第694行,在_call_model_fn model_fn_results=self._model_fn中

文件“/experient.py”,第350行,在model_fn predict=forward(features,params,mode)中

文件“/experient.py”,第335行,正向dtype=tf.float32

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\ops\rnn.py”,第562行,位于dynamic_rnn flat_input=[ops.convert_to_tensor(input_)for input_in flat_input]中

html" target="_blank">文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\ops\rnn.py”,第562行,在flat_input=[ops.convert_to_tensor(input_)for input_in flat_input]中

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\framework\ops.py”,第836行,在convert_to_tensor as_ref=false中)

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\framework\ops.py”,第926行,位于internal_convert_to_tensor ret=conversion_func(value,dtype=dtype,name=name,as_ref=as_ref)中

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py”,第229行,在_constant_tensor_conversion_function返回常量(v,dtype=dtype,name=name)中

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py”,第208行,常量,dtype=dtype,shape=shape,verify_shape=verify_shape))

文件“C:\users\hp\anaconda3\lib\site-packages\tensorflow\python\framework\tensor_util.py”,第472行,在make_tensor_proto“supported type”中。%(类型(值),值))

TypeError:未能将类型 的对象转换为张量。内容: .input_fn at 0x000001ab2b1dbea0>。考虑将元素强制转换为受支持的类型。

有人知道为什么吗?

共有1个答案

茅秦斩
2023-03-14

我也有类似的问题。在我的例子中,出现异常是因为在我的模型中(我猜是“forward”,在您的例子中),x被用作张量,但它实际上是一个函数(特别是tf.estimator.inputs.numpy_input_fn)。我加上这个就明白了:

print(x)
print(type(x))

它打印了如下内容:

<function numpy_input_fn.<locals>.input_fn at 0x7fcc6f065740>
<class 'function'>

我仍然不确定解决它的正确方法是什么,但我能够通过执行类似于以下操作来修复它:

input_dict, y = x()
x = input_dict['x']
 类似资料:
  • 问题内容: 我正在尝试将Iris教程(https://www.tensorflow.org/get_started/estimator)转换为从.png文件而不是.csv中读取训练数据。它可以使用,但是当我用制作时却不能。我认为返回的是错误的类型,但实际上并不清楚它应该是什么以及如何制作它。错误是: TensorFlow版本为1.3。完整的代码: 问题答案: 我注意到您的代码段中存在一些错误: 方

  • 问题内容: 我有具有重复值的numpy 2d数组。 我正在搜索这样的数组。 输入是列表,其编号类似于列0的值。我想要的最终结果是任何形式的结果行,例如数组,列表或元组 我的代码工作正常,但似乎不是pythonic。有没有更好的多值搜索策略? 就像只进行一次查找即可获取所有值的地方。 我的真实数组很大 问题答案: 方法1: 使用- 方法2: 使用-

  • #ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()

  • 问题内容: 我有一个Numpy数组和一个索引列表,我想将其值加1。该列表可能包含重复的索引,我希望增量可以随每个索引的重复次数而缩放。没有重复,命令很简单: 通过重复,我想出了以下方法。 这是最好的方法吗?假设和操作将导致相同的排序顺序是否有风险?我是否缺少一些简单的Numpy操作来解决此问题? 问题答案: 做完之后 为什么不这样做: (为进一步简化而编辑。)

  • 问题内容: 我在创建numpy数组的numpy数组时遇到问题。我将在一个循环中创建它: 所需结果: 实际结果: 可能吗?我不知道数组的最终尺寸,因此无法使用固定尺寸对其进行初始化。 问题答案: 永远不要在循环中追加数组:与基本的Python相比,这是NumPy非常不擅长的一项操作。这是因为您要对每个数据进行完整复制,这将花费您二次时间。 相反,只需将您的数组附加到Python列表中,并在最后进行转

  • 问题内容: 我尝试在此笔记本中解决此问题6。问题是通过使用来自的LogisticRegression模型,使用50、100、1000和5000个训练样本在此数据上训练简单模型。 这是我尝试执行的代码,它给了我错误。 ValueError:找到的数组为暗3。估计量应小于等于2。 任何想法? 更新1:更新到Jupyter Notebook的链接。 问题答案: scikit-learn期望2d num数