私はテンソルフローバックエンドのケラスを使って2つのクラスの画像分類のコードを書いています。私の画像はコンピュータのフォルダに保存されていて、私はこれらの画像をケラスモデルの入力として与えたいと思っています。 load_img
は1つの入力イメージしか取らないので、flow(x,y)
またはflow_from_directory(directory)
のいずれかを使用する必要がありますが、flow(x,y)
には、長さタスクというラベルを付ける必要があります。flow_from_directory(directory)
を使用しています。私の画像は20 * 40,55 * 43 .....のような可変サイズですが、hereは固定されたtarget_sizeが必要であると言われています。 this解決策では、input_shape=(1, None, None)
またはinput_shape =(None、None、3)(チャンネルの最後とカラー画像)を使用して畳み込みレイヤーへの入力として可変サイズの画像を与えることができますが、平坦化レイヤーとmyモデルは畳み込み層と平坦化層の両方から成ります。その記事では、moi90のみが異なるバッチを試すことを提案していますが、すべてのバッチは同じサイズの画像を持つべきですが、データが非常にばらばらであるため同じサイズの画像をグループ化することはできません。私はそれがないので、img_dim_ordering
とbackend
のですが、理由thisの私が持っていると確信しています可変サイズの画像をケラスの入力として与える方法
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