【发布时间】:2019-12-18 01:34:48
【问题描述】:
我正在尝试使用下面的代码行解码位图
img = tf.image.decode_bmp(img, channels=3)
使用.map 函数从中创建图像/标签对的 tf.dataset
test_labeled_ds = test_list_ds.map(process_path)
并将其输入model.fit
model.fit(test_labeled_ds, epochs=10, validation_data=val_labeled_ds)
使用下面的模型架构
i = Input(shape=(40,40,3))
x = Conv2D(32, (3,3), strides=2, activation='relu') (i)
x = Conv2D(64, (3,3), strides=2, activation='relu') (x)
x = Conv2D(128, (3,3), strides=2, activation='relu') (x)
x = Flatten()(x)
x = Dense(512, activation = 'relu')(x)
x = Dropout(0.2)(x)
x = Dense(5, activation ='softmax')(x)
model = Model(i, x)
但是当我运行model.fit 时,我收到以下错误
ValueError:检查输入时出错:预期 input_1 有 4 尺寸,但得到形状为 (40, 40, 3) 的数组
我尝试将输入形状更改为诸如i = Input(shape=(1,40,40,3)) 之类的东西
但后来我在模型中得到了一个不同的错误:
ValueError: 层 conv2d_3 的输入 0 与层不兼容: 预期 ndim=4,发现 ndim=5。收到的完整形状:[None, 1, 40, 40, 3]
所以看起来 tf.dataset 实际上是 4dims 并且我的输入应该按照 (40, 40, 3) 指定为 3dims 是正确的
那么为什么这不起作用呢? 在将数据集对象提供给模型之前,我是否必须对它做一些事情?
【问题讨论】:
标签: tensorflow-datasets bmp tensorflow2.0