Как я могу приспособить мою модель keras к своим собственным данным, сгенерированным во время выполнения - PullRequest
1 голос
/ 05 июля 2019

Я пытаюсь создать Генеративную Состязательную Сеть, но я не могу соответствовать модели генератора. Я использую модель Sequential () только с плотными слоями, сначала с input_shape = (1,), а затем с выходным пространством imgsize [0] * imgsize [1] * 3. imgsize = (28, 28), поэтому выходное пространство имеет 2352 единицы.

Мне нужно соответствовать "реальной стоимости" и "предыдущему изображению", но когда я пытаюсь соответствовать выводу предыдущего предсказания, появляется ошибка.

ValueError: Ошибка при проверке цели: ожидалось, что GenDense5 будет иметь форму (1,), но получил массив с формой (2352,)

generator = keras.Sequential([
    keras.layers.Dense(1, input_shape=(1,), activation=tf.nn.sigmoid, name="GenDenseIn"),
    keras.layers.Dense(8, activation=tf.nn.softmax, name="GenDense2"),
    keras.layers.Dense(64, activation=tf.nn.relu, name="GenDense3"),
    keras.layers.Dense(256, activation=tf.nn.softmax, name="GenDense4"),
    keras.layers.Dense(imgsize[0] * imgsize[1] * 3, activation=tf.nn.sigmoid, name="GenDense5")
])

generator.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

gen = generator.predict(np.array([1])) # 1 to find the best
img = gen.reshape((1, imgsize[0], imgsize[1], 3))

res = discriminator.predict(img) # Dicriminator evaluate real or fake value
cost = res[0][0] # Real value

model.fit(np.array([cost]), np.array(gen), epochs=100) #ERROR!

1 Ответ

0 голосов
/ 05 июля 2019

Модель генератора должна вывести 2352, но эти числа являются собирательным значением (изображение), но модель составлена ​​с функцией потерь sparse_categorical_crossentropy, которая является функцией для категориальной классификации, как мой дискриминатор. Ответ - использовать функцию потерь mean_squared_error.

generator.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...