每日学习报告

每日学习报告,第1张

文章目录
  • 2022/4/7日报
    • 组会
    • Tensorflow基础知识学习
    • 大数据课程:查阅Hadoop搭建过程
  • 2022/4/8日报
    • 在cifar10上学习卷积神经网络
    • 查找问题1
    • 查找问题2

2022/4/7日报
组会

摘要讨论

Tensorflow基础知识学习

构建基础的神经网络结构:采用六步法

  • 1 import 相关模块
  • 2 train test 准备喂入神经网络的数据
  • 3 model.Sequential 在Sequential顺序搭建神经网络结构
  • 4 model.compile 选择优化器、损失函数、衡量指标
  • 5 model.fit 训练模型
  • 6 model.summary 打印网络结构和参数统计
import tensorflow as tf
import numpy as np
from sklearn import datasets

# 搭建神经网络
# 六步法
# 1  import 相关模块
# 2  train test 准备喂入神经网络的数据
# 3  model.Sequential 在Sequential搭建神经网络结构
# 4  model.compile 选择优化器、损失函数、衡量指标
# 5  model.fit 训练模型
# 6  model.summary 打印网络结构和参数统计

"""Iris代码实现"""
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target

# 打乱数据集
np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)

# 3代表神经元的个数
model = tf.keras.models.Sequential([tf.keras.layers.Dense(3, activation="softmax",
                                                          kernel_regularizer=tf.keras.regularizers.l2())])

# 由于神经网络末端使用了softmax函数,所以from_logits = False
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=["sparse_categorical_accuracy"])

# validation_freq 代表每迭代20次训练集要在测试集中验证一次准确率
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

model.summary()

"""class实现神经网络跳连"""
import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras import Model
from sklearn import datasets
import numpy as np


x_train = datasets.load_iris().data
y_train = datasets.load_iris().target

np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)

class Irismodel(Model):
    def __init__(self):
        super(Irismodel,self).__init__()
        self.d1 = Dense(3, activation="sigmoid", kernel_regularizer=tf.keras.regularizers.l2())

    def call(self, x, **kwargs):
        y = self.d1(x)
        return y


model = Irismodel()

model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=["sparse_categorical_accuracy"])

model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

model.summary()

"""Mnist手写字体识别"""
import tensorflow as tf

minst = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = minst.load_data()
# 归一化映射到0-1之间方便神经网络训练
x_train, x_test = x_train / 255, x_test / 255

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation="relu"),
    tf.keras.layers.Dense(10, activation="softmax")
])

model.compile(optimizer="adam",
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=["sparse_categorical_accuracy"])

model.fit(x_train, y_train, batch_size=32, epochs=100, validation_data=(x_test, y_test), validation_freq=20)
model.summary()

"""Fashion数据集"""
# 6万张28*28像素点的衣服裤子图片和标签(10个分类)用于训练 1万张用于测试
import tensorflow as tf

fashion = tf.keras.datasets.fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion.load_data()

model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation="relu"),
    tf.keras.layers.Dense(10, activation="softmax")
])

model.compile(optimizer="adam",
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=["sparse_categorical_accuracy"])

model.fit(x_train, y_train, batch_size=32, epochs=100, validation_data=(x_test, y_test), validation_freq=20)

model.summary()

大数据课程:查阅Hadoop搭建过程

2022/4/8日报
在cifar10上学习卷积神经网络

Cifar10数据集:
提供5万张32 * 32的十分类彩色图片和标签,用于训练
提供1万张32 * 32的十分类彩色图片和标签,用于测试
卷积是什么:就是特征提取器,就是CBAPD: 卷积、 批标准化、 激活、 池化、 全连接(fully-connected)

 class Baseline(Model):
     def __init__(self):
         super(Baseline, self).__init__()
         self.c1 = tf.keras.layers.Conv2D(filters=6, kernel_size=(5, 5), padding="same")
         self.b1 = tf.keras.layers.BatchNormalization(),
         self.a1 = tf.keras.layers.Activation("relu"),
         self.p1 = tf.keras.layers.MaxPool2D(pool_size=(2, 2), strides=2, padding="same"),
         self.d1 = tf.keras.layers.Dropout(0.2)

当看完教学视频,准备慢慢敲一下代码回顾一下

import tensorflow as tf
import os
import numpy as np
from matplotlib import pyplot as plt
from tensorflow.keras.layers import Conv2D, BatchNormalization, Activation, MaxPool2D, Dropout, Flatten, Dense
from tensorflow.keras import Model

np.set_printoptions(threshold=np.inf)

cifar10 = tf.keras.datasets.cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0


class Baseline(Model):
    def __init__(self):
        super(Baseline, self).__init__()
        self.c1 = Conv2D(filters=6, kernel_size=(5, 5), padding='same')  # 卷积层
        self.b1 = BatchNormalization()  # BN层
        self.a1 = Activation('relu')  # 激活层
        self.p1 = MaxPool2D(pool_size=(2, 2), strides=2, padding='same')  # 池化层
        self.d1 = Dropout(0.2)  # dropout层

        self.flatten = Flatten()
        self.f1 = Dense(128, activation='relu')
        self.d2 = Dropout(0.2)
        self.f2 = Dense(10, activation='softmax')

    def call(self, x, **kwargs):
        x = self.c1(x)
        x = self.b1(x)
        x = self.a1(x)
        x = self.p1(x)
        x = self.d1(x)

        x = self.flatten(x)
        x = self.f1(x)
        x = self.d2(x)
        y = self.f2(x)
        return y


model = Baseline()

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])

checkpoint_save_path = "./checkpoint/Baseline.ckpt"
if os.path.exists(checkpoint_save_path + '.index'):
    print('-------------load the model-----------------')
    model.load_weights(checkpoint_save_path)

cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_save_path,
                                                 save_weights_only=True,
                                                 save_best_only=True)

history = model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1,
                    callbacks=[cp_callback])
model.summary()

# print(model.trainable_variables)
file = open('./weights.txt', 'w')
for v in model.trainable_variables:
    file.write(str(v.name) + '\n')
    file.write(str(v.shape) + '\n')
    file.write(str(v.numpy()) + '\n')
file.close()

###############################################    show   ###############################################

# 显示训练集和验证集的acc和loss曲线
acc = history.history['sparse_categorical_accuracy']
val_acc = history.history['val_sparse_categorical_accuracy']
loss = history.history['loss']
val_loss = history.history['val_loss']

plt.subplot(1, 2, 1)
plt.plot(acc, label='Training Accuracy')
plt.plot(val_acc, label='Validation Accuracy')
plt.title('Training and Validation Accuracy')
plt.legend()

plt.subplot(1, 2, 2)
plt.plot(loss, label='Training Loss')
plt.plot(val_loss, label='Validation Loss')
plt.title('Training and Validation Loss')
plt.legend()
plt.show()

我就在我的之前配好的tensorflow-gpu-2.3.0的环境运行代码,代码运行图正常,发现损失函数基本上没有什么变化,开始检查代码是否写错。


再确认无误的情况下,我将代码分发给我周围的人。


他们运行的情况与教学视频的准确率大致相同。


查找问题1

于是开始了不断的百度,查找问题的原因。


但结果都是不解而终,于是我开始尝试换tensorflow版本来解决。


我开始在Annaonda中配置tensorflow-gpu-2.4.0的环境。


conda create -n tf2.4 python=3.7.6
conda activate tf.4

在Tensorflow官网,查看对应的cudatoolkit、cudnn版本和tensorflow-gpu版本

conda install cudatoolkit=11.0
conda install cudnn=8.0
pip install tensorflow-gpu==2.4.0

在安装完毕后,使用conda命令退出虚拟环境,在pycharm开始测试。




虽然在预测结果上大致相同,acc/loss曲线正常,说明这个问题多半是和tensorflow环境有关。


于是我又开始尝试解决Error code:2的问题。


在查阅了很多的资料后,确实证实(RTX-3060在低版本的tensorflow上会出现一些意想不到的问题),我开始在提高tensorflow的版本。




查找问题2

我开始将tensorflow提升至tensorflow-gpu==2.5.0版本,Error code:2明显减少,代码正确的运行。




本着把所有问题的全部解决的原则上,我再次百度解决。


网上对于的这个问题的解决几乎没有,或者有也是不怎么搭边的。


如果大家有好的解决方法,欢迎留言评论。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/567849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存