結果が伴わないので
全く別の方法で偽画像を作成することにします
本意ではありませんが
DCGANではなくBEGANを使って作成する予定です
地道な作業になるため、その一部のコードをアップします
コード
import sys, os
import glob
import math
import random
import numpy as np
from matplotlib import pyplot as plt
import keras
from keras import backend as K
from keras.models import Model, Sequential
from keras.layers import Conv2D, Dense, Input, MaxPooling2D, UpSampling2D, Lambda
from keras.preprocessing.image import load_img, img_to_array, array_to_img, ImageDataGenerator
DATA_DIR = './'
BATCH_SIZE = 16
IMAGE_SHAPE = (64, 64, 1)
BATCH_SIZE = 16
IMAGE_SHAPE = (64, 64, 1)
data_gen = ImageDataGenerator(rescale=1/255.)
tarain_data_generator = data_gen.flow_from_directory(
directory=DATA_DIR,
classes = ['train'],
batch_size=BATCH_SIZE,
target_size=IMAGE_SHAPE[:2]
)
tarain_data_generator = data_gen.flow_from_directory(
directory=DATA_DIR,
classes = ['train'],
batch_size=BATCH_SIZE,
target_size=IMAGE_SHAPE[:2]
)
# Encoderの定義
def build_encoder(input_shape, z_size, n_filters, n_layers):
"""Encoderを構築する
Argument:
input_shape(int):画像のshape
z_size(int):特徴空間の次元数
n_filters(int):フィルタ数
Returns:
model (Model): Encoderモデル
"""
model = Sequential()
model.add(
Conv2D(
n_filters,
3,
activation='eul',
input_shape=input_shape,
padding='same'
)
)
model.add(Conv2D(n_filters, 3, padding='same'))
for i in range(2, n_layers + 1):
model.add(
Conv2D(
i*n_filters,
3,
activation='elu',
padding='same'
)
)
model.add(
Conv2D(
i*n_filters,
3,
activation='elu',
padding='same'
)
)
model.add(
Conv2D(
i*n_filters,
3,
activation='elu',
stride=2,
padding='same'
)
)
model.add(Conv2D(n_layers*n_filters, 3,
padding='same'))
model.add(Flatten())
model.add(Dense(z_size))
return model
def build_encoder(input_shape, z_size, n_filters, n_layers):
"""Encoderを構築する
Argument:
input_shape(int):画像のshape
z_size(int):特徴空間の次元数
n_filters(int):フィルタ数
Returns:
model (Model): Encoderモデル
"""
model = Sequential()
model.add(
Conv2D(
n_filters,
3,
activation='eul',
input_shape=input_shape,
padding='same'
)
)
model.add(Conv2D(n_filters, 3, padding='same'))
for i in range(2, n_layers + 1):
model.add(
Conv2D(
i*n_filters,
3,
activation='elu',
padding='same'
)
)
model.add(
Conv2D(
i*n_filters,
3,
activation='elu',
padding='same'
)
)
model.add(
Conv2D(
i*n_filters,
3,
activation='elu',
stride=2,
padding='same'
)
)
model.add(Conv2D(n_layers*n_filters, 3,
padding='same'))
model.add(Flatten())
model.add(Dense(z_size))
return model