首次运行 tensorflow 项目之 vgg 网络

首次运行 tensorflow 项目之 vgg 网络

1. 下载所需文件

下载路径
在这里插入图片描述
首先将需要的文件下载下来,放到一个文件夹中,这里我的路径是E:\vgg
文件夹路径
这是需要的文件,第一个是数据集,第二个文件夹包含了模型代码以及训练集和少量测试集。

2. 在 pycharm 中打开项目

在这里插入图片描述

点击 open,打开我们刚才在 E 盘建立的文件夹 vgg,如图

在这里插入图片描述

3. 为项目设置 python 编译器

File --> settings -->
在这里插入图片描述
选择 project interpreter
在这里插入图片描述
这里的 location 需要填一个空的文件夹
Base interpreter 选择 Python35,因为只有 Python35 才搭建了 tensorflow 框架

4. 调试代码

1. train.py

首先运行 train.py,如图
在这里插入图片描述
一运行就开始报错,开始我们的修 bug 之路吧
在这里插入图片描述
原来是 print 输出函数格式有问题,将其改为print() 就可以了
再次运行,又报错了
在这里插入图片描述
来看看报了什么错误
导包失败,说是没有 tensorflow 这个包,对症下药,那就导包咯
在这里插入图片描述
点击 install package tensorflow
在这里插入图片描述
稍等片刻
在这里插入图片描述
导包成功
再次运行,有 warning 产生,如图
在这里插入图片描述
中文意思是 提示你 tensorflow.python.ops.nn_ops 中的softmax_cross_entropy_with_logits方法已弃用,并将在以后的版本中删除 更新说明:TensorFlow未来的主要版本将在默认情况下允许梯度值流入到后向传播标签输入。具体请参阅官方的 tf.nn.softmax_cross_entropy_with_logits_v2。所以就是说当前这个方法可行但以后更新框架版本时,该方法会取消掉。并不影响当前框架下的运用。

不影响使用,暂时就先不管它了
再次运行,还有错
在这里插入图片描述
还是 print 函数问题,,VGG16.py 文件中还有几个类似的错误,就不一一截图了
再修改完所有的 print 函数之后,再次运行 train.py,错误如下
在这里插入图片描述
说是找不到 vgg16.npy 文件
在这里插入图片描述
发现这里面确实没有 vgg16.npy 文件,于是上网下载一个,放入 train.py 所在的文件夹中
在这里插入图片描述
再次运行 train.py
在这里插入图片描述
第一个警告刚刚说了不用管,看看第二个错误
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
大概意思是:你的CPU支持AVX扩展,但是你安装的TensorFlow版本无法编译使用。
解决方法: import os
os.environ[‘TF_CPP_MIN_LOG_LEVEL’] = ‘2’

再次运行,让我们来看看运行结果
在这里插入图片描述

训练完成之后就开始测试

2. test.py

首次运行 test.py
在这里插入图片描述
熟悉的错误,不用多说了

修改 print 函数之后再次运行
在这里插入图片描述

导包错误,没有 opencv 的包,老方法,选择第二个
在这里插入图片描述
导包成功之后再次运行
在这里插入图片描述
根据 restore 这个函数,我猜测这个函数是想把训练模型存储起来以便下次调用,我也不知道怎么改,因此就将代码注释掉了。
#saver.restore(sess, ‘./model/model.ckpt-9999’)

注释之后的运行结果
在这里插入图片描述
换个数据集跑一跑
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以为您提供一个在TensorFlow中实现VGG网络模型结构的示例:# 导入TensorFlow import tensorflow as tf# 变量定义 # 卷积层 conv1_1 = tf.layers.Conv2D(filters=64, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv1_1') conv1_2 = tf.layers.Conv2D(filters=64, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv1_2')# 池化层 pool1 = tf.layers.MaxPooling2D(pool_size=2, strides=2, name='pool1')# 第二层 conv2_1 = tf.layers.Conv2D(filters=128, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv2_1') conv2_2 = tf.layers.Conv2D(filters=128, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv2_2') pool2 = tf.layers.MaxPooling2D(pool_size=2, strides=2, name='pool2')# 第三层 conv3_1 = tf.layers.Conv2D(filters=256, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv3_1') conv3_2 = tf.layers.Conv2D(filters=256, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv3_2') conv3_3 = tf.layers.Conv2D(filters=256, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv3_3') pool3 = tf.layers.MaxPooling2D(pool_size=2, strides=2, name='pool3')# 第四层 conv4_1 = tf.layers.Conv2D(filters=512, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv4_1') conv4_2 = tf.layers.Conv2D(filters=512, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv4_2') conv4_3 = tf.layers.Conv2D(filters=512, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv4_3') pool4 = tf.layers.MaxPooling2D(pool_size=2, strides=2, name='pool4')# 第五层 conv5_1 = tf.layers.Conv2D(filters=512, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv5_1') conv5_2 = tf.layers.Conv2D(filters=512, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv5_2') conv5_3 = tf.layers.Conv2D(filters=512, kernel_size=3, activation=tf.nn.relu, padding='same', name='conv5_3') pool5 = tf.layers.MaxPooling2D(pool_size=2, strides=2, name='pool5')# 全连接层 flatten = tf.layers.Flatten() fc6 = tf.layers.Dense(units=4096, activation=tf.nn.relu, name='fc6') fc7 = tf.layers.Dense(units=4096, activation=tf.nn.relu, name='fc7') fc8 = tf.layers.Dense(units=1000, activation=tf.nn.softmax, name='fc8') ### 回答2: 当使用TensorFlow编写VGG网络模型结构时,需要按照VGG网络的架构,逐层定义模型的结构。 VGG网络是一种深度卷积神经网络,主要由卷积层和全连接层构成。下面是一个简单的VGG网络的模型结构: ```python import tensorflow as tf def VGG16(input_shape=(224, 224, 3), num_classes=1000): model = tf.keras.models.Sequential() # 第一段:卷积层 model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu', padding='same', input_shape=input_shape)) model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.MaxPooling2D((2, 2), strides=(2, 2))) # 第二段:卷积层 model.add(tf.keras.layers.Conv2D(128, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.Conv2D(128, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.MaxPooling2D((2, 2), strides=(2, 2))) # 第三段:卷积层 model.add(tf.keras.layers.Conv2D(256, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.Conv2D(256, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.Conv2D(256, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.MaxPooling2D((2, 2), strides=(2, 2))) # 第四段:卷积层 model.add(tf.keras.layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.MaxPooling2D((2, 2), strides=(2, 2))) # 第五段:卷积层 model.add(tf.keras.layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(tf.keras.layers.MaxPooling2D((2, 2), strides=(2, 2))) # 前馈全连接层 model.add(tf.keras.layers.Flatten()) model.add(tf.keras.layers.Dense(4096, activation='relu')) model.add(tf.keras.layers.Dense(4096, activation='relu')) # 输出层 model.add(tf.keras.layers.Dense(num_classes, activation='softmax')) return model ``` 这就是使用TensorFlow编写的一个简单的VGG网络模型结构。你可以根据自己的需求和输入输出大小来调整网络的结构和参数。 ### 回答3: 当使用TensorFlow编写一个VGG网络模型结构时,我们首先需要导入相关的库和模块: ```python import tensorflow as tf from tensorflow.keras import layers, models ``` 然后,我们可以定义一个函数来创建VGG网络模型。VGG网络模型包含多个卷积层和全连接层,其中每个卷积层都包含多个卷积核。 ```python def vgg_model(): model = models.Sequential() model.add(layers.Conv2D(64, (3, 3), activation='relu', padding='same', input_shape=(224, 224, 3))) model.add(layers.Conv2D(64, (3, 3), activation='relu', padding='same')) model.add(layers.MaxPooling2D((2, 2), strides=(2, 2))) model.add(layers.Conv2D(128, (3, 3), activation='relu', padding='same')) model.add(layers.Conv2D(128, (3, 3), activation='relu', padding='same')) model.add(layers.MaxPooling2D((2, 2), strides=(2, 2))) model.add(layers.Conv2D(256, (3, 3), activation='relu', padding='same')) model.add(layers.Conv2D(256, (3, 3), activation='relu', padding='same')) model.add(layers.Conv2D(256, (3, 3), activation='relu', padding='same')) model.add(layers.MaxPooling2D((2, 2), strides=(2, 2))) model.add(layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(layers.MaxPooling2D((2, 2), strides=(2, 2))) model.add(layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(layers.Conv2D(512, (3, 3), activation='relu', padding='same')) model.add(layers.MaxPooling2D((2, 2), strides=(2, 2))) model.add(layers.Flatten()) model.add(layers.Dense(4096, activation='relu')) model.add(layers.Dense(4096, activation='relu')) model.add(layers.Dense(1000, activation='softmax')) return model ``` 在这个函数中,我们使用了Sequential模型来堆叠各个层。其中,卷积层使用了Conv2D类,参数包括卷积核个数、卷积核尺寸、激活函数、填充方式等。池化层使用了MaxPooling2D类,参数包括池化尺寸和步长。全连接层使用了Dense类,参数包括神经元个数和激活函数。 最后,我们可以通过调用这个函数来创建VGG网络模型: ```python model = vgg_model() ``` 这样,我们就使用TensorFlow编写了一个VGG网络模型结构。请注意,这个模型结构仅包含了网络的定义,并没有包括数据的输入、训练和评估部分,你需要根据具体任务进行相应的编写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值