六安门户网站建设哪家好,seo搜索引擎优化业务,游戏软件开发需要多少钱,做seo网站公司Ubuntu18.042070sTF2.x环境#xff0c;单卡训练PointNet实战 1. 编译tf_ops文件夹下的三个动态库2. 修改Python版本、TF版本不一致带来的差异3. 下载训练数据4. 模型训练 1. 编译tf_ops文件夹下的三个动态库
该文件夹下定义了一些pointnet模型中需要使用的cuda核函数#xf… Ubuntu18.042070sTF2.x环境单卡训练PointNet实战 1. 编译tf_ops文件夹下的三个动态库2. 修改Python版本、TF版本不一致带来的差异3. 下载训练数据4. 模型训练 1. 编译tf_ops文件夹下的三个动态库
该文件夹下定义了一些pointnet模型中需要使用的cuda核函数如FPS最远点采样、grouping等所以在训练模型前需要先编译这些自定义的op
具体操作 在每一个子文件夹中运行sh tf_xxx.sh 每个子文件夹中不一样tab一下就出来了。
有可能需要根据自己的环境对sh文件进行修改例如我的环境中cuda、tensorflow的版本、安装位置和作者都不一样因此进行了一些头文件、库文件的路径修改如下
#/bin/bash
/usr/local/cuda/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA1 -x cu -Xcompiler -fPIC
# 原命令 /usr/local/cuda-8.0/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA1 -x cu -Xcompiler -fPIC# TF1.2
g -stdc11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /home/hikai/.local/lib/python3.6/site-packages/tensorflow_core/include/ -I /usr/local/cuda/include -lcudart -L /usr/local/cuda/lib64/ -L /home/hikai/.local/lib/python3.6/site-packages/tensorflow_core/ -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI0#原命令
## TF1.2
## g -stdc11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -lcudart -L /usr/local/cuda-8.0/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI0# TF1.4
# g -stdc11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -I /usr/local/lib/python2.7/dist-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-8.0/lib64/ -L/usr/local/lib/python2.7/dist-packages/tensorflow -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI0
这里我增加了-ltensorflow_framework是因为我编译时报错 undefined symbol: _ZTIN10tensorflow8OpKernelE了。
也可以使用作者的全英ReadMe文档中推荐的方式 To compile the operators in TF version 1.4, you need to modify the compile scripts slightly.First, find Tensorflow include and library paths.TF_INC$(python -c import tensorflow as tf; print(tf.sysconfig.get_include()))TF_LIB$(python -c import tensorflow as tf; print(tf.sysconfig.get_lib()))Then, add flags of -I$TF_INC/external/nsync/public -L$TF_LIB -ltensorflow_framework to the g commands.编译完成 编译完成后每个子文件夹中会有对应的.so文件如下图所示
2. 修改Python版本、TF版本不一致带来的差异
由于原作者用的python版本为2 我用的是3 因此所有print后面需要加括号 xrange也要改为range
原作者使用的是TF1.x我用的是TF2.X, 因此直接在开头import tensorflow.compat.v1 as tf了
或许还有其他差异如果编译或运行报错也可以优先考虑一下是不是版本差异导致的问题
3. 下载训练数据
我是用normal数据训练的用wget下载一下就好
wget https://shapenet.cs.stanford.edu/media/modelnet40_normal_resampled.zip4. 模型训练
最后使用python train.py --normal 就可以训练了。
我直接进行训练时由于使用normal的数据维度是6的 在shape方面报了个不匹配的错于是做了如下修改保障代码可运行 # cur_batch_data np.zeros((BATCH_SIZE,NUM_POINT,TRAIN_DATASET.num_channel()))cur_batch_data np.zeros((BATCH_SIZE,NUM_POINT,3))# 略去...# 改为只取前3列cur_batch_data[0:bsize,...] batch_data[:,:,0:3]# cur_batch_data[0:bsize,...] batch_data改的比较暴力还没来得及细看有可能其实是应该指定其他参数来解决这个问题的后续如果发现了再来矫正。
最后模型就可以训起来啦如下~