我使用小图片修补程序培训了一个(only-convs)网络,现在我在更大的图像上使用它。它工作得很好,除了当图像大得多时,我最终会失去记忆。
有没有办法预测网络输出而不保存中间状态(用于计算反向传递?)。
我只需要前向传递的输出,而我根本没有用于后向传递的渐变(网络已经训练过)。
Ps:我已经尝试将更大的图像分割成补丁,但这样做会破坏空间相关性(特别是在每个补丁的边界上)。
编辑:我发布了用于预测给定img的函数(python中的代码)。它需要img,调整到适当的形状和值范围,预测和返回:
def predictImg(img_name,autoencoder):
img = np.asarray(Image.open(img_name)).astype('float32')
img2 = np.expand_dims(np.transpose(img.astype('float32')[:,:,:3],(2,0,1))/255.0,0) # setting up for shape (sample,channels,x,y), ranging between [0,1]
prediction = autoencoder.predict(img2)
return np.transpose(np.round(np.clip(prediction[0]*255,0,255)),(1,2,0)) # getting a [0,255] image (discretized color values)