Python实现ANN时遭遇UnimplementedError错误,寻求解决方法
解决TensorFlow中ANN训练的UnimplementedError错误
问题背景
尝试用Python实现人工神经网络(ANN),训练阶段触发UnimplementedError错误,相关代码及报错信息如下:
代码示例
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0) from sklearn.preprocessing import StandardScaler sc = StandardScaler(with_mean=False) X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test) import tensorflow as tf ann = tf.keras.models.Sequential() # 添加第一个隐藏层 ann.add(tf.keras.layers.Dense(units=6,activation="relu")) # 添加第二个隐藏层 ann.add(tf.keras.layers.Dense(units=6,activation="relu")) ann.add(tf.keras.layers.Dense(units=1,activation="sigmoid")) ann.compile(optimizer="adam",loss="binary_crossentropy",metrics=['accuracy']) ann.fit(X_train,Y_train,batch_size=32,epochs = 100)
报错信息
WARNING:tensorflow:Keras正在基于类数组数据进行训练/拟合/评估。Keras对此格式可能未做优化,如果你的输入数据格式受TensorFlow I/O支持,建议使用其加载Dataset替代。 Epoch 1/100 --------------------------------------------------------------------------- UnimplementedError Traceback (most recent call last) Cell In[37], line 2 1 # 拟合ANN ----> 2 ann.fit(X_train,Y_train,batch_size=32,epochs = 100)
解决方案
修正数据类型:TensorFlow要求输入数据为浮点型,检查并转换数据类型:
X_train = X_train.astype('float32') Y_train = Y_train.astype('float32')调整标签维度:确保标签数据为二维数组(形状为
(样本数, 1)),若为一维则重塑:Y_train = Y_train.reshape(-1, 1) Y_test = Y_test.reshape(-1, 1)优化标准化配置:移除
with_mean=False参数,使用默认的中心化+标准化,提升模型稳定性:sc = StandardScaler() X_train = sc.fit_transform(X_train) X_test = sc.transform(X_test)升级TensorFlow版本:旧版本可能存在数组兼容问题,升级至稳定版:
pip install --upgrade tensorflow
内容的提问来源于stack exchange,提问作者Sanjeevan Rajakulasingam
相关产品推荐
相关产品推荐

