【发布时间】:2020-09-11 15:50:02
【问题描述】:
在定义为允许访问构建操作的导入包和模型下方,
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np
import cv2
import os
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.preprocessing import image
from tensorflow.keras.optimizers import RMSpro
现在是创建模型的编码,我觉得描述模型太重要了,
重新缩放图像形状,
train = ImageDataGenerator(rescale=1/255)
validation = ImageDataGenerator(rescale=1/255)
修复数据集目录并访问数据,
train_dataset = train.flow_from_directory(
'cnn_happy_NotHapp/Basedata/training/',
target_size=(200,200),
batch_size = 3,
class_mode = 'binary')
validation_dataset = validation.flow_from_directory(
'cnn_happy_NotHapp/Basedata/validation/',
target_size=(200,200),
batch_size = 3,
class_mode = 'binary')
创建 CNN 模型
model = tf.keras.models.Sequential([tf.keras.layers.Conv2D(16,(3,3), activation='relu', input_shape=(200, 200, 3)),
tf.keras.layers.MaxPool2D(2,2),
##################################
tf.keras.layers.Conv2D(132,(3,3), activation='relu'),
tf.keras.layers.MaxPool2D(2,2),
##################################
tf.keras.layers.Conv2D(64,(3,3), activation='relu'),
tf.keras.layers.MaxPool2D(2,2),
##################################
tf.keras.layers.Flatten(),
###################################
tf.keras.layers.Dense(512, activation='relu'),
###################################
tf.keras.layers.Dense(1, activation='sigmoid'),
])
编译模型
model.compile(loss = 'binary_crossentropy',
optimizer = RMSprop(lr=0.001),
metrics = ['accuracy '])
适合模型,请注意这里,因为我在这里遇到了问题,
model_fit = model.fit(train_dataset,
steps_per_epoch=3,
epochs= 10,
validation_data = validation_dataset) #error is here
在错误部分下方,我要求所有 stactoverflow 成员 仔细阅读并帮助我解决此错误,
Epoch 1/10
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-17-85ae786a1bf1> in <module>()
2 steps_per_epoch=3,
3 epochs= 10,
----> 4 validation_data = validation_dataset)
3 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py in _call(self, *args, **kwds)
805 # In this case we have created variables on the first call, so we run the
806 # defunned version which is guaranteed to never create variables.
--> 807 return self._stateless_fn(*args, **kwds) # pylint: disable=not-callable
808 elif self._stateful_fn is not None:
809 # Release the lock early so that multiple threads can perform the call
TypeError: 'NoneType' object is not callable
注意:我遇到了这个错误,我无法解决它,非常感谢尝试解决它的人并在此处发表评论以分享答案
【问题讨论】:
-
不,我已经看到并试图理解,但我没有。
-
这似乎在告诉你
self._stateless_fn的值是None,当你把它当作一个函数并尝试调用它时,它不起作用。我不知道这里使用的模块,所以也许这不像我做的那么简单,但是......你的代码根本没有提到_stateless_fn,所以我们没有办法知道为什么是None。 -
Imdadul Haque,您的问题现在解决了吗?否则,请您分享完整的代码或 Colab 文件来复制您的问题。谢谢!
-
@ImdadulHaque 你解决了这个问题了吗?这似乎有点新,没有合适的答案。
标签: python tensorflow keras conv-neural-network