再多练习几个神经网络代码吧全连接,卷积神经网络

TensorFlow的神经网络代码练过了,tensorboard的使用方法也学习了,那么接下来继续练习一些复杂点的神经网络代码示例吧。

1,依然全连接神经网络,minist手写数字识别
metrics=[‘accuracy’,‘mse’]中的指标可以自行添加

import datetime

import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras import Model

# 加载 MNIST 手写数字数据集
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

# 构建模型
class MyModel(Model):
    def __init__(self):
        super(MyModel, self).__init__()
        self.flatten = Flatten(input_shape=(28, 28))
        self.dense1 = Dense(128, activation='relu')
        self.dense2 = Dense(10)

    def call(self, x):
        x = self.flatten(x)
        x = self.dense1(x)
        return self.dense2(x)

model = MyModel()

# 设置损失函数、优化器和评估指标
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy','mse'])

#定义回调函数
log_dir="logs/fit2/"+datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback=tf.keras.callbacks.TensorBoard(log_dir=log_dir,histogram_freq=1)
# 训练模型
model.fit(x_train, y_train, epochs=5,validation_data=(x_test, y_test), callbacks=[tensorboard_callback])

# 评估模型
#model.evaluate(x_test, y_test)

2,使用卷积神经网络(Convolutional Neural Network, CNN)进行图像分类

import datetime

import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras import Model

# 加载 MNIST 手写数字数据集
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

# 构建模型
class MyModel(Model):
    def __init__(self):
        super(MyModel, self).__init__()
        self.flatten = Flatten(input_shape=(28, 28))
        self.dense1 = Dense(128, activation='relu')
        self.dense2 = Dense(10)

    def call(self, x):
        x = self.flatten(x)
        x = self.dense1(x)
        return self.dense2(x)

model = MyModel()

# 设置损失函数、优化器和评估指标
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy','mse'])

#定义回调函数
log_dir="logs/fit2/"+datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback=tf.keras.callbacks.TensorBoard(log_dir=log_dir,histogram_freq=1)
# 训练模型
model.fit(x_train, y_train, epochs=5,validation_data=(x_test, y_test), callbacks=[tensorboard_callback])

# 评估模型
#model.evaluate(x_test, y_test)

这是一个使用了卷积神经网络(Convolutional Neural Network)的模型,可以用于对图像进行分类。下面是每一层的解释:

tf.keras.layers.Conv2D(32, (3, 3), activation=‘relu’, input_shape=(32, 32, 3)):第一层卷积层,使用了 32 个 3x3 的卷积核,激活函数为 ReLU,输入形状为 32x32x3 的图像;
tf.keras.layers.MaxPooling2D((2, 2)):最大池化层,使用了 2x2 的窗口进行最大池化操作;
tf.keras.layers.Conv2D(64, (3, 3), activation=‘relu’):第二层卷积层,使用了 64 个 3x3 的卷积核,激活函数为 ReLU;
tf.keras.layers.MaxPooling2D((2, 2)):最大池化层,使用了 2x2 的窗口进行最大池化操作;
tf.keras.layers.Conv2D(64, (3, 3), activation=‘relu’):第三层卷积层,使用了 64 个 3x3 的卷积核,激活函数为 ReLU;
tf.keras.layers.Flatten():展平层,将前面的卷积层输出的多维张量展平为一维向量;
tf.keras.layers.Dense(64, activation=‘relu’):全连接层,使用 64 个神经元,激活函数为 ReLU;
tf.keras.layers.Dense(10):输出层,使用了 10 个神经元,没有激活函数,输出的结果是该图像被分为 10 个类别的概率分布。

3,使用神经网络对 IMDB 影评进行情感分析

import datetime

import tensorflow as tf

#加载imdb的数据
imdb=tf.keras.datasets.imdb
(x_train,y_train),(x_test,y_test)=imdb.load_data(num_words=10000)

#数据预处理
x_train=tf.keras.preprocessing.sequence.pad_sequences(x_train,value=0,padding='post',maxlen=256)
x_test=tf.keras.preprocessing.sequence.pad_sequences(x_test,value=0,padding='post',maxlen=256)

#构建神经网络模型
model=tf.keras.Sequential([tf.keras.layers.Embedding(10000,16),tf.keras.layers.GlobalMaxPooling1D(),tf.keras.layers.Dense(16,activation='relu'),tf.keras.layers.Dense(1,activation='sigmoid')])
#编译模型
model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy','mse'])

#同样要用tensorboard的话,就要建回调函数
log_dir="logs/fit4/"+datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
tensorboard_callback=tf.keras.callbacks.TensorBoard(log_dir=log_dir,histogram_freq=1)

#训练并验证模型
model.fit(x_train,y_train,epochs=8,validation_data=(x_test,y_test),callbacks=[tensorboard_callback])

这个模型是一个用于文本分类的神经网络,它包含四个层:

Embedding 层:将输入的整数序列编码为一个稠密向量表示,使得具有相似意义的词具有相似的向量表示。这个 Embedding 层有 10,000 个词的词汇表,每个词用 16 维的向量表示。

GlobalAveragePooling1D 层:将 Embedding 层的输出进行平均池化,将整个序列的特征提取为一个固定长度的向量,使得模型能够处理任意长度的输入。

Dense 层:这是一个全连接层,包含 16 个神经元,使用 ReLU 激活函数。

Dense 层:这是最后一层,只包含一个神经元,使用 sigmoid 激活函数,用于输出二分类概率值,表示输入的文本属于正面类别的概率。

总体来说,这个模型的输入是一个整数序列,输出是一个二分类概率值,通过嵌入层将输入转化为稠密向量表示,并使用池化层和全连接层进行特征提取和分类,具有良好的分类性能。

总之,需要多练习,才能真正的理解并记忆

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值