tensorflow遇到的坑

tensorflow遇到的坑

  1. tf.norm

    norm_pow_2 = tf.pow(tf.norm(from_centralized, axis=[1, 2]), 2) # norm: sqrt(sum(square(tensor)))
    norm_pow_2 = tf.reduce_sum(tf.square(from_centralized), axis=[1, 2]) # norm: sqrt(sum(square(tensor)))
    以上两个结果一样。

  2. No OpKernel was registered to support Op ‘StridedSlice’ with these attrs
    No OpKernel was registered to support Op ‘StridedSlice’ with these attrs. Registered devices: [CPU], Registered kernels:
    device=‘CPU’; T in [DT_BOOL]
    device=‘CPU’; T in [DT_FLOAT]
    device=‘CPU’; T in [DT_INT32]
    这是因为在移植到android上时,设备不支持64位的运算,这里记录下我遇到的坑:
    tf.argmax(output, axis=0) 默认返回 int64 的数据, 所有 tf.argmax(output, axis=0, output_type=tf.int32) 就可以了

  3. c#调用tensorflow模型并使用GPU
    1).在visual studio解决方案中安装tensorflow Sharp Nuget包。构建解决方案时,可以在项目输出目录中找到名为libtensorflow.dll的文件。如果它不在那里,您可以从包\TensorFlowSharp.1.12.0\runtime文件夹中检索该文件,并手动复制到您的输出目录。该文件是核心库的主要部分,默认情况下,它只支持CPU。
    2).利用python的pip download tensorflow-gpu 命令下载whl包。
    3).解压缩您刚刚下载的WHL文件(您可以使用7-zip进行此操作)。找到“_pywrap_tensorflow_internal.pyd”文件,将其重命名为libtensorflow.dll,并将其复制到tensorflow Sharp项目的debug/release文件夹中。或者按下图操作
    tensorflow遇到的坑_第1张图片

你可能感兴趣的:(tensorflow,tensorflowsharp)