NOTE_北大tensorflow_Chapter3

这篇博客介绍了使用TensorFlow构建神经网络的步骤,包括:1)选择模型,如Sequential或自定义Class;2)对小型数据集进行shuffle,大型数据集如MNIST则不需要;3)构建网络结构,例如使用Dense或Flatten层;4)模型编译,指定优化器、损失函数和评估指标;5)训练模型,通过fit方法调整参数;6)最后,总结模型概况。
部署运行你感兴趣的模型镜像

一、六步法搭建八股
1.模块
2.数据集并shuffle
3.结构顺序
4.编译
5.使参数合适(前4step准备工作完成后,灌数据,训练网络,使参数合适)
6.总结

1.module

#iris Sequential
import tensorflow as tf
from sklearn import datasets
import numpy as np
#iris class
import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras import Model
from sklearn import datasets
import numpy as np

#############################################################
#大数据集的Sequential
import tensorflow as tf
#大数据集的class
import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras import Model

2.dataset and shuffle

按数据集大小来分类:1.小型iris数据集。2.大型mnist和fashion_mnist数据集
小型数据集需要shuffle,大型数据集不需要。
注意:常用 x_test / 255.0 把输入特征的数值变小更适合神经网络吸收

#小型数据集
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)
######################################################################
#大型数据集
fashion = tf.keras.datasets.fashion_mnist
(x_train, y_train),(x_test, y_test) = fashion.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0#把输入特征的数值变小更适合神经网络吸收

3.结构顺序

按是否使用系统提供的顺序,分为Sequentialclass

#Sequential
#######################################
#小数据集
#######################################
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])
#####################################
#大数据集
#####################################
model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

#########################################################################
#class
########################################################################
#小数据集
class IrisModel(Model):
    def __init__(self):
        super(IrisModel, self).__init__()
        #d1是给这一层起的名字,每一层都用’self.‘引导
        self.d1 = Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())

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

model = IrisModel()
#############################################
#大数据集
##############################################
class MnistModel(Model):
    def __init__(self):
        super(MnistModel, self).__init__()
        self.flatten = Flatten()
        self.d1 = Dense(128, activation='relu')
        self.d2 = Dense(10, activation='softmax')

    def call(self, x):
        x = self.flatten(x)
        x = self.d1(x)
        y = self.d2(x)
        return y

model = MnistModel()

4.编译

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

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

5.使参数合适

#从原数据集中分出test数据集
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

#######################################################################
#有特定的test数据集
model.fit(x_train, y_train, batch_size=32, epochs=5, validation_data=(x_test, y_test), validation_freq=1)

6.总结

model.summary()

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### Arduino演奏《晴天》旋律代码解释及使用指南 以下是一段用于演奏《晴天》简版旋律的Arduino代码,它通过蜂鸣器或压电扬声器播放音乐。代码使用了Arduino的`tone()`函数来生成特定频率的音频信号,从而实现旋律的播放。 ```cpp #include "pitches.h" // 引入标准音高定义头文件 // 定义旋律的音符和持续时间 int melody[][2] = { {NOTE_C4, 4}, {NOTE_G3, 8}, {NOTE_G3, 8}, {NOTE_A3, 4}, {NOTE_G3, 4}, {0, 4}, {NOTE_B3, 4}, {NOTE_C4, 4}, {NOTE_G3, 4}, {NOTE_E3, 4}, {NOTE_C4, 4}, {NOTE_G3, 8}, {NOTE_A3, 4}, {NOTE_F3, 4}, {NOTE_G3, 4}, {0, 4}, {NOTE_E3, 4}, {NOTE_C4, 4}, {NOTE_D3, 4}, {NOTE_B3, 4}, {NOTE_A3, 4}, {NOTE_G3, 8}, {NOTE_A3, 4}, {0, 4}, {NOTE_C4, 4}, {NOTE_G3, 8}, {NOTE_G3, 8}, {NOTE_A3, 4}, {NOTE_G3, 4}, {0, 4}, {NOTE_D4, 4}, {NOTE_C4, 4} }; int melodyLength = sizeof(melody) / sizeof(melody[0]); // 计算旋律长度 int speakerPin = 9; // 定义蜂鸣器连接的引脚 void setup() { for (int thisNote = 0; thisNote < melodyLength; thisNote++) { int noteDuration = melody[thisNote][1]; // 获取当前音符的持续时间 int noteFrequency = melody[thisNote][0]; // 获取当前音符的频率 int pauseBetweenNotes = noteDuration * 1.3; // 计算音符之间的间隔时间 if (noteFrequency == 0) { noTone(speakerPin); // 如果音符频率为0,表示休止符,停止发声 } else { tone(speakerPin, noteFrequency, pauseBetweenNotes); // 播放当前音符 } delay(pauseBetweenNotes); // 等待音符持续时间加上间隔时间 } } void loop() { // 不需要循环,因此留空 } ``` #### 代码解析 1. **引入头文件**:代码开头引入了`pitches.h`头文件,该文件包含了标准音高的定义,例如`NOTE_C4`代表中央C的频率(262Hz)[^1]。 2. **定义旋律**:`melody`数组存储了旋律的音符和持续时间。每个元素是一个包含两个整数的数组,第一个整数表示音符的频率,第二个整数表示音符的持续时间(以四分音符为单位)。 3. **计算旋律长度**:通过`sizeof(melody) / sizeof(melody[0])`计算旋律的总长度,即音符的数量。 4. **设置蜂鸣器引脚**:`speakerPin`变量定义了蜂鸣器连接的Arduino引脚(这里是9号引脚)。 5. **播放旋律**:在`setup()`函数中,遍历`melody`数组中的每个音符,使用`tone()`函数播放音符,并通过`delay()`函数控制音符之间的间隔时间。如果音符频率为0,表示休止符,使用`noTone()`函数停止发声。 6. **循环播放**:由于旋律只需要播放一次,因此`loop()`函数为空。 #### 硬件连接 1. **蜂鸣器连接**:将蜂鸣器的正极连接到Arduino的9号引脚,负极连接到GND。 2. **电源供电**:确保Arduino通过USB或外部电源供电。 #### 使用指南 1. **上传代码**:将上述代码复制到Arduino IDE中,并上传到Arduino开发板。 2. **测试播放**:上传完成后,蜂鸣器应开始播放《晴天》的简版旋律。如果听不到声音,请检查蜂鸣器是否正确连接。 3. **调整音量**:如果音量较小,可以尝试使用外部放大器或更换更大功率的扬声器。 4. **修改旋律**:可以根据需要修改`melody`数组中的音符和持续时间,以播放不同的旋律。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值