Tensorflow与TFlearn报错:意外参数'keepdims'(Jetson Tx1运行异常)
我先梳理下你的情况:TensorFlow在Tx1上能正常运行,Mac上的代码也没问题,但Tx1上执行tflearn.regression()时在loss函数环节报错。结合Jetson平台的特性,大概率是版本兼容或者参数适配的问题,给你几个排查方向:
1. 检查TFlearn和TensorFlow的版本兼容性
Jetson Tx1上的TensorFlow是针对ARM架构编译的,版本可能和你Mac上的不一样,而TFlearn对TensorFlow的版本有严格依赖。比如旧版TFlearn(如0.3.x系列)只支持TensorFlow 1.x,如果你Tx1上装的是TensorFlow 2.x,肯定会出现兼容问题。
- 先在Tx1上执行命令查看版本:
pip3 show tensorflow tflearn - 对比Mac上的版本,如果差异较大,建议匹配兼容版本。比如Tx1上是TensorFlow 1.15的话,就安装适配的TFlearn稳定版:
pip3 install tflearn==0.5.0
2. 显式指定loss函数,避免默认值的兼容问题
你当前代码里没指定loss参数,tflearn.regression默认会用categorical_crossentropy,但不同环境下对标签数据的格式校验严格程度可能不同。比如如果你的标签不是one-hot编码,或者输入张量维度和标签不匹配,Tx1上的环境可能会触发报错,而Mac上的环境刚好兼容了这种不规范。
建议显式指定loss函数,同时确认标签数据格式:
# 二分类问题可指定binary_crossentropy net = tflearn.regression(net, optimizer='adam', learning_rate=0.00001, loss='binary_crossentropy') # 多分类场景:标签是one-hot用categorical_crossentropy,整数标签用sparse_categorical_crossentropy
3. 检查依赖库的版本一致性
Jetson Tx1上的numpy、scipy等基础库版本可能和Mac上不同,这些库的差异可能导致张量处理时出错。比如numpy版本过低,对某些张量操作的支持不足。
- 执行
pip3 list查看Tx1上的numpy版本,对比Mac上的版本,尽量保持一致。如果Tx1上的numpy版本太旧,可升级:pip3 install --upgrade numpy
4. 补全完整报错信息
你提供的报错信息截断了,/usr/local/lib/pytho...后面的内容是定位问题的关键,能明确是哪个loss函数出问题,以及具体错误原因(比如张量维度不匹配、函数不存在等)。建议重新运行代码,把完整的Traceback贴出来,这样能更精准地解决问题。
内容的提问来源于stack exchange,提问作者Gustav Oskarsson

