python - Tensorflow AutoEncoder:当前的实现还不支持批量和深度维度的步幅
问题描述
我正在尝试创建一个自动编码器解码器框架。下面是我正在使用的代码
# Define convolution layers
def conv(layer_name, input_X, shape, strides, padding = "SAME"):
with tf.variable_scope(layer_name):
W = tf.get_variable("W", shape = shape, dtype=tf.float32)
return tf.nn.conv2d(input_X, W, strides, padding), W
# Layer1 convolution
encoder_layer1, W1 = conv("encode_layer1", X, [28, 28, 1, 10], [2,2,2,2])
我收到以下错误
InvalidArgumentError (see above for traceback): Current implementation does not yet support strides in the batch and depth dimensions.
[[Node: encode_layer1/Conv2D = Conv2D[T=DT_FLOAT, data_format="NHWC", dilations=[1, 1, 1, 1], padding="SAME", strides=[2, 2, 2, 2], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](_arg_X_0_0, encode_layer1/W/read)]]
解决方案
从Tensorflow 文档中查看:
必须有 strides[0] = strides[3] = 1。对于相同水平和顶点 strides 的最常见情况,strides = [1, stride, stride, 1]。
strides[0] 是批处理维度,而 strides[3] 是通道(或深度)维度。
尝试将步幅设置为 [1, 2, 2, 1]。
推荐阅读
- jquery - 在所有输入和文本字段中粘贴时删除所有空格和纯文本
- reactjs - 如何使用一个 div 在 ReactJS 选项卡中输出动态内容?
- mysql - 如何获得多层次营销(树)子数量
- c# - 如何修复“需要一个值但请求中不存在值”异常?
- javascript - 当点击事件发生类更改时,如何使用 document.getElementsByClassName 获取元素?
- mysql - MySQL返回我只想设置值的数据
- django - 登录后 Django 2.1 测试用例客户端未经授权
- java - JSON 注入将未经验证的输入写入 JSON
- php - 当通过 Ajax 进行 POST 时,Laravel 5.6 CSRF 令牌失败
- algorithm - 烛台价格图表中的高/低检测