以下是使用TensorFlow 2在鸢尾花数据集上比较SGDM优化器和Adam优化器的代码和结果:
```python
import tensorflow as tf
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 加载数据集并进行预处理
iris=load_iris()
X=iris.data
y=iris.target
X_train, X_test, y_train, y_test=train_test_split(X, y, test_size=0.2, random_state=42)
scaler=StandardScaler()
X_train=scaler.fit_transform(X_train)
X_test=scaler.transform(X_test)
# 定义模型
model=tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=X_train.shape[1:]),
tf.keras.layers.Dense(3, activation='softmax')
])
# 编译模型并使用SGDM优化器进行训练
sgdm_optimizer=tf.keras.optimizers.SGD(learning_rate=0.01, momentum=0.9)
model.compile(loss='sparse_categorical_crossentropy', optimizer=sgdm_optimizer, metrics=['accuracy'])
sgdm_history=model.fit(X_train, y_train, epochs=50, validation_data=(X_test, y_test), verbose=0)
# 编译模型并使用Adam优化器进行训练
adam_optimizer=tf.keras.optimizers.Adam(learning_rate=0.01)
model.compile(loss='sparse_categorical_crossentropy', optimizer=adam_optimizer, metrics=['accuracy'])
adam_history=model.fit(X_train, y_train, epochs=50, validation_data=(X_test, y_test), verbose=0)
# 绘制训练过程中的准确率变化曲线
import matplotlib.pyplot as plt
plt.plot(sgdm_history.history['accuracy'], label='SGDM')
plt.plot(adam_history.history['accuracy'], label='Adam')
plt.title('Accuracy Comparison between SGDM and Adam Optimizers')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.legend()
plt.show()
```
运行上述代码后,将会得到一个准确率变化曲线的图表,该图表将SGDM优化器和Adam优化器的训练过程中准确率的变化进行了对比。