Состояния ошибки model()
ожидает матрицу в качестве ввода, где вы предоставили список.
Чтобы решить эту проблему , просто преобразуйте ее в матрицу:
model(tf.Variable([[[1.1, 2.2]]]))
или
model(np.array([[[1.1, 2.2]]]))
О разнице между model()
и model.predict()
Код, который вы ссылаетесь на где "output получается с использованием model ()":
left_proba = model(obs[np.newaxis]) # <--- HERE
action = (tf.random.uniform([1, 1]) > left_proba)
y_target = tf.constant([[1.]]) - tf.cast(action, tf.float32)
loss = tf.reduce_mean(loss_fn(y_target, left_proba))
Это похоже на вашу вторую строчку кода:
output1 = tf.keras.layers.Dense(2)(input1)
Как это похоже, спросите вы?
В вашем коде вы создаете новый узел в графе слоев, вызывая слой Dense
для этого объекта input1
.
Действие "layer call" как рисование стрелки из input1
к этому слою, который вы создали.
Вы "передаете" входные данные в плотный слой, и вы получаете output1
.
В ссылке кода, они обрабатывают model
как слой и выполняют "вызов слоя".
Видите сходство?:
output = Dense(input)
left_proba = model(obs[...])
В свою очередь это создает новые узлы, которые выполняют другие операции ( в 3 строки, которые е ollow).
Это полезно, если вы хотите взять существующую модель и использовать ее в качестве компонента (или «слоя») для построения другой новой модели.
Что касается модель логический вывод , вы всегда будете делать это через y = model.predict(x)
.