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

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

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

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

Google Colaboratory

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

Python

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

解決済

Google ColaboratoryでCNNを動かすとエラーが起きる

ice_Deep
ice_Deep

総合スコア0

Keras

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

Google Colaboratory

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

Python

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

1回答

0評価

1クリップ

2297閲覧

投稿2019/05/14 11:32

pythonでCNNの勉強をしています。

pycharmでCNNを動かした際には動作の確認はできましたが、colabで実行した際にはエラーが起きました。

これはcolabの不具合なのでしょうか?
それともcolabとpycharmの違いによってなにかの記述方法が間違ってるのでしょうか?

※以前は動かせたのですが、パラメータを調整していたら、動かなくなりました。

python

!pip install -U -q PyDrive from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from google.colab import auth from oauth2client.client import GoogleCredentials auth.authenticate_user() gauth = GoogleAuth() gauth.credentials = GoogleCredentials.get_application_default() drive = GoogleDrive(gauth) id = '' # 共有リンクで取得した id= より後の部分 downloaded = drive.CreateFile({'id': id}) downloaded.GetContentFile('Group1.zip') !unzip Group1.zip id = '' # 共有リンクで取得した id= より後の部分 downloaded = drive.CreateFile({'id': id}) downloaded.GetContentFile('Group2.zip') !unzip Group2.zip id = '' # 共有リンクで取得した id= より後の部分 downloaded = drive.CreateFile({'id': id}) downloaded.GetContentFile('Group3.zip') !unzip Group3.zip from sklearn.model_selection import train_test_split from PIL import Image import glob from keras.utils import np_utils from keras.models import Sequential from keras.layers import Dense, Activation, Dropout, Flatten,Conv2D, MaxPooling2D from keras.layers.normalization import BatchNormalization import numpy as np import matplotlib.pyplot as plt folder = ["Group1", "Group2", "Group3"] image_size = 100 class_num = 3 X = [] Y = [] for index, name in enumerate(folder): dir = "./" + name files = glob.glob(dir + "/*.jpg") for i, file in enumerate(files): image = Image.open(file) image = image.convert("RGB") image = image.resize((image_size, image_size)) data = np.asarray(image) X.append(data) Y.append(index) X = np.array(X) Y = np.array(Y) X = X.astype('float32') X = X / 255.0 # 正解ラベルの形式を変換 Y = np_utils.to_categorical(Y, class_num) # 学習用データとテストデータ X_train, x_test, Y_train, y_test = train_test_split(X, Y, test_size=0.15) x_train, x_val, y_train, y_val = train_test_split(X_train, Y_train, test_size=0.1) # CNNを構築 model = Sequential() model.add(Conv2D(filters=96, kernel_size=(11, 11), padding='same', input_shape=(image_size, image_size, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(BatchNormalization()) model.add(Conv2D(filters=256, kernel_size=(11, 11), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(BatchNormalization()) model.add(Conv2D(filters=385, kernel_size=(3, 3), activation='relu')) model.add(BatchNormalization()) model.add(Conv2D(filters=385, kernel_size=(3, 3), activation='relu')) model.add(BatchNormalization()) model.add(Conv2D(filters=256, kernel_size=(3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2))) model.add(Conv2D(filters=385, kernel_size=(3, 3), activation='relu')) model.add(BatchNormalization()) model.add(Flatten()) model.add(Dense(4096, activation='relu')) model.add(Dropout(0.4)) model.add(BatchNormalization()) model.add(Dense(4096, activation='relu')) model.add(Dropout(0.4)) model.add(BatchNormalization()) model.add(Dense(1000, activation='relu')) model.add(Dropout(0.4)) model.add(BatchNormalization()) model.add(Dense(class_num, activation='softmax')) model.summary() model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) epochs = 1 batch_size = 32 history = model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, validation_data=(x_val, y_val)) #評価 & 評価結果出力 print('loss, accc', model.evaluate(x_test, y_test)) loss = history.history['loss'] val_loss = history.history['val_loss'] epochs = len(loss) plt.plot(range(epochs), loss, marker = '.', label = 'loss') plt.plot(range(epochs), val_loss, marker = '.', label = 'val_loss') plt.legend(loc = 'best') plt.grid() plt.xlabel('epoch') plt.ylabel('loss') #plt.savefig('epochs.pdf') plt.show()引用テキスト acc = history.history['acc'] val_acc = history.history['val_acc'] epochs = len(acc) plt.plot(range(epochs), acc, marker = '.', label = 'acc') plt.plot(range(epochs), val_acc, marker = '.', label = 'val_acc') plt.legend(loc = 'best') plt.grid() plt.xlabel('epoch') plt.ylabel('acc') #plt.savefig('epochs.pdf') plt.show()

error

ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape (0, 1)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

amahara_waya
amahara_waya

2019/05/15 06:31

具体的にどの行でエラーが発生してるかわかりますか? 現段階の考察としては、エラーを見るに行列サイズが適切になってないみたいなので、エラー箇所周辺の配列を見るとなにか分かるかもしれません。 あるいは、エラー時の行列サイズが\(0,1\)なので、どこかの関数の出力がうまくできてないのかもしれないです。
ice_Deep
ice_Deep

2019/05/15 10:05

ValueError Traceback \(most recent call last\) <ipython-input-6-631444ddef6e> in <module>\(\) 66 67 #history = model\.fit\(x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, validation_data=\(x_val, y_val\)\) ---> 68 history = model\.fit\(x_train, y_train, epochs=15, batch_size=128, shuffle=True, validation_data=\(x_val, y_val\)\) 69 70 2 frames /usr/local/lib/python3\.6/dist-packages/keras/engine/training\.py in fit\(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, \*\*kwargs\) 950 sample_weight=sample_weight, 951 class_weight=class_weight, --> 952 batch_size=batch_size\) 953 # Prepare validation data\. 954 do_validation = False /usr/local/lib/python3\.6/dist-packages/keras/engine/training\.py in _standardize_user_data\(self, x, y, sample_weight, class_weight, check_array_lengths, batch_size\) 749 feed_input_shapes, 750 check_batch_axis=False, # Don't enforce the batch size\. --> 751 exception_prefix='input'\) 752 753 if y is not None: /usr/local/lib/python3\.6/dist-packages/keras/engine/training_utils\.py in standardize_input_data\(data, names, shapes, check_batch_axis, exception_prefix\) 126 ': expected ' \+ names\[i\] \+ ' to have ' \+ 127 str\(len\(shape\)\) \+ ' dimensions, but got array ' --> 128 'with shape ' \+ str\(data_shape\)\) 129 if not check_batch_axis: 130 data_shape = data_shape\[1:\] ValueError: Error when checking input: expected conv2d_1_input to have 4 dimensions, but got array with shape \(0, 1\) 見づらくてすいません。 このような感じでエラーになってます。 pycharmで動作は確認できてるので、やはりどこかの出力がうまくいっていないのが有力ですかね

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Keras

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

Google Colaboratory

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

Python

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