正在学《Python深度学习》一书,其中第五章有一个例子是用CNN的方法给MNIST数据集分类,我在用书本里的范例代码的时候出现了问题UnimplementedError: Graph execution error:
已知这个例子的tensorflow版本是2.0,我的是2.8,可能是版本问题,可以问一下应该怎么修改吗?出现问题的原因是什么呢?谢谢
#Simple CNN
from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3,3), activation = 'relu', input_shape = (28, 28, 1)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation = 'relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3,3), activation = 'relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation = 'relu'))
model.add(layers.Dense(10, activation = 'softmax'))
model.summary()
from keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000,28,28,1))
train_images = train_images.astype('float32')/255
test_images = test_images.reshape((10000,28,28,1))
test_images = test_images.astype('float32')/255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
model.compile(optimizer = 'rmsprop', loss = 'categorical_crossentropy', metrics = ['accuracy'])
model.fit(train_images, train_labels, epochs=5, batch_size=64)
UnimplementedError Traceback (most recent call last)
(此处省略)
UnimplementedError: Graph execution error:
我尝试过改loss function 成sparse_categorical_crossentropy,不过报错结果还是一样,其他的我真的不知道怎么回事了,这是范例代码,应该是没问题的。
跑通就行
解决了吗?
我这里tensorflow 2.5.0不会报错,建议你把全部错误的截图粘贴上来
InvalidArgumentError: Graph execution error:
Detected at node 'sequential_1/flatten_1/Reshape' defined at (most recent call last):
File "C:\Users\123\anaconda3\envs\PyTorch\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\123\anaconda3\envs\PyTorch\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\ipykernel_launcher.py", line 16, in
app.launch_new_instance()
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\traitlets\config\application.py", line 846, in launch_instance
app.start()
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\ipykernel\kernelapp.py", line 677, in start
self.io_loop.start()
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\tornado\platform\asyncio.py", line 199, in start
self.asyncio_loop.run_forever()
File "C:\Users\123\anaconda3\envs\PyTorch\lib\asyncio\base_events.py", line 570, in run_forever
self._run_once()
File "C:\Users\123\anaconda3\envs\PyTorch\lib\asyncio\base_events.py", line 1859, in _run_once
handle._run()
File "C:\Users\123\anaconda3\envs\PyTorch\lib\asyncio\events.py", line 81, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\ipykernel\kernelbase.py", line 471, in dispatch_queue
await self.process_one()
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\ipykernel\kernelbase.py", line 460, in process_one
await dispatch(*args)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\ipykernel\kernelbase.py", line 367, in dispatch_shell
await result
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\ipykernel\kernelbase.py", line 662, in execute_request
reply_content = await reply_content
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\ipykernel\ipkernel.py", line 360, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\ipykernel\zmqshell.py", line 532, in run_cell
return super().run_cell(*args, **kwargs)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\IPython\core\interactiveshell.py", line 2880, in run_cell
result = self._run_cell(
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\IPython\core\interactiveshell.py", line 2935, in _run_cell
return runner(coro)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\IPython\core\async_helpers.py", line 129, in pseudo_sync_runner
coro.send(None)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\IPython\core\interactiveshell.py", line 3134, in run_cell_async
has_raised = await self.run_ast_nodes(code_ast.body, cell_name,
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\IPython\core\interactiveshell.py", line 3337, in run_ast_nodes
if await self.run_code(code, result, async=asy):
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\IPython\core\interactiveshell.py", line 3397, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "C:\Users\123\AppData\Local\Temp\ipykernel_17008\119083842.py", line 11, in <cell line: 11>
bottleneck_features_train=model.predict(generator,train_steps)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\utils\traceback_utils.py", line 64, in error_handler
return fn(*args, **kwargs)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\training.py", line 1982, in predict
tmp_batch_outputs = self.predict_function(iterator)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\training.py", line 1801, in predict_function
return step_function(self, iterator)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\training.py", line 1790, in step_function
outputs = model.distribute_strategy.run(run_step, args=(data,))
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\training.py", line 1783, in run_step
outputs = model.predict_step(data)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\training.py", line 1751, in predict_step
return self(x, training=False)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\utils\traceback_utils.py", line 64, in error_handler
return fn(*args, **kwargs)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\base_layer.py", line 1096, in call
outputs = call_fn(inputs, *args, **kwargs)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\utils\traceback_utils.py", line 92, in error_handler
return fn(*args, **kwargs)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\sequential.py", line 374, in call
return super(Sequential, self).call(inputs, training=training, mask=mask)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\functional.py", line 451, in call
return self._run_internal_graph(
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\functional.py", line 589, in _run_internal_graph
outputs = node.layer(*args, **kwargs)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\utils\traceback_utils.py", line 64, in error_handler
return fn(*args, **kwargs)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\engine\base_layer.py", line 1096, in call
outputs = call_fn(inputs, *args, **kwargs)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\utils\traceback_utils.py", line 92, in error_handler
return fn(*args, **kwargs)
File "C:\Users\123\anaconda3\envs\PyTorch\lib\site-packages\keras\layers\core\flatten.py", line 96, in call
return tf.reshape(inputs, flattened_shape)
Node: 'sequential_1/flatten_1/Reshape'
Input to reshape is a tensor with 270000 values, but the requested shape requires a multiple of 8192
[[{{node sequential_1/flatten_1/Reshape}}]] [Op:__inference_predict_function_32290]