簡體   English   中英

為tf.nn.conv1d添加了意外尺寸

[英]Unintentional dimension added for tf.nn.conv1d

我輸入給tf.nn.conv1d()的兩個張量分別是xkernel ,其大小分別為[16,512,32]和[1,1,32]。 我已經能夠在本地計算機上運行此代碼,但是在遠程集群上運行它時出現錯誤。

我收到一個值錯誤,指出尺寸必須相等。 該消息顯示xkernel的最終形狀分別為[16,1,512,32]和[1,1,1,32]。

  1. 兩台機器都運行相同版本的tensorflow-gpu-1.14.0python-3.6
  2. 我已經打印了張量形狀,並確認它們是預期的尺寸。

下面顯示了我在代碼中調用的包裝器: input_dim = 32 filter_size =1 input_dim = 32 output_dim = 32

     def conv1d_linear(self,x, filter_size,input_dim,output_dim,stride=1,name = 'conv1d_linear'):
        with tf.variable_scope(name):
            # Conv1D wrapper, with bias and no activation
            print(x)
            kernel = tf.get_variable('kernel', shape = [filter_size, input_dim, output_dim],initializer=tf.contrib.layers.xavier_initializer())
            print(kernel)
            bias =  tf.get_variable('bias', shape = [output_dim],initializer=tf.contrib.layers.xavier_initializer())
            x = tf.nn.conv1d(x, kernel, stride=stride, padding='SAME')
            x = tf.nn.bias_add(x, bias)
            x = tf.contrib.layers.batch_norm(x)
            return x 

錯誤信息

Using TensorFlow backend.
Tensorflow Version: 1.14.0
Building model...
Tensor("stfnet/resstack0/stft_pool0/Relu:0", shape=(16, 512, 32), dtype=float32, device=/device:GPU:0)
<tf.Variable 'stfnet/resstack1/init_conv_lin0/kernel:0' shape=(1, 1, 32) dtype=float32_ref>
Traceback (most recent call last):
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1659, in _create_c_op
    c_op = c_api.TF_FinishOperation(op_desc)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Dimensions must be equal, but are 32 and 1 for 'stfnet/resstack1/init_conv_lin0/conv1d/Conv2D' (op: 'Conv2D') with input shapes: [16,1,512,32], [1,1,1,32].

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/nv/hp20/nblinn6/data/MODID_mystfresnet6_final_PB_2gpu.py", line 529, in <module>
    mymodel.train_init()
  File "/nv/hp20/nblinn6/data/MODID_mystfresnet6_final_PB_2gpu.py", line 413, in train_init
    self.logits_train = self.ModIDNet(self.batch_feature[0:int(self.gpu_batch_size)],self.tau,self.keep_rate,train = True,reuse = reuse_flg,name = 'stfnet')
  File "/nv/hp20/nblinn6/data/MODID_mystfresnet6_final_PB_2gpu.py", line 340, in ModIDNet
    x = self.resstack(x,tau,self.sensor_axis,self.maps[1],reuse = reuse,series_size = 512,name = 'resstack1')   
  File "/nv/hp20/nblinn6/data/MODID_mystfresnet6_final_PB_2gpu.py", line 310, in resstack
    x1 = self.conv1d_linear(x,1,map_in,map_out, name = 'init_conv_lin0')
  File "/nv/hp20/nblinn6/data/MODID_mystfresnet6_final_PB_2gpu.py", line 302, in conv1d_linear
    x = tf.nn.conv1d(x, kernel, stride=stride, padding='SAME')
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 574, in new_func
    return func(*args, **kwargs)
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 574, in new_func
    return func(*args, **kwargs)
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/ops/nn_ops.py", line 3482, in conv1d
    data_format=data_format)
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/ops/gen_nn_ops.py", line 1026, in conv2d
    data_format=data_format, dilations=dilations, name=name)
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 788, in _apply_op_helper
    op_def=op_def)
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
    return func(*args, **kwargs)
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3300, in create_op
    op_def=op_def)
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1823, in __init__
    control_input_ops)
  File "/nv/hp20/nblinn6/.conda/envs/mytfenv/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1662, in _create_c_op
    raise ValueError(str(e))
ValueError: Dimensions must be equal, but are 32 and 1 for 'stfnet/resstack1/init_conv_lin0/conv1d/Conv2D' (op: 'Conv2D') with input shapes: [16,1,512,32], [1,1,1,32].

我重新安裝了tensorflow-gpu==1.14.0版本,作為故障排除步驟,它現在似乎可以正常工作。 不確定最初的問題是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM