Numpy 如何修复AttributeError:';非类型';对象没有属性';原始名称、范围和x27;给我的CNN?

Numpy 如何修复AttributeError:';非类型';对象没有属性';原始名称、范围和x27;给我的CNN?,numpy,tensorflow,keras,conv-neural-network,Numpy,Tensorflow,Keras,Conv Neural Network,我试图学习如何创建一个简单的卷积神经网络,但我遇到了一个错误: AttributeError:'NoneType'对象没有属性'original\u name\u scope' 我不知道为什么会这样。早些时候,我制作了一个多层感知器作为我的模型,有四层(没有代码的数据预处理部分中的np.reformate部分),而不是这个CNN模型,它工作得很好。我希望能得到一些帮助 这是我的密码: import tensorflow as tf import numpy as np import matplo

我试图学习如何创建一个简单的卷积神经网络,但我遇到了一个错误:

AttributeError:'NoneType'对象没有属性'original\u name\u scope'

我不知道为什么会这样。早些时候,我制作了一个多层感知器作为我的模型,有四层(没有代码的数据预处理部分中的
np.reformate
部分),而不是这个CNN模型,它工作得很好。我希望能得到一些帮助

这是我的密码:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import random

# ****** load data ******
mnist_dataset = tf.keras.datasets.mnist
(train_images, train_labels), (test_images, test_labels) = mnist_dataset.load_data()

# ****** label list ******
class_names = ['Zero', 'One', 'Two', 'Three', 'Four',
               'Five', 'Six', 'Seven', 'Eight', 'Nine']

# ****** preprocess data ******
# scale RGB values from 0 to 1
train_images = train_images / 255.0
test_images = test_images / 255.0

# reshape data to fit model
train_images = train_images.reshape(-1, 28, 28, 1)
test_images = test_images.reshape(-1, 28, 28, 1)

# ****** build the model ******
model = tf.keras.Sequential()

# input layer
model.add(tf.keras.layers.Conv2D(64, kernel_size=(5, 5)))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Activation(tf.nn.relu))

# hidden layer 1
model.add(tf.keras.layers.Conv2D(32, kernel_size=(5, 5)))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Activation(tf.nn.relu))

# hidden layer 2
model.add(tf.layers.Flatten())
model.add(tf.keras.layers.Dense(100))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Activation(tf.nn.relu))

# output layer
model.add(tf.keras.layers.Dense(10))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Activation(tf.nn.softmax))

# ****** configure how model is updated, how model minimizes
# loss, and what to monitor ******
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# ****** feed training data to the model ******
model.fit(train_images, train_labels, epochs=5)

# ****** compare how model performs on test dataset ******
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f'Test accuracy: {test_acc}')

# ****** make predictions about some images ******
predictions = model.predict(test_images)
print(f'shape of prediction data: {predictions.shape}')
编辑:

以下是完整的回溯:

Traceback (most recent call last):
  File "/Users/MyName/Documents/PythonWorkspace/LearningTensorflow/test.py", line 62, in <module>
    model.fit(train_images, train_labels, epochs=5)
  File "/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 776, in fit
    shuffle=shuffle)
  File "/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 2289, in _standardize_user_data
    self._set_inputs(cast_inputs)
  File "/anaconda3/lib/python3.6/site-packages/tensorflow/python/training/checkpointable/base.py", line 442, in _method_wrapper
    method(self, *args, **kwargs)
  File "/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 2529, in _set_inputs
    outputs = self.call(inputs, training=training)
  File "/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/sequential.py", line 233, in call
    inputs, training=training, mask=mask)
  File "/anaconda3/lib/python3.6/site-packages/tensorflow/python/keras/engine/sequential.py", line 253, in _call_and_compute_mask
    with ops.name_scope(layer._name_scope()):
  File "/anaconda3/lib/python3.6/site-packages/tensorflow/python/layers/base.py", line 284, in _name_scope
    return self._current_scope.original_name_scope
AttributeError: 'NoneType' object has no attribute 'original_name_scope'
回溯(最近一次呼叫最后一次):
文件“/Users/MyName/Documents/PythonWorkspace/LearningTensorflow/test.py”,第62行,在
model.fit(序列图像、序列标签、时代=5)
文件“/anaconda3/lib/python3.6/site packages/tensorflow/python/keras/engine/training.py”,第776行
洗牌
文件“/anaconda3/lib/python3.6/site packages/tensorflow/python/keras/engine/training.py”,第2289行,在用户数据中
自设置输入(转换输入)
文件“/anaconda3/lib/python3.6/site packages/tensorflow/python/training/checkpointable/base.py”,第442行,在方法包装中
方法(self、*args、**kwargs)
文件“/anaconda3/lib/python3.6/site packages/tensorflow/python/keras/engine/training.py”,第2529行,在“集合”输入中
输出=自我呼叫(输入,培训=培训)
文件“/anaconda3/lib/python3.6/site packages/tensorflow/python/keras/engine/sequential.py”,第233行,在调用中
输入,培训=培训,面罩=面罩)
文件“/anaconda3/lib/python3.6/site packages/tensorflow/python/keras/engine/sequential.py”,第253行,在调用和计算掩码中
使用ops.name\u scope(layer.\u name\u scope()):
文件“/anaconda3/lib/python3.6/site packages/tensorflow/python/layers/base.py”,第284行,在\u name\u范围内
返回self.\u当前\u范围。原始\u名称\u范围
AttributeError:“非类型”对象没有“原始\u名称\u范围”属性

您忘记了展平层的关键字。 它应该是
model.add(tf.keras.layers.flatte())


请包含完整的回溯,而不是
model.add(tf.layers.flatte())

请包含完整的回溯,不清楚问题的原因。请选中“编辑”,已包含完整的回溯。该错误在
fit
调用中很深。因此不太可能是
keres
编码错误。我会根据文档仔细检查该调用的输入。可能是配置问题,而不是数据问题。我很确定这不是我的配置问题,它在我之前使用多层感知器作为模型时工作得非常好。此外,在我查看的所有地方,它都说我需要做的就是将训练数据和训练图像传递到
fit()
函数中,并指定纪元数。@parrot15看一下: