我使用的是Tensorflow 1.9.0版本,该版本是通过AVX支持构建的,但是当我将项目打包到EXE中并在另一台机器上进行测试时,由于该机器上没有AVX支持,它崩溃了。所以我恢复到Tensorflow 1.5,它工作正常。 现在的问题是,在运行时动态检测到机器中的AVX支持后,我可以切换到所需的Tensorflow版本吗。
我不知道如何切换版本,所以没有尝试,但是我正在检测AVX支持。像这样
>>> import cpuinfo
>>> cpuinfo.get_cpu_info()
{'python_version': '3.6.5.final.0 (64 bit)',
'cpuinfo_version': [5, 0, 0], 'arch': 'X86_64', 'bits': 64, 'count': 4, 'raw_arch_string': 'AMD64', 'vendor_id': 'GenuineIntel',
'brand': 'Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz', 'hz_advertised': '2.3000 GHz', 'hz_actual': '1.6000 GHz', 'hz_advertised_raw': [2300000000, 0], 'hz_actual_raw': [1600000000, 0], 'l2_cache_size': '512 KB', 'stepping': 7, 'model': 42, 'family': 6, 'l3_cache_size': '3072 KB',
'flags': ['acpi', 'apic', 'avx', 'clflush', 'cmov', 'cx16', 'cx8', 'de', 'ds_cpl', 'dtes64', 'dts', 'est', 'fpu', 'fxsr', 'ht', 'ia64', 'lahf_lm', 'mca', 'mce', 'mmx', 'monitor', 'msr', 'mtrr', 'osxsave', 'pae', 'pat', 'pbe', 'pcid', 'pclmulqdq', 'pdcm', 'pge', 'pni', 'popcnt', 'pse', 'pse36', 'sep', 'serial', 'ss', 'sse', 'sse2', 'sse4_1', 'sse4_2', 'ssse3', 'tm', 'tm2', 'tsc', 'tscdeadline', 'vme', 'vmx', 'x2apic', 'xsave', 'xtpr'],
'l2_cache_line_size': 6, 'l2_cache_associativity': '0x100', 'extended_model': 2}
我想在同一个EXE中打包(支持AVX和不受支持的)两个版本,并根据需要使用它。任何其他建议都欢迎。 谢谢
答案 0 :(得分:0)
您的问题包含部分答案。从cpuinfo.get_cpu_info()
中,您将获取是否支持AVX(在“标志”中提到)。因此,您可以在python代码本身内部安装所需的软件包(有关详细信息,请参见Installing python module within code)。
或者,您可以从终端执行相同的操作。 grep flags /proc/cpuinfo
将为您提供受支持的标志。根据是否存在avx,创建一个脚本来安装适当版本的tensorflow