python_demo(一) 损失函数绘制

深度学习损失函数绘制
# -*- coding: utf-8 -*-
# author: liilzeez

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10,10)
y_sigmoid = 1/(1+np.exp(-x))
y_tanh = (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))

fig = plt.figure()
# plot sigmoid
ax = fig.add_subplot(221)
ax.plot(x,y_sigmoid)
ax.grid()
ax.set_title('(a) Sigmoid')

# plot tanh
ax = fig.add_subplot(222)
ax.plot(x,y_tanh)
ax.grid()
ax.set_title('(b) Tanh')

# plot relu
ax = fig.add_subplot(223)
y_relu = np.array([0*item  if item<0 else item for item in x ])
ax.plot(x,y_relu)
ax.grid()
ax.set_title('(c) ReLu')

#plot leaky relu
ax = fig.add_subplot(224)
y_relu = np.array([0.2*item  if item<0 else item for item in x ])
ax.plot(x,y_relu)
ax.grid()
ax.set_title('(d) Leaky ReLu')
plt.tight_layout()
plt.show()
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow是谷歌开发的一个开源机器学习框架,Python是一种广泛使用的编程语言,两者结合起来可以实现深度学习,自然语言处理,计算机视觉等多个领域的应用。本文将提供一个TensorFlow Python3 Demo实例,介绍如何使用TensorFlow实现MNIST数字识别任务。 首先,我们需要安装TensorFlow和其他必要的依赖项。可以使用pip命令直接进行安装,示例代码如下: ``` pip install tensorflow matplotlib numpy ``` 接下来,我们需要导入必要的库和模块: ``` import tensorflow as tf import matplotlib.pyplot as plt import numpy as np ``` 现在,我们可以开始构建模型。这里我们采用经典的卷积神经网络(CNN)架构,包括卷积层,池化层,全连接层和dropout操作。其中,卷积和池化层用于提取图片的特征,全连接层用于分类,dropout层用于防止过拟合。 ``` model = tf.keras.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2D(pool_size=(2, 2)), tf.keras.layers.Conv2D(64, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D(pool_size=(2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) ``` 在构建模型后,我们需要对其进行编译,即选择损失函数,优化器和评估标准。这里我们选择交叉熵作为损失函数,Adam优化器和准确率作为评估标准。 ``` model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) ``` 接下来,我们需要加载数据。MNIST是一个手写数字数据集,包含0-9十个数字的灰度图像,每张图片的大小为28x28。我们可以使用TensorFlow提供的API方便地加载数据。 ``` mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 x_train = x_train.reshape(x_train.shape[0], 28, 28, 1) x_test = x_test.reshape(x_test.shape[0], 28, 28, 1) ``` 在加载数据后,我们可以开始训练模型。这里我们使用fit方法进行训练,指定训练数据,验证数据,训练轮数和批次大小。 ``` history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test), batch_size=32) ``` 最后,我们可以使用matplotlib库绘制损失函数和准确率的变化趋势。 ``` plt.plot(history.history['loss'], label='Training Loss') plt.plot(history.history['val_loss'], label='Validation Loss') plt.legend() plt.show() plt.plot(history.history['accuracy'], label='Training Accuracy') plt.plot(history.history['val_accuracy'], label='Validation Accuracy') plt.legend() plt.show() ``` 完整的TensorFlow Python3 Demo代码如下: ``` import tensorflow as tf import matplotlib.pyplot as plt import numpy as np model = tf.keras.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2D(pool_size=(2, 2)), tf.keras.layers.Conv2D(64, (3, 3), activation='relu'), tf.keras.layers.MaxPooling2D(pool_size=(2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 x_train = x_train.reshape(x_train.shape[0], 28, 28, 1) x_test = x_test.reshape(x_test.shape[0], 28, 28, 1) history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test), batch_size=32) plt.plot(history.history['loss'], label='Training Loss') plt.plot(history.history['val_loss'], label='Validation Loss') plt.legend() plt.show() plt.plot(history.history['accuracy'], label='Training Accuracy') plt.plot(history.history['val_accuracy'], label='Validation Accuracy') plt.legend() plt.show() ``` 通过以上示例,可以很好地了解如何使用TensorFlow实现一个数字识别任务。当然,TensorFlow还有很多其他功能和API,需要更深入的学习和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值