使用Tensorflow构建网络的方法

使用Tensorflow构建网络的方法

首先

import numpy as np
import tensorflow as tf
from tensorflow.keras import layers

专注于输入输出的方式

input_shape = (height,width,3)#只需要给一个样本(一张图)的大小
input_data = tf.keras.Input(shape=input_shape)#构建结构输入
conv_1 = layers.Conv2D(filters=16,kernel_size=7,strides=2)(input_data)
conv_2 = layers.Conv2D(...)(conv_1)
...

...

dense_1 = layers.Flatten()(conv_n)
output_data = layers.Dense(2,activation='softmax')(dense_1)
model = tf.keras.Model(input_data,out_data)#根据输入输出,整合整个网络
model.summary()#打印网络结构

这种方法的有点在于:可以对网络层与层之间传输的数据(张量形式)做自定义变化,上面的conv_1等都是不同层之间的数据。

专注于神经网络层的拼接

model = tf.keras.models.Sequential()
model.add(layers.Conv2D(filters=16,kernel_size=7,strides=2))
model.add(...)
model.summary()#打印网络结构
#或者直接:
model = tf.keras.models.Sequential([layers.Conv2D(filters=16,kernel_size=7,strides=2),...])
model.summary()#打印网络结构

简单地进行神经网络训练例子

batch_size=16
epochs=200
model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy'])#使用交叉熵损失函数、adam优化器,评价标准为准确度
history = model.fit(inputData,outputData,#自己的输入输出数据集
          batch_size=batch_size,#一批更新的样本数
          epochs=epochs,#迭代次数
          verbose=2,#打印每一代训练后的简单信息
          validation_split = 0.05, #从数据集中分出5%的样本作为验证集
          validation_freq = 2,#迭代两次训练一次
          shuffle=True)#打乱数据集(我感觉没打乱)
model.save('.\model_1.h5')#保存模型
model = tf.keras.models.load_model('.\model_1.h5')#加载模型
model.evaluate(mouseDataTest,mouseOutDataTest)#对模型进行数据测试

Original: https://blog.csdn.net/qq_42556102/article/details/123555227
Author: qq_42556102
Title: 使用Tensorflow构建网络的方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/509115/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球