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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

496閲覧

Google Colab 画像分類 VGG16を用いた転移学習を実装したい

makuro-rinrin

総合スコア1

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/09/19 14:43

前提

GoogleColabで画像分類を試しています。
YouTubeの動画を参考にしながら進めていたところ、エラーで躓きました。
参考YouTube→https://youtu.be/i3ZIRJYlzkU
精度の確認を実装中に以下のエラーメッセージが発生しました。

ソースコード①学習データとテストデータに分ける

#テストデータが2割、学習データが8割に自動で分ける X_train, X_test, y_train, y_test=train_test_split(X,Y,test_size=0.2) print(X_train.shape) print(X_test.shape) print(y_train.shape) print(y_test.shape)

ソースコード②学習モデルの準備

from keras.applications.vgg16 import VGG16 from keras.models import Sequential from keras.models import model_from_json from keras.models import Model from keras.layers import Input,Activation,merge,Dense,Flatten,Dropout from tensorflow.keras.optimizers import Adam #vgg16をベースモデルとして読み込む input_tensor=Input(shape=(244,244,3)) base_model=VGG16(weights='imagenet',input_tensor=input_tensor,include_top=False) #後付け→トップモデルを2クラスに変更する top_model=Sequential() top_model.add(Flatten(input_shape=base_model.output_shape[1:])) top_model.add(Dense(n_classes,activation='softmax')) #がっちゃんこ→新しい学習モデル model=Model(inputs=base_model.input,outputs=top_model(base_model.output)) #学習させない層→頭から15層までは学習しなくていい for layer in model.layers[:15]: layer.trainable=False print('#layers=',len(model.layers)) model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy']) model.summary() #layers= 20 20層 #Total params: 14,764,866 #Trainable params: 7,129,602→ #Non-trainable params: 7,635,264

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

Epoch 1/20 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-14-f1ea30a5d471> in <module> 1 #trainデータで学習 ----> 2 model.fit (X_train,y_train,epochs=20, batch_size=16) 3 #テストデータで精度確認 4 score=model.evaluate(X_test,y_test,batch_size=16) 1 frames /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in autograph_handler(*args, **kwargs) 1145 except Exception as e: # pylint:disable=broad-except 1146 if hasattr(e, "ag_error_metadata"): -> 1147 raise e.ag_error_metadata.to_exception(e) 1148 else: 1149 raise ValueError: in user code: File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1021, in train_function * return step_function(self, iterator) File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1010, in step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 1000, in run_step ** outputs = model.train_step(data) File "/usr/local/lib/python3.7/dist-packages/keras/engine/training.py", line 859, in train_step y_pred = self(x, training=True) File "/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py", line 67, in error_handler raise e.with_traceback(filtered_tb) from None File "/usr/local/lib/python3.7/dist-packages/keras/engine/input_spec.py", line 264, in assert_input_compatibility raise ValueError(f'Input {input_index} of layer "{layer_name}" is ' ValueError: Input 0 of layer "model" is incompatible with the layer: expected shape=(None, 244, 244, 3), found shape=(None, 224, 224, 3)

該当のソースコード

#trainデータで学習 model.fit (X_train,y_train,epochs=20, batch_size=16) #テストデータで精度確認 score=model.evaluate(X_test,y_test,batch_size=16)

試したこと

別のノートで再度実行→エラー

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

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

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

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

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

jbpb0

2022/09/19 15:10

> print(X_train.shape) を実行したら、何て表示されましたでしょうか?
makuro-rinrin

2022/09/19 15:13

ありがとうございます。 上から、 (132, 224, 224, 3) (33, 224, 224, 3) (132, 2) (33, 2) です。
jbpb0

2022/09/19 15:18

> (132, 224, 224, 3) なら、 > input_tensor=Input(shape=(244,244,3)) の二つの「244」は「224」でしょう
makuro-rinrin

2022/09/19 15:29

あ!そうでした!無事に実行できました! 改めてコードの見直しの大切さを実感しました。 ありがとうございます!
guest

回答1

0

ベストアンサー

print(X_train.shape)

を実行したら

(132, 224, 224, 3)

なら、

input_tensor=Input(shape=(244,244,3))

の二つの「244」は「224」

投稿2022/09/21 01:21

jbpb0

総合スコア7651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問