GPU 사용 가능 Tensorflow 백엔드가있는 Keras를 사용하여 3 계층 밀도 신경망 모델을 학습하려고합니다.밀도 층에서 케라 오류가 발생했습니다. 4 차원의 모양이 배열 (1024,2)로 나타납니다.
내가 가지고있는 데이터 세트는 내가 속한 카테고리의 이름으로 디렉토리에 배치 한 4 백만 개의 20x40 픽셀 이미지입니다.
많은 양의 데이터 때문에 RAM에 모든 데이터를로드하고 내 모델로 피드 할 수 없으므로 Keras's ImageDataGenerator을 사용하여 생각했습니다. 특히 flow_from_directory() 함수가이 트릭을 수행합니다. 이것은 (x, y)의 튜플을 생성합니다. 여기서 x는 이미지의 numpy 배열이고 y는 이미지의 레이블입니다.
내 모델의 입력으로 주어진 numpy 배열에 액세스하는 모델을 예상 했으므로 입력 모양을 다음과 같이 설정했습니다. (없음, 20,40,3) 여기서 None은 배치 크기, 20 및 40입니다. 40은 이미지의 크기이고 3은 이미지의 채널 수입니다. 대상 확인시 오류 : 에 ValueError :이 내가 오류가 계속 내 모델 훈련 할 때 그러나 작동하지 않는 4 차원이 예상 dense_3을하지만 모양으로 배열 얻었다 (1024, 2)
원인은 flow_from_directoy에서 튜플을 얻고 있고 일치하도록 입력 모양을 변경할 수 있다고 생각합니다. 그러나 이미지를 사용하여 예측을 작성하지 않고 사전 분류 된 모델을 사용하지 않으면 내 모델이 쓸모 없게됩니다. 튜플. 그래서 내 질문은, 어떻게 내 모델에 이미지를 먹이기 위해서만 flow_from_directory를 얻을 수 있고 튜플을 사용하여 트레이닝의 유효성을 검사 할 수 있습니까? 내가 여기서 뭔가를 오해하니?
from keras.models import Model
from keras.layers import *
from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import TensorBoard
# Prepare the Image Data Generator.
train_datagen = ImageDataGenerator()
test_datagen = ImageDataGenerator()
train_generator = train_datagen.flow_from_directory(
'/path/to/train_data/',
target_size=(20, 40),
batch_size=1024,
)
test_generator = test_datagen.flow_from_directory(
'/path/to/test_data/',
target_size=(20, 40),
batch_size=1024,
)
# Define input tensor.
input_t = Input(shape=(20,40,3))
# Now create the layers and pass the input tensor to it.
hidden_1 = Dense(units=32, activation='relu')(input_t)
hidden_2 = Dense(units=16)(hidden_1)
prediction = Dense(units=1)(hidden_2)
# Now put it all together and create the model.
model = Model(inputs=input_t, outputs=prediction)
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
# Prepare Tensorboard callback and start training.
tensorboard = TensorBoard(log_dir='./graph', histogram_freq=0, write_graph=True, write_images=True)
print(test_generator)
model.fit_generator(
train_generator,
steps_per_epoch=2000,
epochs=100,
validation_data=test_generator,
validation_steps=800,
callbacks=[tensorboard]
)
# Save trained model.
model.save('trained_model.h5')