【问题标题】:Input 0 of layer "sequential_23" is incompatible with the layer: expected shape=(None, 1797, 8, 8), found shape=(None, 8, 8)层“sequential_23”的输入 0 与层不兼容:预期形状=(None, 1797, 8, 8),找到的形状=(None, 8, 8)
【发布时间】:2022-12-11 07:46:20
【问题描述】:

当我适合我的模型时有一个 vallueError:“层“sequential_41”的输入 0 与层不兼容:预期形状=(无,1347,8,8),找到形状=(无,8,8) 这是我的代码。

from sklearn.datasets import load_digits
digits=load_digits()
digits.keys()
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(digits.images,digits.target)

model1=keras.Sequential([
    keras.layers.Conv2D(filters=32,kernel_size=(3,3),input_shape=(1347,8,8),activation='relu'),
    keras.layers.MaxPooling2D(2,2),

    keras.layers.Flatten(),
    keras.layers.Dense(50,activation='relu'),
    keras.layers.Dense(10,activation='sigmoid')

])
model1.compile(optimizer='SGD',
    loss='sparse_categorical_crossentropy',
             metrics=['accuracy'])

当我尝试拟合我的模型时出现错误

model1.fit(x_train,y_train,epochs=10)

【问题讨论】:

  • 常见的误解,你给出了错误的输入形状,它不应该包含样本维度。
  • 我给图像形状 1347,8,8
  • 我知道,那是错误的,应该是 (8, 8)
  • 然后我收到此错误:ValueError:层“conv2d_58”的输入 0 与层不兼容:预期 min_ndim = 4,发现 ndim = 3。已收到完整形状:(无、8、8)

标签: python tensorflow machine-learning keras deep-learning


【解决方案1】:

使用 (8, 8, 1) 和 softmax 的输入形状作为输出层的激活函数。这是一个工作示例:

from sklearn.datasets import load_digits
import tensorflow as tf

digits=load_digits()
digits.keys()
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(digits.images,digits.target)

model1=tf.keras.Sequential([
    tf.keras.layers.Conv2D(filters=32,kernel_size=(3,3),input_shape=(8, 8, 1),activation='relu'),
    tf.keras.layers.MaxPooling2D(2,2),

    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(50,activation='relu'),
    tf.keras.layers.Dense(10,activation='softmax')

])
model1.compile(optimizer='SGD',
    loss='sparse_categorical_crossentropy',
             metrics=['accuracy'])
model1.fit(x_train,y_train,epochs=10)

【讨论】:

    【解决方案2】:

    调整图像大小以匹配模型的预期大小:

    img = cv2.resize(img,(240,240))
    

    返回具有 TF 想要的形状的图像:

    img = img.reshape(1,240,240,3)
    

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 1970-01-01
      • 2022-01-26
      • 2021-03-22
      • 1970-01-01
      • 2021-04-23
      • 2022-06-15
      • 2022-06-21
      • 2023-01-30
      相关资源
      最近更新 更多