警告:tensorflow:顺序模型中的层应该只有一个输入张量

问题描述 投票:0回答:1

我已经从tensorflow网站的自动编码器简介第一个示例中复制了过去的代码以下代码适用于mnist时尚数据集,但不适用于我的。这给了我一个很长的警告。请告诉我我的数据集有什么磨损 警告 屏幕上缺少同样的错误

这里

x_train
是我的数据集:

tf.shape(x_train)

output <tf.Tensor: shape=(3,), dtype=int32, numpy=array([169,**  **28,  28])>

这里

x_train
是mnist数据集:

tf.shape(x_train)

output<tf.Tensor: shape=(3,), dtype=int32, numpy=array([60000,    28,    28])>

我制作数据集的全部代码:

dir_path='auto/ttt/'
data=[]
x_train=[]
for i in os.listdir(dir_path):
    img=image.load_img(dir_path+'//'+i,color_mode='grayscale',target_size=(28,28))  
    data=np.array(img)
    data=data/255.0
    x_train.append(data)

这是警告:

WARNING:tensorflow:Layers in a Sequential model should only have a single input tensor. Received: inputs=(<tf.Tensor 'IteratorGetNext:0' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:1' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:2' shape=(None, 28) 
dtype=float32>, <tf.Tensor 'IteratorGetNext:3' shape=(None, 28) 
dtype=float32>, <tf.Tensor 'IteratorGetNext:4' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:5' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:6' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:7' shape=(None, 28) dtype=flo...

还有这个值错误(相同的警告):

ValueError: Exception encountered when calling layer "sequential_4" (type Sequential).
        
Layer "flatten_2" expects 1 input(s), but it received 169 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:1' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:2' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:3' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:4' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:5' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:6' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:7' shape=(None, 28) dtype=float32>, <tf.Tensor 'IteratorGetNext:8' shape=(None, 28) dtype=float3...
python tensorflow machine-learning dataset sequential
1个回答
4
投票

model.fit()
给出一个数组列表作为输入。当模型有多个输入时,通常会将数组列表传递给 fit()。在这种情况下,fit() 方法将每个数组视为输入,从而导致错误。

请按如下方式将数据转换为张量,然后重试。

x_train=tf.convert_to_tensor(x_train) 

请参阅要点以获取完整代码。

© www.soinside.com 2019 - 2024. All rights reserved.