当前位置:  开发笔记 > 编程语言 > 正文

TensorFlow - 'Split'Op的输入'split_dim'的类型为float32,与int32的预期类型不匹配

如何解决《TensorFlow-'Split'Op的输入'split_dim'的类型为float32,与int32的预期类型不匹配》经验,为你挑选了2个好方法。

我在ubuntu 16.04 LTS上使用pip安装了tensorflow,运行此代码时https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/recurrent_network.py我收到此错误

Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes. 
Extracting /tmp/data/train-images-idx3-ubyte.gz 
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes. Extracting /tmp/data/train-labels-idx1-ubyte.gz 
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes. 
Extracting /tmp/data/t10k-images-idx3-ubyte.gz
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes. 
Extracting /tmp/data/t10k-labels-idx1-ubyte.gz 
Traceback (most recent call last): 
    File "deep.py", line 71, in 
        pred = RNN(x, weights, biases)   
    File "deep.py", line 60, in RNN
        x = tf.split(x, n_steps, 0)   
    File "/home/newuser/.local/lib/python2.7/site-packages/tensorflow/python/ops/array_ops.py", line 1234, in split
        name=name)   
    File "/home/newuser/.local/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 3241, in _split
    num_split=num_split, name=name)   
    File "/home/newuser/.local/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 508, in apply_op
    (prefix, dtypes.as_dtype(input_arg.type).name)) 
TypeError: Input 'split_dim' of 'Split' Op has type float32 that does not match expected type of int32.

alphaleonis.. 36

看起来您使用的是旧版Tensorflow,需要更新到Tensorflow v0.12.0或更高版本.您得到的错误是指示函数中的split_dimtf.split期望一个整数,但是正在接收xfloat32类型的张量.

这是因为在Tensorflow版本<0.12.0中,split函数将参数视为:

x = tf.split(0, n_steps, x) # tf.split(axis, num_or_size_splits, value)

您正在使用的教程是针对版本> 0.12.0编写的,该版本已更改为与Numpy的拆分语法一致:

x = tf.split(x, n_steps, 0) # tf.split(value, num_or_size_splits, axis)

有关详细信息,请参阅更改日志:https: //github.com/tensorflow/tensorflow/blob/64edd34ce69b4a8033af5d217cb8894105297d8a/RELEASE.md



1> alphaleonis..:

看起来您使用的是旧版Tensorflow,需要更新到Tensorflow v0.12.0或更高版本.您得到的错误是指示函数中的split_dimtf.split期望一个整数,但是正在接收xfloat32类型的张量.

这是因为在Tensorflow版本<0.12.0中,split函数将参数视为:

x = tf.split(0, n_steps, x) # tf.split(axis, num_or_size_splits, value)

您正在使用的教程是针对版本> 0.12.0编写的,该版本已更改为与Numpy的拆分语法一致:

x = tf.split(x, n_steps, 0) # tf.split(value, num_or_size_splits, axis)

有关详细信息,请参阅更改日志:https: //github.com/tensorflow/tensorflow/blob/64edd34ce69b4a8033af5d217cb8894105297d8a/RELEASE.md



2> 小智..:

这是因为参数顺序已经改变

您可以在此处查看问题:https://github.com/tensorflow/tensorflow/issues/6501


欢迎来到Stack Overflow!虽然这在理论上可以回答这个问题,[最好](// meta.stackoverflow.com/q/8259)在这里包含答案的基本部分,并提供参考链接.换句话说,解决方案是什么?
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有