【问题标题】:Tensorflow, expected conv2d_input to have 4 dimensionsTensorflow,预期 conv2d_input 有 4 个维度
【发布时间】:2019-05-06 15:21:31
【问题描述】:

我正在使用tf.keras,但出现以下错误:

ValueError: 检查输入时出错:预期 conv2d_input 有 4 个维度,但得到的数组的形状为 (24946, 50, 50)

有人可以帮我吗?

代码(Image_Size 为:50x50

import tensorflow as tf
import numpy as np
import pickle
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D


pickle_ind = open("x.pickle", "rb")
x = pickle.load(pickle_ind)
x = np.array(x, dtype=float)
# x = x/255.0

pickle_ind = open("y.pickle", "rb")
y = pickle.load(pickle_ind)

n_batch = len(x)

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(50, 50, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))

model.summary()

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

model.fit(x, y, epochs=20, batch_size=n_batch)

【问题讨论】:

    标签: python python-3.x tensorflow keras


    【解决方案1】:

    添加channels维度:

    x = np.expand_dims(x, -1)
    

    你还需要添加输出密集层:

    model = Sequential()
    model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(50, 50, 1)))
    model.add(MaxPooling2D((2, 2)))
    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(MaxPooling2D((2, 2)))
    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(Flatten())
    model.add(Dense(2, activation='softmax'))
    model.compile(optimizer='adam',
                  loss='sparse_softmax_crossentropy',
                  metrics=['accuracy'])
    

    【讨论】:

    • 你好,我得到了这个(ValueError:形状为 (24946, 1) 的目标数组被传递给形状为 (None, 9, 9, 64) 的输出,同时用作损失 binary_crossentropy。这种损失期望目标具有与输出相同的形状。)
    • 我尝试添加您添加的内容,我得到了这个:ValueError: A target array with shape (24946, 1) was passed for an output of shape (None, 2) while using as loss @987654325 @。这种损失期望目标具有与输出相同的形状。
    • 刚刚又更新了。最好这样使用它
    • 谢谢,但现在又出现了一个错误,我的下一步(cuda 错误:s)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    相关资源
    最近更新 更多