简单的pycharm深度学习模型,可以得到训练集和验证集的准确率曲线、损失函数曲线以及交叉熵函数曲线,
时间: 2023-12-10 21:38:52 浏览: 108
可以使用Keras库来实现简单的深度学习模型,并且可以通过调用Keras的回调函数来得到训练集和验证集的准确率曲线、损失函数曲线以及交叉熵函数曲线。
以下是一个简单的示例代码:
```python
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import Callback
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x_train = np.random.rand(1000, 5)
y_train = np.random.randint(2, size=(1000, 1))
x_val = np.random.rand(100, 5)
y_val = np.random.randint(2, size=(100, 1))
# 定义模型
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=5))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy', 'binary_crossentropy'])
# 定义回调函数
class LossHistory(Callback):
def on_train_begin(self, logs={}):
self.losses = []
self.val_losses = []
self.accs = []
self.val_accs = []
self.cross_entropy = []
self.val_cross_entropy = []
def on_batch_end(self, batch, logs={}):
self.losses.append(logs.get('loss'))
self.val_losses.append(logs.get('val_loss'))
self.accs.append(logs.get('accuracy'))
self.val_accs.append(logs.get('val_accuracy'))
self.cross_entropy.append(logs.get('binary_crossentropy'))
self.val_cross_entropy.append(logs.get('val_binary_crossentropy'))
# 训练模型
history = LossHistory()
model.fit(x_train, y_train,
epochs=10,
batch_size=32,
validation_data=(x_val, y_val),
callbacks=[history])
# 绘制准确率曲线和损失函数曲线
plt.figure(figsize=(10, 5))
plt.subplot(121)
plt.plot(history.losses)
plt.plot(history.val_losses)
plt.title('Loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='upper right')
plt.subplot(122)
plt.plot(history.accs)
plt.plot(history.val_accs)
plt.title('Accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'val'], loc='lower right')
plt.show()
# 绘制交叉熵函数曲线
plt.figure(figsize=(5, 5))
plt.plot(history.cross_entropy)
plt.plot(history.val_cross_entropy)
plt.title('Cross Entropy')
plt.ylabel('cross entropy')
plt.xlabel('batch')
plt.legend(['train', 'val'], loc='upper right')
plt.show()
```
在上面的代码中,我们定义了一个简单的神经网络模型,并使用Keras回调函数LossHistory来保存训练过程中的损失函数、准确率和交叉熵函数。在模型训练完成后,我们可以使用matplotlib库来绘制训练集和验证集的准确率曲线、损失函数曲线和交叉熵函数曲线。
阅读全文