アプリ版:「スタンプのみでお礼する」機能のリリースについて

------------------------------------------ code ---------------------------------------------------------

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import time
from tensorflow.python.keras.utils import np_utils
from tensorflow.python.keras.layers.convolutional import Conv2D, MaxPooling2D
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers.core import Dense, Dropout, Activation, Flatten
from tensorflow.python.keras.preprocessing.image import array_to_img, img_to_array, load_img, ImageDataGenerator
from tensorflow.python.keras import optimizers
from tensorflow.python.keras.optimizers import Adam
import sys
import os
import shutil
# データーセットがあるディレクトリ(このプログラムから見た相対パス)
dataset_root_dir = "./datasets"
labels = [d for d in os.listdir(dataset_root_dir)
if os.path.isdir(os.path.join(dataset_root_dir, d))]
labels.sort()

with open(dataset_root_dir + "/labels.txt","w") as f:
for label in labels:
f.write(label+"\n")

NUM_CLASSES = len(labels)
print("class number="+ str(NUM_CLASSES))

## 学習率 :学習が進むスピード
LEARNING_RATE = 0.0001
## エポック数(世代数):学習を繰り返す回数
EPOCHS = 20
## バッチサイズ :一度に学習させるデーターの数
BATCH_SIZE = 32

Image_Size = 64
dataset_dir = dataset_root_dir
train_data_gen = ImageDataGenerator(rescale=1./255, validation_split=0.33)
train_data = train_data_gen.flow_from_directory(dataset_dir,
subset="training",
target_size=(Image_Size, Image_Size),
color_mode="rgb",
batch_size=BATCH_SIZE,
class_mode="categorical",
shuffle=True)

validation_data = train_data_gen.flow_from_directory(dataset_dir,
subset="validation",
target_size=(Image_Size, Image_Size),
color_mode="rgb",
batch_size=BATCH_SIZE,
class_mode="categorical",
shuffle=True)
model = Sequential()
model.add(Conv2D(32, (3,3), padding="same",
input_shape=(Image_Size, Image_Size, 3)))
model.add(Activation("relu"))
model.add(Conv2D(64,(3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(128))
model.add(Activation("relu"))
model.add(Dropout(0.5))
model.add(Dense(NUM_CLASSES))
model.add(Activation("softmax"))

model.compile(optimizer=Adam(lr=LEARNING_RATE),
loss="categorical_crossentropy", metrics=["accuracy"])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-f3a03fe666d5> in <module>
40 model.add(Activation("softmax"))
41
---> 42 model.compile(optimizer=Adam(lr=LEARNING_RATE),
43 loss="categorical_crossentropy", metrics=["accuracy"])

..............................
ValueError: ('`tf.compat.v1.keras` Optimizer (', <tensorflow.python.keras.optimizers.Adam object at 0x7f4c586d28b0>, ') is not supported when eager execution is enabled. Use a `tf.keras` Optimizer instead, or disable eager execution.')


このようなエラーです。
Jupyter notebook を使用しています。
どうやって解決できるでしょうか?

A 回答 (1件)

データがないから再現出来ないんですが、エラーメッセージを読む限り、



> ValueError: ('`tf.compat.v1.keras` Optimizer (', <tensorflow.python.keras.optimizers.Adam object at 0x7f4c586d28b0>, ') is not supported when eager execution is enabled. Use a `tf.keras` Optimizer instead, or disable eager execution.')

テキトーな訳: tensorflow.python.keras.optimizers.Adamはeager execution可の場合、サポートされていません。Adamの代わりにtf.kerasオプティマイザーを利用するか、あるいはeager executionを止めて下さい。

と言うわけで、

model.compile(optimizer=Adam(lr=LEARNING_RATE),
loss="categorical_crossentropy", metrics=["accuracy"])

のoptimizer変数を変えればいい、ってエラーが教えてくれています。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!