Apple M4芯片上TensorFlow非线性(Sigmoid)神经网络分类结果异常
TensorFlow在Apple M芯片上非线性分类结果异常问题
我使用TensorFlow进行Sigmoid非线性神经网络分类时,出现结果异常的情况,怀疑是Apple M芯片或环境配置导致。已尝试miniforge、miniconda、conda等多种环境版本,并在conda环境中安装了tensorflow-macos和tensorflow-metal。
系统环境
- MacBook Pro(Apple M4芯片),系统Sequoia 15.1.1
- Python平台:macOS-15.1.1-arm64-arm-64bit
- TensorFlow版本:2.16.2
- Keras版本:3.7.0
- Python版本:3.10.16 | conda-forge打包 | (main, Dec 5 2024, 14:20:01) [Clang 18.1.8 ]
- Pandas版本:2.2.3
- Scikit-learn版本:1.5.2
- GPU可用
结果差异
本地Jupyter和Google Colab运行完全相同的代码,得到的分类结果不一致:
- Google Colab分类结果:

- 本地Jupyter分类结果:

可视化函数(来自课程,其他用户无使用问题)
def plot_decision_boundary(model, X, y): """ 绘制模型在X上预测的决策边界。 本函数改编自两个优质资源: 1. CS231n - https://cs231n.github.io/neural-networks-case-study/ 2. Made with ML basics - https://github.com/GokuMohandas/MadeWithML/blob/main/notebooks/08_Neural_Networks.ipynb """ # 定义绘图的轴边界并创建网格 x_min, x_max = X[:, 0].min() - 0.1, X[:, 0].max() + 0.1 y_min, y_max = X[:, 1].min() - 0.1, X[:, 1].max() + 0.1 xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100), np.linspace(y_min, y_max, 100)) # 创建用于预测的X值 x_in = np.c_[xx.ravel(), yy.ravel()] # 堆叠二维数组:https://numpy.org/devdocs/reference/generated/numpy.c_.html # 使用训练好的模型进行预测 y_pred = model.predict(x_in) # 检查是否为多分类任务 if model.output_shape[-1] > 1: # 检查模型输出形状的最后一维,若大于1则为多分类 print("执行多分类任务...") # 重塑预测结果以准备绘图 y_pred = np.argmax(y_pred, axis=1).reshape(xx.shape) else: print("执行二分类任务...") y_pred = np.round(np.max(y_pred, axis=1)).reshape(xx.shape) # 绘制决策边界 plt.contourf(xx, yy, y_pred, cmap=plt.cm.RdYlBu, alpha=0.7) plt.scatter(X[:, 0], X[:, 1], c=y, s=40, cmap=plt.cm.RdYlBu) plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max())
神经网络代码
tf.random.set_seed(42) model3 = tf.keras.Sequential([ tf.keras.layers.Dense(12, activation="relu"), tf.keras.layers.Dense(8, activation="relu"), tf.keras.layers.Dense(1, activation="sigmoid") ]) model3.compile( loss = tf.keras.losses.BinaryCrossentropy(), optimizer= tf.keras.optimizers.Adam(learning_rate=0.01), metrics = ["accuracy"] ) history = model3.fit(X, y, epochs=100)
内容的提问来源于stack exchange,提问作者Marco Feregrino
相关产品推荐
相关产品推荐

