#不知道为啥使用tf.data.Dataset.from_tensor_slices后,model.fit就报错?WARNING:tensorflow:Model was constructed with shape (None, 28, 28) for input KerasTensor(type_spec=TensorSpec(shape=(None, 28, 28), dtype=tf.float32, name='flatten_5_input'), name='flatten_5_input', description="created by layer 'flatten_5_input'"), but it was called on an input with incompatible shape (28, 28).
#代码如下:#用简单的fashion_minist练习 tf.data使用
i
mport tensorflow as tf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
(train_image,train_label),(test_image,test_label)=tf.keras.datasets.fashion_mnist.load_data()
train_images=train_image/255.0
test_images=test_image/255.0
train_data=tf.data.Dataset.from_tensor_slices((train_images,train_label))
model=tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
model.add(tf.keras.layers.Dense(128,activation='relu'))
model.add(tf.keras.layers.Dense(10,activation='softmax'))
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['acc'])
model.fit(train_image,train_label,epochs=10)
出现错误如下
WARNING:tensorflow:Model was constructed with shape (None, 28, 28) for input KerasTensor(type_spec=TensorSpec(shape=(None, 28, 28), dtype=tf.float32, name='flatten_5_input'), name='flatten_5_input', description="created by layer 'flatten_5_input'"), but it was called on an input with incompatible shape (28, 28).
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[25], line 1
----> 1 model.fit(train_data,epochs=10)
File C:\ProgramData\Anaconda3\envs\my_tensorflow\lib\site-packages\keras\utils\traceback_utils.py:70, in filter_traceback.<locals>.error_handler(*args, **kwargs)
67 filtered_tb = _process_traceback_frames(e.__traceback__)
68 # To get the full stack trace, call:
69 # `tf.debugging.disable_traceback_filtering()`
---> 70 raise e.with_traceback(filtered_tb) from None
71 finally:
72 del filtered_tb
File C:\Users\ADMINI~1\AppData\Local\Temp\__autograph_generated_fileou1x0wq7.py:15, in outer_factory.<locals>.inner_factory.<locals>.tf__train_function(iterator)
13 try:
14 do_return = True
---> 15 retval_ = ag__.converted_call(ag__.ld(step_function), (ag__.ld(self), ag__.ld(iterator)), None, fscope)
16 except:
17 do_return = False
ValueError: in user code:
File "C:\ProgramData\Anaconda3\envs\my_tensorflow\lib\site-packages\keras\engine\training.py", line 1249, in train_function *
return step_function(self, iterator)
File "C:\ProgramData\Anaconda3\envs\my_tensorflow\lib\site-packages\keras\engine\training.py", line 1233, in step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
File "C:\ProgramData\Anaconda3\envs\my_tensorflow\lib\site-packages\keras\engine\training.py", line 1222, in run_step **
outputs = model.train_step(data)
File "C:\ProgramData\Anaconda3\envs\my_tensorflow\lib\site-packages\keras\engine\training.py", line 1023, in train_step
y_pred = self(x, training=True)
File "C:\ProgramData\Anaconda3\envs\my_tensorflow\lib\site-packages\keras\utils\traceback_utils.py", line 70, in error_handler
raise e.with_traceback(filtered_tb) from None
File "C:\ProgramData\Anaconda3\envs\my_tensorflow\lib\site-packages\keras\engine\input_spec.py", line 277, in assert_input_compatibility
raise ValueError(
ValueError: Exception encountered when calling layer 'sequential_5' (type Sequential).
Input 0 of layer "dense_12" is incompatible with the layer: expected axis -1 of input shape to have value 784, but received input with shape (28, 28)
Call arguments received by layer 'sequential_5' (type Sequential):
• inputs=tf.Tensor(shape=(28, 28), dtype=float64)
• training=True
• mask=None
不知道你这个问题是否已经解决, 如果还没有解决的话: