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

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

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

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

Q&A

解決済

1回答

1274閲覧

kerasを試してみたいがエラーが出る

miraimirai

総合スコア39

Keras

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

1グッド

0クリップ

投稿2022/12/13 09:33

編集2022/12/13 09:37

前提

サイトの丸写しをしていたところ、エラーが発生しました。
https://www.sejuku.net/blog/53512

実現したいこと

エラーが発生しなくなり、サイトのコードが動作すること。

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

x_train shape: (60000, 28, 28, 1) 60000 train samples 10000 test samples --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /var/folders/1b/4r83ph916kb86bjsvm74d7740000gn/T/ipykernel_1047/3293630069.py in <module> 42 model.add(Dense(num_classes, activation='softmax')) 43 ---> 44 model.compile(loss=keras.losses.categorical_crossentropy, 45 optimizer=Adadelta(), 46 metrics=['accuracy']) /usr/local/lib/python3.9/site-packages/tensorflow/python/keras/engine/training.py in compile(self, optimizer, loss, metrics, loss_weights, weighted_metrics, run_eagerly, steps_per_execution, **kwargs) 571 self._run_eagerly = run_eagerly 572 --> 573 self.optimizer = self._get_optimizer(optimizer) 574 self.compiled_loss = compile_utils.LossesContainer( 575 loss, loss_weights, output_names=self.output_names) /usr/local/lib/python3.9/site-packages/tensorflow/python/keras/engine/training.py in _get_optimizer(self, optimizer) 609 return opt 610 --> 611 return nest.map_structure(_get_single_optimizer, optimizer) 612 613 @trackable.no_automatic_dependency_tracking /usr/local/lib/python3.9/site-packages/tensorflow/python/util/nest.py in map_structure(func, *structure, **kwargs) 867 868 return pack_sequence_as( --> 869 structure[0], [func(*x) for x in entries], 870 expand_composites=expand_composites) 871 /usr/local/lib/python3.9/site-packages/tensorflow/python/util/nest.py in <listcomp>(.0) 867 868 return pack_sequence_as( --> 869 structure[0], [func(*x) for x in entries], 870 expand_composites=expand_composites) 871 /usr/local/lib/python3.9/site-packages/tensorflow/python/keras/engine/training.py in _get_single_optimizer(opt) 600 601 def _get_single_optimizer(opt): --> 602 opt = optimizers.get(opt) 603 if (loss_scale is not None and 604 not isinstance(opt, lso.LossScaleOptimizer)): /usr/local/lib/python3.9/site-packages/tensorflow/python/keras/optimizers.py in get(identifier) 129 return deserialize(config) 130 else: --> 131 raise ValueError( 132 'Could not interpret optimizer identifier: {}'.format(identifier)) ValueError: Could not interpret optimizer identifier: <keras.optimizer_v2.adadelta.Adadelta object at 0x139ae80d0>

該当のソースコード

python

1'''Trains a simple convnet on the MNIST dataset. 2Gets to 99.25% test accuracy after 12 epochs 3(there is still a lot of margin for parameter tuning). 416 seconds per epoch on a GRID K520 GPU. 5''' 6 7from __future__ import print_function 8from tensorflow.keras.utils import to_categorical 9from tensorflow.keras.optimizers import Adadelta 10from tensorflow.python.keras.datasets import mnist 11from tensorflow.python.keras.models import Sequential 12from tensorflow.python.keras.layers import Dense, Dropout, Flatten 13from tensorflow.python.keras.layers import Conv2D, MaxPooling2D 14from tensorflow.python.keras import backend as K 15 16batch_size = 128 17num_classes = 10 18epochs = 12 19 20# input image dimensions 21img_rows, img_cols = 28, 28 22 23# the data, split between train and test sets 24(x_train, y_train), (x_test, y_test) = mnist.load_data() 25 26if K.image_data_format() == 'channels_first': 27 x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols) 28 x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols) 29 input_shape = (1, img_rows, img_cols) 30else: 31 x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1) 32 x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1) 33 input_shape = (img_rows, img_cols, 1) 34 35x_train = x_train.astype('float32') 36x_test = x_test.astype('float32') 37x_train /= 255 38x_test /= 255 39print('x_train shape:', x_train.shape) 40print(x_train.shape[0], 'train samples') 41print(x_test.shape[0], 'test samples') 42 43# convert class vectors to binary class matrices 44y_train = to_categorical(y_train, num_classes) 45y_test = to_categorical(y_test, num_classes) 46 47model = Sequential() 48model.add(Conv2D(32, kernel_size=(3, 3), 49 activation='relu', 50 input_shape=input_shape)) 51model.add(Conv2D(64, (3, 3), activation='relu')) 52model.add(MaxPooling2D(pool_size=(2, 2))) 53model.add(Dropout(0.25)) 54model.add(Flatten()) 55model.add(Dense(128, activation='relu')) 56model.add(Dropout(0.5)) 57model.add(Dense(num_classes, activation='softmax')) 58 59model.compile(loss=keras.losses.categorical_crossentropy, 60 optimizer=Adadelta(), 61 metrics=['accuracy']) 62 63model.fit(x_train, y_train, 64 batch_size=batch_size, 65 epochs=epochs, 66 verbose=1, 67 validation_data=(x_test, y_test)) 68score = model.evaluate(x_test, y_test, verbose=0) 69print('Test loss:', score[0]) 70print('Test accuracy:', score[1])

試したこと

以下のサイトを参考にエラーを直していきました。
https://keras.io/ja/optimizers/#adadelta
https://bobbyhadz-com.translate.goog/blog/python-attributeerror-module-keras-utils-has-no-attribute-to-categorical?_x_tr_sl=en&_x_tr_tl=ja&_x_tr_hl=ja&_x_tr_pto=sc

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

jupyter notebookで作業しています。

import tensorflow as tf print(tf.__version__) # 1.5.0

を実行したところ2.6.0と出ました。

miraimirai👍を押しています

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

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

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

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

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

jbpb0

2022/12/13 09:46

from tensorflow.python.keras.datasets import mnist from tensorflow.python.keras.models import Sequential from tensorflow.python.keras.layers import Dense, Dropout, Flatten from tensorflow.python.keras.layers import Conv2D, MaxPooling2D from tensorflow.python.keras import backend as K ↓ 変更 import tensorflow as tf from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout, Flatten from tensorflow.keras.layers import Conv2D, MaxPooling2D from tensorflow.keras import backend as K model.compile(loss=keras.losses.categorical_crossentropy, ↓ 変更 model.compile(loss=tf.keras.losses.categorical_crossentropy, で、どうでしょうか?
miraimirai

2022/12/13 21:38

変更点 from __future__ import print_function from tensorflow.keras.utils import to_categorical from tensorflow.keras.optimizers import Adadelta from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout, Flatten from tensorflow.keras.layers import Conv2D, MaxPooling2D from tensorflow.keras import backend as K from tensorflow.keras.losses import categorical_crossentropy model.compile(loss=categorical_crossentropy(), optimizer=Adadelta(), metrics=['accuracy']) 上記のように変更したところ以下のエラーが発生しました。 x_train shape: (60000, 28, 28, 1) 60000 train samples 10000 test samples --------------------------------------------------------------------------- TypeError Traceback (most recent call last) /var/folders/1b/4r83ph916kb86bjsvm74d7740000gn/T/ipykernel_1109/3977368573.py in <module> 42 model.add(Dense(num_classes, activation='softmax')) 43 ---> 44 model.compile(loss=categorical_crossentropy(), 45 optimizer=Adadelta(), 46 metrics=['accuracy']) /usr/local/lib/python3.9/site-packages/tensorflow/python/util/dispatch.py in wrapper(*args, **kwargs) 204 """Call target, and fall back on dispatchers if there is a TypeError.""" 205 try: --> 206 return target(*args, **kwargs) 207 except (TypeError, ValueError): 208 # Note: convert_to_eager_tensor currently raises a ValueError, not a TypeError: categorical_crossentropy() missing 2 required positional arguments: 'y_true' and 'y_pred'
miraimirai

2022/12/13 21:46

loss=categorical_crossentropyに変更したところ実行できました。
miraimirai

2022/12/13 22:03

loss=categorical_crossentropyの意味を教えてもらえませんか?
miraimirai

2022/12/14 00:56

kerasのドキュメントを読んだら解決しました。損失関数を設定しているのですね。
guest

回答1

0

ベストアンサー

python

1from tensorflow.python.keras.datasets import mnist 2from tensorflow.python.keras.models import Sequential 3from tensorflow.python.keras.layers import Dense, Dropout, Flatten 4from tensorflow.python.keras.layers import Conv2D, MaxPooling2D 5from tensorflow.python.keras import backend as K

↓ 変更

python

1import tensorflow as tf 2from tensorflow.keras.datasets import mnist 3from tensorflow.keras.models import Sequential 4from tensorflow.keras.layers import Dense, Dropout, Flatten 5from tensorflow.keras.layers import Conv2D, MaxPooling2D 6from tensorflow.keras import backend as K

 

python

1model.compile(loss=keras.losses.categorical_crossentropy,

↓ 変更

python

1model.compile(loss=tf.keras.losses.categorical_crossentropy,

投稿2022/12/17 00:21

jbpb0

総合スコア7651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問