Печатайте ввод во время обучения модели на каждой итерации - PullRequest
0 голосов
/ 26 апреля 2019

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

import tensorflow.keras.backend as K
import tensorflow as tf
import numpy as np

x = [[i, i * 3 + 1] for i in range(100)]
y = [2 * i + 1 for i in range(100)]
x = np.array(x)
y = np.array(y)

print_weights = tf.keras.callbacks.LambdaCallback(
    on_batch_end=lambda batch, logs: print(K.get_value(model.layers[1].input)))


def sobaka():
    a = tf.keras.Input(shape=(2,))
    b = tf.keras.layers.Dense(1)
    c = b(a)
    model = tf.keras.models.Model(a, c)
    optimizer = tf.keras.optimizers.Adam(lr=0.1)
    model.compile(loss='mean_squared_error', optimizer=optimizer, metrics=['accuracy'])
    return model


kek = tf.placeholder(tf.float32, shape=(2,))
model = sobaka()
model.fit(x, y, batch_size=1, epochs=2, callbacks=[print_weights])

Таким образом, каждый пакет (один обучающий образец) будет печатать входной тензор.Но я получил сообщение об ошибке:

Вы должны указать значение для тензора-заполнителя 'input_1' с помощью dtype float и shape [?, 2]

Пожалуйста, помогите мнепонять, как разместить заполнитель в моем коде.И есть ли возможное решение для печати информации на каждой итерации?(когда партия, например, 10?)

...