나는 tensorflow 백엔드가있는 keras를 사용하여 두 클래스의 이미지 분류 코드를 작성하고 있습니다. 내 이미지는 컴퓨터의 폴더에 저장되어 있으며 이러한 이미지를 내 keras 모델의 입력으로 제공하려고합니다. flow(x,y)
또는 flow_from_directory(directory)
을 사용해야하지만 flow(x,y)
에는 flow_from_directory(directory)
을 사용하므로 길이 작업 인 레이블도 제공해야합니다. load_img
은 입력 이미지를 하나만 가져옵니다. 내 이미지는 20 * 40, 55 * 43 .....와 같이 가변 크기이지만 here은 고정 된 target_size가 필요하다는 것을 언급합니다. this 솔루션에서 input_shape=(1, None, None)
또는 input_shape = (없음, 없음, 3) (채널 마지막 및 컬러 이미지)를 사용하여 컨볼 루션 계층에 입력으로 가변 크기 이미지를 제공 할 수 있지만 fchollet은 평평한 레이어에는 유용하지 않으며 my 모델은 회선 및 평평한 레이어로 구성됩니다. 이 게시물에서는 moi90 만 다른 배치를 시도하지만 모든 배치는 같은 크기의 이미지를 가져야한다고 제안하지만 내 데이터가 매우 분산되어 있기 때문에 같은 크기의 이미지를 그룹화 할 수 없습니다. 나는 그것이 때문이 아니라 img_dim_ordering
및 backend
입니다하지만 때문에 this의 내가이 확신keras에서 가변 크기 이미지를 입력하는 방법
Traceback (most recent call last):
File "<ipython-input-8-4e22d22e4bd7>", line 23, in <module>
model.add(Flatten())
File "/home/nd/anaconda3/lib/python3.6/site-packages/keras/models.py", line 489, in add
output_tensor = layer(self.outputs[0])
File "/home/nd/anaconda3/lib/python3.6/site-packages/keras/engine/topology.py", line 622, in __call__
output_shape = self.compute_output_shape(input_shape)
File "/home/nd/anaconda3/lib/python3.6/site-packages/keras/layers/core.py", line 478, in compute_output_shape
'(got ' + str(input_shape[1:]) + '. '
ValueError: The shape of the input to "Flatten" is not fully defined (got (None, None, 16). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.
: 이제
from __future__ import print_function
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
from keras import backend as K
import numpy as np
from keras.preprocessing.image import ImageDataGenerator
input_shape = (None,None,3)
model = Sequential()
model.add(Conv2D(8, kernel_size=(3, 3),
activation='relu',
input_shape=input_shape))
model.get_weights()
model.add(Conv2D(16, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))
model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])
train_datagen = ImageDataGenerator()
test_datagen = ImageDataGenerator()
train_generator = train_datagen.flow_from_directory('/data/train', target_size=input_shape, batch_size=1,class_mode='binary')
validation_generator = test_datagen.flow_from_directory('/data/test',target_size=input_shape,batch_size=1,class_mode='binary')
model.fit_generator(train_generator,steps_per_epoch=1,epochs=2,validation_data=validation_generator,validation_steps=1)
내가 무엇입니까 다음과 같은 오류 : 그래서 내가 batch size=1
로 가서 다음 코드를 작성하기로 결정 모두 체크 됨 th
코드를 수정하거나 변수 모델을 입력 할 수있는 방법을 알려주십시오.
더 정확한 대답을 기다리는 중 – Hitesh