質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Q&A

解決済

1回答

3491閲覧

KerasでU-Net実装中に起きた不可思議なエラー

mas_r

総合スコア0

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

0グッド

0クリップ

投稿2020/04/26 01:06

編集2020/04/26 01:09

前提・実現したいこと

KerasのFunctional APIでセマンティックセグメンテーションのU-Netを実装しようとしていた途中に起きたエラーです。
モデルを学習させ、テスト画像で推論しようとしていたときに以下のエラーメッセージが発生しました。
入力画像の大きさは512x512です。
実装は主にこのサイトをもとに行いました。

発生している問題・エラーメッセージ

WARNING:tensorflow:Model was constructed with shape (None, 512, 512, 3) for input Tensor("input_1:0", shape=(None, 512, 512, 3), dtype=float32), but it was called on an input with incompatible shape (32, 512, 3) ValueError: in user code: /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1150 predict_function * outputs = self.distribute_strategy.run( /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:951 run ** return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2290 call_for_each_replica return self._call_for_each_replica(fn, args, kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2649 _call_for_each_replica return fn(*args, **kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1125 predict_step ** return self(x, training=False) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py:927 __call__ outputs = call_fn(cast_inputs, *args, **kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/network.py:719 call convert_kwargs_to_constants=base_layer_utils.call_context().saving) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/network.py:888 _run_internal_graph output_tensors = layer(computed_tensors, **kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py:886 __call__ self.name) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/input_spec.py:180 assert_input_compatibility str(x.shape.as_list())) ValueError: Input 0 of layer conv2d is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [32, 512, 3]

該当のソースコード

入力画像を簡単なものに置き換えて試しましたが、同様のエラーが出ました。
簡単のため、そちらのコードを載せます。

python

1test = np.zeros((512, 512, 3), dtype=np.int32) 2predict = model.predict(test)

モデル自体のinput/outputの形状も正しいと思われます。

Model: "model" Layer (type) Output Shape Param # Connected to input_1 (InputLayer) [(None, 512, 512, 3) 0 (略) conv2d_18 (Conv2D) (None, 512, 512, 1) 65 conv2d_17[0][0]

試したこと

入力画像の形を変化させてみると以下のようにエラーの最後の部分が変わりました。

  • 512x500
Full shape received: [32, 500, 3]
  • 500x512
Full shape received: [None, 512, 3]
  • 500x500
Full shape received: [None, 500, 3]
  • 1024x1024
Full shape received: [32, 1024, 3]

補足情報(FW/ツールのバージョンなど)

google colab
tensorflow2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

predictの引数に画像のリストではなく、1枚の画像だけを入れていたために起きたようです。
お時間取らせました

投稿2020/04/26 03:12

mas_r

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問