如何在方法内调用输入并在 Tensorflow 中使用

Posted

技术标签:

【中文标题】如何在方法内调用输入并在 Tensorflow 中使用【英文标题】:How to call an input inside a method and use in Tensorflow 【发布时间】:2022-01-11 23:37:18 【问题描述】:

我想调用一个方法,该方法在另一个方法中返回一组输入,并使用我的网络的当前权重进行预测。为简单起见,我现在尝试只打印输入。

import tensorflow as tf
import numpy as np

inputs = tf.keras.layers.Input( shape=(10,) )
x= tf.keras.layers.Flatten()(inputs)
x = tf.keras.layers.Dense(2)(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
model.compile(loss = "mse", 
              optimizer = tf.keras.optimizers.Adam(learning_rate=0.01) )

假设我有一个返回 numpy 数组的方法。

def firstMethod():
    return np.array([[1.32040024, -1.11483181, 1.01526141, 1.36170304, -0.872175455, 1.23767245, 0.696531296, 1.74229145, -1.10529709, -3.96802974]])

现在,我定义了另一个方法,它将我的模型作为参数并打印数组。

def secondMethod(model):
    tf.print(tf.convert_to_tensor(firstMethod, dtype = tf.float32))
    
secondMethod(model)    

我收到一个错误,想知道如何解决这个问题。

ValueError: Attempt to convert a value (<function firstMethod at 0x0000019E0C44B4C0>) with an unsupported type (<class 'function'>) to a Tensor.

【问题讨论】:

【参考方案1】:

您没有调用firstMethod(),您将函数作为参数传入。添加括号以调用该函数,它应该可以工作。此外,secondMethod() 实际上并不使用model。也许你打算做这样的事情?

def secondMethod(model):
    tf.print(tf.convert_to_tensor(model(firstMethod()), dtype = tf.float32))

【讨论】:

是的,括号是缺失的部分。感谢您指出。我试图让问题像模型一样简单。这就是为什么我没有使用model

以上是关于如何在方法内调用输入并在 Tensorflow 中使用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TensorFlow 中对批次进行切片并在每个切片上应用操作

Parsley js:如何验证模态弹出窗口内的输入字段并在模态本身内显示错误消息

如何在Angular中的事件函数内调用组件的方法?

如何在删除时在甜蜜警报弹出窗口中进行 axios 调用并在弹出窗口内的下拉列表中显示数据?

tensorflow 中 feed的用法

如何从 python 中的预训练模型中获取权重并在 tensorflow 中使用它?