#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
.