前提・実現したいこと
tensorflowを使用して、画像分類の機械学習を行っています。
最終的にはアンドロイドアプリとして学習したモデルを動かしたいと考えています。
発生している問題・エラーメッセージ
まず、作成したh5ファイルを.tfliteに変換し、アンドロイドアプリに組み込みました。
しかし、tensorflow公式のtfliteファイルでは動くのに、自作したファイルでは「アプリが繰り返し停止しています」と出て、アプリが落ちてしまいました。
そこで、モデル自体に問題があるのではないかと思い、model.predictを行ったところ、以下のエラーが出てしまいました。
ValueError: Layer sequential expects 1 inputs, but it received 2 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(32, 48, 48, 1) dtype=float32>, <tf.Tensor 'ExpandDims:0' shape=(32, 1) dtype=float32>]
該当のソースコード
学習データの作成
python
1image_gen = ImageDataGenerator(rescale=1./255, rotation_range=30) 2 3train_data_gen = image_gen.flow_from_directory(batch_size=BATCH_SIZE, 4 directory=train_dir, 5 shuffle=True, 6 target_size=(IMG_SHAPE, IMG_SHAPE), 7 color_mode='grayscale', 8 class_mode='sparse') 9image_gen_val = ImageDataGenerator(rescale=1./255) 10 11val_data_gen = image_gen_val.flow_from_directory(batch_size=BATCH_SIZE, 12 directory=validation_dir, 13 target_size=(IMG_SHAPE, IMG_SHAPE), 14 color_mode='grayscale', 15 class_mode='sparse')
モデル
python
1model = tf.keras.models.Sequential([ 2 tf.keras.layers.Conv2D(16,(3,3),activation="relu",input_shape=(IMG_SHAPE,IMG_SHAPE,1)), 3 tf.keras.layers.MaxPooling2D(2,2), 4 #tf.keras.layers.Conv2D(16,(3,3),activation="relu"), 5 6 tf.keras.layers.Conv2D(32,(3,3),activation="relu"), 7 tf.keras.layers.MaxPooling2D(2,2), 8 #tf.keras.layers.Conv2D(32,(3,3),activation="relu"), 9 10 tf.keras.layers.Conv2D(64,(3,3),activation="relu"), 11 tf.keras.layers.MaxPooling2D(2,2), 12 #tf.keras.layers.Conv2D(64,(3,3),activation="relu"), 13 14 tf.keras.layers.Dropout(0.2), 15 tf.keras.layers.Flatten(), 16 tf.keras.layers.Dense(512,activation="relu"), 17 tf.keras.layers.Dense(73) 18])
学習(コンパイルは省略)
python
1history = model.fit( train_data_gen, 2 validation_data=val_data_gen, 3 steps_per_epoch=int(np.ceil(56114 / float(BATCH_SIZE))), 4 epochs=epochs, 5 validation_steps=int(np.ceil(23711 / float(BATCH_SIZE))) 6)
model.predict
python
1from tensorflow import keras 2model = keras.models.load_model('/content/drive/My Drive/Colab Notebooks/apps/hiragana/my_model.h5') 3model.summary() 4model.predict(val_data_gen[0)
試したこと
androidアプリの方に問題があるのではないかと思い、原因を調べましたが、自作ではないモデルだと問題なく動いていることからそうではないと判断しました。
あなたの回答
tips
プレビュー