【问题标题】:Keras on Apple M1苹果 M1 上的 Keras
【发布时间】:2021-12-29 12:14:44
【问题描述】:

我正在我的 Apple M1 系统上运行以下命令。

---------代码开始----------

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense, Activation, BatchNormalization

model = Sequential()

model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_CHANNELS)))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax')) # 2 because we have cat and dog classes

model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])

model.summary()

FAST_RUN = True
epochs=3 if FAST_RUN else 50

history = model.fit_generator(
    train_generator, 
    epochs=epochs,
    validation_data=validation_generator,
    validation_steps=size_test//batch_size,
    steps_per_epoch=size_train//batch_size,
    callbacks=callbacks
)

----------------代码结束------

它给了我以下我无法弄清楚的错误。

----------------错误开始---------

1157               callbacks.on_train_batch_begin(step)
-> 1158               tmp_logs = self.train_function(iterator)
   1159               if data_handler.should_sync:
   1160                 context.async_wait()

~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/eager/def_function.py in __call__(self, *args, **kwds)
    887 
    888       with OptionalXlaContext(self._jit_compile):
--> 889         result = self._call(*args, **kwds)
    890 
    891       new_tracing_count = self.experimental_get_tracing_count()

~/miniforge3/envs/tensorflow/lib/python3.9/site-packages/tensorflow/python/eager/def_function.py in _call(self, *args, **kwds)
    915       # In this case we have created variables on the first call, so we run the
    916       # defunned version which is guaranteed to never create variables.
--> 917       return self._stateless_fn(*args, **kwds)  # pylint: disable=not-callable
    918     elif self._stateful_fn is not None:
    919       # Release the lock early so that multiple threads can perform the call

TypeError: 'NoneType' object is not callable

--------------错误结束-----

我应该怎么做才能解决这个问题?

【问题讨论】:

    标签: python tensorflow keras apple-m1


    【解决方案1】:

    您需要在下面这两行中进行一些更改,因为您说它是类别 2 binary_class model (0,1)。

    model.add(Dense(1, activation='sigmoid')) # 1 because you have cat and dog classes(0,1)
    model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
    

    还可以尝试更改以下代码,因为 steps_per_epochvalidation_steps 计数不正确。您可以查看此link 了解更多信息。

    history = model.fit(
        train_generator, 
        epochs=epochs,
        validation_data=validation_generator)
        #validation_steps=size_test//batch_size,
        #steps_per_epoch=size_train//batch_size)
    

    如果问题仍然存在,请告诉我们。

    【讨论】:

      猜你喜欢
      • 2022-05-20
      • 2021-12-19
      • 1970-01-01
      • 2021-04-22
      • 2021-09-08
      • 2021-06-12
      • 2021-08-17
      • 2022-02-09
      • 2021-10-07
      相关资源
      最近更新 更多