對輸入的重構(gòu)通過編碼器和解碼器完成窃判。例如:
obs —encoder—> state presentation —decoder—> obs_reconstruction
根據(jù)既有網(wǎng)絡(luò)層(編碼器)構(gòu)建解碼器時徘铝,根據(jù)編碼器的變量shape確定對應(yīng)的解碼器output_shape. For example:
# encoder
conv1 = layers.conv2d(
num_filters=32, filter_size=8, stride=4, padding=1, act='relu')
conv2 = layers.conv2d(
num_filters=64, filter_size=4, stride=2, padding=2, act='relu')
conv3 = layers.conv2d(
num_filters=64, filter_size=3, stride=1, padding=0, act='relu')
fc = layers.fc(size=512, act='relu')
# normally, we flatten input before **fc**, and reshape before **defc**
# decoder
defc = layers.fc(size=5184, act='relu')
deconv3 = layers.conv2d_transpose(
num_filters=64, filter_size=3, stride=1, padding=0, act='relu')
deconv2 = layers.conv2d_transpose(
num_filters=32, filter_size=4, stride=2, padding=2, act='relu')
deconv1 = layers.conv2d_transpose(
num_filters=4, filter_size=8, stride=4, padding=0, act='relu')
參數(shù)詳情可參考https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/dygraph_cn.html#conv2dtranspose