Python Tensorflow 2:NotImplementedError:numpy()仅在启用“急切执行”时可用
这段代码中有一个问题,我删除了Python Tensorflow 2:NotImplementedError:numpy()仅在启用“急切执行”时可用,python,artificial-intelligence,classification,tensorflow2,Python,Artificial Intelligence,Classification,Tensorflow2,这段代码中有一个问题,我删除了SeBlock类,然后运行CNN类,然后一切都好了。如果我将SeBlock插入CNN类,则会发生错误,并显示NotImplementedError。我不知道这个问题的原因,我试图解决这个问题,但我搜索的方法都不起作用。谁能帮帮我,非常感谢 import tensorflow as tf class SeBlock(tf.keras.Model): def __init__(self, ratio, channel): super(SeBl
SeBlock
类,然后运行CNN类,然后一切都好了。如果我将SeBlock
插入CNN
类,则会发生错误,并显示NotImplementedError
。我不知道这个问题的原因,我试图解决这个问题,但我搜索的方法都不起作用。谁能帮帮我,非常感谢
import tensorflow as tf
class SeBlock(tf.keras.Model):
def __init__(self, ratio, channel):
super(SeBlock, self).__init__()
self.kernel_initializer = tf.keras.initializers.VarianceScaling()
self.bias_initializer = tf.constant_initializer(value=0.0)
self.ratio = ratio
self.ReduceMean = tf.keras.layers.GlobalAveragePooling2D()
self.DenseCut = tf.keras.Sequential([
tf.keras.layers.Dense(units=channel,
activation=tf.nn.relu, kernel_initializer=self.kernel_initializer,
bias_constraint=self.bias_initializer),
tf.keras.layers.Dense(units=channel,
activation=tf.nn.sigmoid,
kernel_initializer=self.kernel_initializer,
bias_constraint=self.bias_initializer)
])
self.flatten = tf.keras.layers.Reshape(target_shape=(1, 1, channel,))
def call(self, inputs, training=True):
if training:print("training network")
x = self.ReduceMean(inputs)
x = self.DenseCut(x, training)
scale = self.flatten(x)
scale = tf.keras.layers.multiply([inputs,scale])
# scale *= inputs
return scale
class CNN(tf.keras.Model):
def __init__(self, se_block):
super(CNN, self).__init__()
self.conv1 = tf.keras.layers.Conv2D(
filters=32, #
kernel_size=[5, 5], #
padding='same', #
activation=tf.nn.relu #
)
self.seblock1 = self._make_layer(se_block= se_block, ratio=1, input_channel=32)
self.pool1 = tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2)
self.conv2 = tf.keras.layers.Conv2D(
filters=64,
kernel_size=[5, 5],
padding='same',
activation=tf.nn.relu
)
self.pool2 = tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2)
self.flatten = tf.keras.layers.Reshape(target_shape=(112 * 112 * 64,))
self.dense2 = tf.keras.layers.Dense(units=10)
def _make_layer(self, se_block, ratio, input_channel):
return tf.keras.Sequential([se_block(ratio=ratio,channel=input_channel)])
def call(self, inputs, training=True):
print("1",inputs.get_shape().as_list())
x = self.conv1(inputs) # [batch_size, 28, 28, 32]
# print("start se-block")
x = self.seblock1(x, training)
# print("end se-block")
x = self.pool1(x) # [batch_size, 14, 14, 32]
x = self.conv2(x) # [batch_size, 14, 14, 64]
x = self.pool2(x) # [batch_size, 7, 7, 64]
x = self.flatten(x) # [batch_size, 7 * 7 * 64]
x = self.dense2(x) # [batch_size, 10]
return tf.nn.softmax(x)
def CNNDense():
return CNN(SeBlock)
主要代码如下
错误信息如下所示
回溯(最近一次呼叫最后一次):
文件“C:\ProgramData\Anaconda3\lib\site packages\IPython\core\interactiveshell.py”,第3343行,运行代码
exec(代码对象、self.user\u全局、self.user\n)
文件“”,第1行,在
运行文件('E:/PythonProject/CNN\u training.py',wdir='E:/PythonProject')
文件“C:\Program Files\JetBrains\PyCharm 2020.3.5\plugins\python\helpers\pydev\\u pydev_bundle\pydev_umd.py”,第197行,在runfile中
pydev_imports.execfile(文件名、全局变量、本地变量)#执行脚本
文件“C:\Program Files\JetBrains\PyCharm 2020.3.5\plugins\python\helpers\pydev\\u pydev\u imps\\u pydev\u execfile.py”,execfile中第18行
exec(编译(内容+“\n”,文件,'exec'),全局,loc)
文件“E:/PythonProject/CNN_training.py”,第35行,在
模型拟合(ds_序列,历元=历元,每历元步数=历元步数,
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\keras\engine\training.py”,第1100行,格式为fit
tmp_logs=self.train_函数(迭代器)
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\eager\def\u function.py”,第828行,在调用中__
结果=自身调用(*args,**kwds)
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\eager\def_function.py”,第871行,在_调用中
self.\u初始化(参数、KWD、添加初始值设定项到=初始值设定项)
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\eager\def_function.py”,第725行,在_initialize中
self._stateful_fn._get_concrete_function_internal_garbage_collected(#pylint:disable=protected access
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\eager\function.py”,第2969行,位于“获取”\u具体”\u函数\u内部\u垃圾收集”中
图形函数,自变量。可能定义函数(args,kwargs)
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\eager\function.py”,第3361行,在函数定义中
graph\u function=self.\u create\u graph\u function(args,kwargs)
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\eager\function.py”,第3196行,在创建图形函数中
func_graph_module.func_graph_from_py_func(
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\framework\func\u graph.py”,第990行,位于func\u graph\u from\u py\u func
func_outputs=python_func(*func_args,**func_kwargs)
文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\eager\def_function.py”,第634行,包装为
out=弱包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹包裹
包装器中的文件“C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\framework\func_graph.py”,第977行
将e.ag\u错误\u元数据引发到\u异常(e)
未实现错误:在用户代码中:
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\keras\engine\training.py:805 train\u函数*
返回步骤_函数(self、迭代器)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\keras\engine\training.py:795 step\u函数**
输出=模型。分配策略。运行(运行步骤,参数=(数据,)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\distribute\distribute_lib.py:1259 run
返回self.\u扩展。为每个\u副本调用\u(fn,args=args,kwargs=kwargs)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\distribute\distribute\u lib.py:2730为每个\u副本调用\u
返回自我。为每个副本(fn、ARG、kwargs)调用
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\distribute\distribute\u lib.py:3417\u调用\u以获取每个\u副本
返回fn(*args,**kwargs)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\keras\engine\training.py:788 run\u步骤**
输出=型号列车步进(数据)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\keras\engine\training.py:757 train\u步骤
self.optimizer.minimize(损失,self.trainable_变量,磁带=磁带)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\keras\optimizer\u v2\optimizer\u v2.py:498
返回self.apply_渐变(渐变和变量,name=name)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\keras\optimizer\u v2\optimizer\u v2.py:631应用梯度
返回distribute\u ctx.get\u replica\u context().merge\u调用(
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\distribute\distribute\u lib.py:2941 merge\u调用
返回self.\u merge\u调用(merge\u fn、args、kwargs)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\distribute\distribute\u lib.py:2948\u merge\u调用
返回合并(自我策略,*args,**kwargs)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\keras\optimizer\u v2\optimizer\u v2.py:682\u distributed\u apply**
更新操作扩展(distribution.extended.update(
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\distribute\distribute_lib.py:2494更新
返回自我更新(变量、fn、参数、kwargs、组)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\distribute\distribute\u lib.py:3431\u update
返回self.\u更新\u非\u插槽(变量,fn,(变量,)+元组(args),kwargs,group)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\distribute\distribute\u lib.py:3437\u update\u non\u slot
结果=fn(*args,**kwargs)
C:\ProgramData\Anaconda3\lib\site packages\tensorflow\python\keras\optimizer\u v2\optimizer\u v2.py:661应用\u grad\u更新\u var**
返回变量赋值(v
import tensorflow as tf
import LoadImage as readimage
import DenseBSE
tf.keras.backend.clear_session()
train_path = r"E:\BaiduNetdiskDownload\板角\boardtrain"
test_path = r"E:\BaiduNetdiskDownload\板角\boardtest"
BatchSize = 4
Epoch = 60
lr = 0.001
ds_train, train_count = readimage.load_tensor_img(train_path,
batch_size=BatchSize,
epoch=Epoch)
ds_test, test_count = readimage.load_tensor_img(test_path,
batch_size=BatchSize,
epoch=Epoch)
model = DenseBSE.CNNDense()
model.build(input_shape=(BatchSize, 448, 448, 3))
model.summary()
model.compile(optimizer=tf.keras.optimizers.Adam(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
epoch_steps = train_count // BatchSize
val_steps = test_count // BatchSize
model.fit(ds_train, epochs=Epoch, steps_per_epoch = epoch_steps,
validation_data=ds_test, validation_steps = val_steps)
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 3343, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-2-41c34ae2b3b4>", line 1, in <module>
runfile('E:/PythonProject/CNN_training.py', wdir='E:/PythonProject')
File "C:\Program Files\JetBrains\PyCharm 2020.3.5\plugins\python\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "C:\Program Files\JetBrains\PyCharm 2020.3.5\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "E:/PythonProject/CNN_training.py", line 35, in <module>
model.fit(ds_train, epochs=Epoch, steps_per_epoch = epoch_steps,
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1100, in fit
tmp_logs = self.train_function(iterator)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\eager\def_function.py", line 828, in __call__
result = self._call(*args, **kwds)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\eager\def_function.py", line 871, in _call
self._initialize(args, kwds, add_initializers_to=initializers)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\eager\def_function.py", line 725, in _initialize
self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\eager\function.py", line 2969, in _get_concrete_function_internal_garbage_collected
graph_function, _ = self._maybe_define_function(args, kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\eager\function.py", line 3361, in _maybe_define_function
graph_function = self._create_graph_function(args, kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\eager\function.py", line 3196, in _create_graph_function
func_graph_module.func_graph_from_py_func(
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\func_graph.py", line 990, in func_graph_from_py_func
func_outputs = python_func(*func_args, **func_kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\eager\def_function.py", line 634, in wrapped_fn
out = weak_wrapped_fn().__wrapped__(*args, **kwds)
File "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\func_graph.py", line 977, in wrapper
raise e.ag_error_metadata.to_exception(e)
NotImplementedError: in user code:
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py:805 train_function *
return step_function(self, iterator)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py:795 step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:1259 run
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2730 call_for_each_replica
return self._call_for_each_replica(fn, args, kwargs)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:3417 _call_for_each_replica
return fn(*args, **kwargs)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py:788 run_step **
outputs = model.train_step(data)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\training.py:757 train_step
self.optimizer.minimize(loss, self.trainable_variables, tape=tape)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:498 minimize
return self.apply_gradients(grads_and_vars, name=name)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:631 apply_gradients
return distribute_ctx.get_replica_context().merge_call(
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2941 merge_call
return self._merge_call(merge_fn, args, kwargs)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2948 _merge_call
return merge_fn(self._strategy, *args, **kwargs)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:682 _distributed_apply **
update_ops.extend(distribution.extended.update(
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2494 update
return self._update(var, fn, args, kwargs, group)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:3431 _update
return self._update_non_slot(var, fn, (var,) + tuple(args), kwargs, group)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:3437 _update_non_slot
result = fn(*args, **kwargs)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\optimizer_v2\optimizer_v2.py:661 apply_grad_to_update_var **
return var.assign(var.constraint(var))
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\init_ops_v2.py:290 __call__
return constant_op.constant(self.value, dtype=dtype, shape=shape)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py:264 constant
return _constant_impl(value, dtype, shape, name, verify_shape=False,
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py:281 _constant_impl
tensor_util.make_tensor_proto(
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\tensor_util.py:454 make_tensor_proto
if shape is not None and np.prod(shape, dtype=np.int64) == 0:
<__array_function__ internals>:5 prod
C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py:2961 prod
return _wrapreduction(a, np.multiply, 'prod', axis, dtype, out,
C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py:90 _wrapreduction
return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:483 __array__
return np.asarray(self.numpy())
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:619 numpy
raise NotImplementedError(
NotImplementedError: numpy() is only available when eager execution is enabled.