我想了解Upsampling2D
图层在keras
中的工作原理,因此我制作了单层Sequential
模型。
trial = Sequential()
trial.add(UpSampling2D(size=(2, 2) , input_shape = (100,100,1)))
输入是一个随机数组:
x = random.normal(0 , 1 , size = (100,100,1))
解释程序报告以下错误:
ValueError: Error when checking : expected up_sampling2d_7_input to have 4 dimensions, but got array with shape (100, 100, 1)
我只是尝试使用上采样层对图像进行上采样。我该如何修复错误?或者还有其他方法可以实现同样的目标吗?
将keras
与TensorFlow
后端
答案 0 :(得分:2)
Keras
按批处理数据。默认情况下,第一个维度是批量大小。在这种情况下,批处理是您要上采样的图像数。如果您只想对单个图像进行上采样,请按以下方式定义输入:
x = random.normal(0 , 1 , size = (1, 100,100,1))
它应该有用。
这是一个有效的例子:
from keras.models import Sequential
from keras.layers import UpSampling2D
import numpy as np
from matplotlib import pyplot
trial = Sequential()
trial.add(UpSampling2D(size=(2,2), input_shape=(100,100,1))
x = np.random.normal(0, 1, size=(1,100,100,1))
x_up = trial.predict(x)
fig, ax = pyplot.subplots(1, 2)
ax[0].imshow(x[0 , : , : , 0])
ax[1].imshow(x_up[0 , : , : , 0])
pyplot.show()