Как вызвать входные данные внутри метода и использовать их в Tensorflow

#python #numpy #tensorflow #keras

Вопрос:

Я хотел бы вызвать метод, который возвращает набор входных данных внутри другого метода, и использовать текущие веса моей сети для прогнозирования. Для простоты я сейчас пытаюсь просто распечатать ввод.

 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 (lt;function firstMethod at 0x0000019E0C44B4C0gt;) with an unsupported type (lt;class 'function'gt;) to a Tensor.  

Ответ №1:

Вы не вызывали firstMethod() , вы передали функцию в качестве параметра. Добавьте круглые скобки, чтобы вызвать функцию, и она должна работать. Кроме того, secondMethod() на самом деле не используется model . Может быть, ты хотел сделать что-то подобное?

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

Комментарии:

1. Да, скобки были недостающей частью. Спасибо, что указали на это. Я старался, чтобы вопрос был таким же простым, как и модель. Вот почему я им не пользовался model .