Имея некоторый опыт разработки нейронных сетей в Керасе, я решил написать нестандартный GAN, который таковым и не назовешь. Дело в том, что дискриминатор — это готовая нейросеть, которая прекрасно предсказывает качество изображения лица, а я хотел, чтобы моя сеть увеличивала разрешение изображений 48 на 48 в 4 раза (сделала их 96 на 96). Мой штатный ГАН с обучаемым дискриминатором просто интерполировал изображение на большее пространство с потерей качества, как если бы вы просто увеличили изображение на компьютере. Для меня не столь важно, чтобы изображение было полной копией, поэтому идея с готовым дискриминатором мне показалась удачной.
Вот код пошаговой функции поезда:< /p>
def train(dataset_x, dataset_y, epochs):
history = []
MAX_PRINT_LABEL = 10
th = BUFFER_SIZE // (BATCH_SIZE * MAX_PRINT_LABEL)
for epoch in range(1, epochs + 1):
print(f'{epoch}/{EPOCHS}: ', end='')
start = time.time()
n = 0
gen_loss_epoch = 0
l = len(dataset_x)
for o in range(l):
tf.config.run_functions_eagerly(True) #I'm suspecting the issue is related to this, but i can't do it without running eagerly (train_step doesn't work)
gen_loss = train_step(dataset_x[o], dataset_y[o])
tf.config.run_functions_eagerly(False)
print(gen_loss, disc_loss)
gen_loss_epoch += K.mean(gen_loss)
if (n % th == 0): print('=', end='')
n += 1
generator.save("generator.h5")
history += [gen_loss_epoch / n]
return history
У меня возникла ошибка, которую я до сих пор не могу устранить самостоятельно и с помощью Gemini уже долгое время: ValueError: ни для одной переменной не предусмотрены градиенты (она указывает на строкуgenerator_optimizer .apply_gradients(zip(gradients_of_generator,generator.trainable_variables)))
Имея некоторый опыт разработки нейронных сетей в Керасе, я решил написать нестандартный GAN, который таковым и не назовешь. Дело в том, что дискриминатор — это готовая нейросеть, которая прекрасно предсказывает качество изображения лица, а я хотел, чтобы моя сеть увеличивала разрешение изображений 48 на 48 в 4 раза (сделала их 96 на 96). Мой штатный ГАН с обучаемым дискриминатором просто интерполировал изображение на большее пространство с потерей качества, как если бы вы просто увеличили изображение на компьютере. Для меня не столь важно, чтобы изображение было полной копией, поэтому идея с готовым дискриминатором мне показалась удачной. Вот код пошаговой функции поезда:< /p> [code]@tf.function def train_step(images_x, images_y):
with tf.GradientTape() as gen_tape: generated_images = generator(images_x, training=True).numpy()
#Integrating ready-made network, which returns numpy array with shape (batch_size, 1) and contains scalars representing the number in range of 0-1 fake_output = K.constant(face_detector.estimate(generated_images)) #K = tensorflow backend
return gen_loss [/code] Общая функция поезда: [code]def train(dataset_x, dataset_y, epochs): history = [] MAX_PRINT_LABEL = 10 th = BUFFER_SIZE // (BATCH_SIZE * MAX_PRINT_LABEL)
for epoch in range(1, epochs + 1): print(f'{epoch}/{EPOCHS}: ', end='')
start = time.time() n = 0
gen_loss_epoch = 0 l = len(dataset_x) for o in range(l): tf.config.run_functions_eagerly(True) #I'm suspecting the issue is related to this, but i can't do it without running eagerly (train_step doesn't work) gen_loss = train_step(dataset_x[o], dataset_y[o]) tf.config.run_functions_eagerly(False) print(gen_loss, disc_loss) gen_loss_epoch += K.mean(gen_loss) if (n % th == 0): print('=', end='') n += 1 generator.save("generator.h5")
history += [gen_loss_epoch / n]
return history [/code] структура генератора и другое [code]cross_entropy = tf.keras.losses.BinaryCrossentropy(from_logits=True)
train_dataset_x = list(tf.data.Dataset.from_tensor_slices(x_train).shuffle(BUFFER_SIZE).batch(BATCH_SIZE)) train_dataset_y = list(tf.data.Dataset.from_tensor_slices(y_train).shuffle(BUFFER_SIZE).batch(BATCH_SIZE)) [/code] У меня возникла ошибка, которую я до сих пор не могу устранить самостоятельно и с помощью Gemini уже долгое время: ValueError: ни для одной переменной не предусмотрены градиенты (она указывает на строкуgenerator_optimizer .apply_gradients(zip(gradients_of_generator,generator.trainable_variables)))
Под статическим обучением я подразумеваю выборочную ось=0, которую можно использовать для применения динамического GAN к периодическому подходу, как на этом этапе обучения ниже, где длина периода равна 3.
First sample is using real sample,...
Я пробую пример кода keras на этой странице документации keras
Что делает функция preprocess_input(x) модуля keras в приведенном ниже коде? Почему нам нужно выполнить expand_dims(x, axis=0) перед тем, как это будет передано в метод...
I am working on a personal project in Keras, although I am a novice at it, where I need to create a custom activation function that allows raising a sigmoid function to a decimal power. I have run several tests, and when I use decimal points, the...
Некоторый контекст:
На входе есть 4 изображения, и я объединил их в 4 канала, а на выходе — 1 изображение.
Входная форма (образец,240,240,4)
Выходная форма : (sample,240,240,1)
Потеря моей модели за 50 эпох — это Нэн, и точность тоже
код:...