だから、私はおしゃれを予測できるモデルを作ろうとしています。私はグーグルのクイックドローデータを使用しています:https://console.cloud.google.com/storage/browser/quickdraw_dataset/full/numpy_bitmap画像は28x28グレースケールビットマップのnumpy配列にレンダリングされます。私は10のクラスを選び、訓練/評価するために6万の写真を撮っただけです。 91%のテスト精度が得られます。私がテストデータからのデータで予測をしようとすると、それは動作します。しかし、絵を描いて28x28に変換すると、良い予測はできません。どんな種類のデータが必要ですか?画像にはどのような前処理が必要ですか?私のケラスモデルは精度は良いものの、予測は悪いのはなぜですか?
これは、私はラベルは、そのカテゴリの私が欲しいのラベルであるGoogleのNPYファイル
def load_set(name,path,resultx,resulty,label):
loaded_set = np.load(path+name+".npy")
loaded_set = loaded_set.reshape(loaded_set.shape[0],1,28,28)
# print(name,loaded_set.shape)
loaded_set = loaded_set[0:6000,0:6000,0:6000,0:6000]
resultx = np.append(resultx,loaded_set,axis=0)
resulty = createLabelArray(label,loaded_set.shape[0],resulty)
print("loaded "+name)
return resultx,resulty
def createLabelArray(label,size,result):
for i in range(0,size):
result = np.append(result,[[label]],axis=0)
return result
からデータを前処理する方法です。 その後、シャッフルします。 そして、これは私が新しいイメージ(私が図面)を処理しようとしている方法です:
print("[INFO] loading and preprocessing image...")
image = image_utils.load_img(os.path.join(path, name), grayscale=True,target_size=(28, 28))
image = image_utils.img_to_array(image)
print(image.shape)
image = np.expand_dims(image, axis=0)
print(image.shape)
image = image.astype('float32')
image /= 255
return image
助けてください、私は今、しばらくの間、この上で立ち往生してきました。ありがとうございました
あなたのデータセットはどれくらいあり、どのように多くのトレーニングサンプルがあるのか分かりません。しかし、非常に一般化可能なモデルを学習するのに十分な訓練/テストの例があると仮定すると、学習されたモデルをあなたが描いた画像に一般化するには、1)あなたの妥当性検査セットに少数の図面を追加するか、データセットで行われたのと同じ前処理で図面を前処理します。 –
「絵を描く」という意味はどうですか?あなたが訓練した10の授業のいずれか、それとも他の授業ですか?列車のデータとどれくらい近いのでしょうか? –
私の絵は、いずれかのカテゴリーのものです。問題は前処理だと思う。私はデータセットで行われた前処理については本当にわかりません。私はGoogleからの.npyファイルを持っています。不思議なことは、データの一部をネットワークに入れておかないと、ネットワークに見えないデータを予測して予測しようとすると、正しく予測されます。だから、私は問題は私がそれが私のデータの前処理と一致するように描くことができる画像を前処理することだと思う。 –