1.简介

一直想将图片制作成tfrecords文件,然后在模型中运行一下。最初想用的数据集是mnist,但是跑的过程中一直出现问题。找到这一篇知乎上的博客,写的非常不错。

原博客地址:https://zhuanlan.zhihu.com/p/32490882

其代码地址:https://github.com/HelloSangShen/Cat-vs-Dog/

猫狗数据集:https://pan.baidu.com/s/13hw4LK8ihR6-6-8mpjLKDA   密码:dmp4


2. 本文结构

本文以kaggle的猫狗大战为例,完整地描述使用TensorFlow进行一次完整CNN训练的每个步骤。首先介绍如何将图片转为TFRecords文件,然后介绍如何读取该文件的数据并且输入给我们的网络进行训练,并且会展示如何通过hook来监测网络训练的情况(这里没有使用TensorBoard)。最后会简单解读一下MonitoredTrainingSession的使用方法。

3. 正文

3.1 数据处理

有过实践的小伙伴应该能感受到,当有了TensorFlow、PyTorch这样优秀的框架后,构造一个神经网络、进行训练、计算损失函数、预测等都变的相对容易许多。但是数据的预处理仍然是一个相对棘手的问题,尤其是在较大数据集上进行训练时,不能总是使用占位符(placeholder)和feed dict进行数据加载,而TensorFlow提供了另外一种加载方式。这部分就着重介绍如何将图片数据存储为TFRecords,并且通过队列读取给我们的网络。因为网上有非常多介绍TFRecords原理的文章,我这里就不细说了,只给出详细的代码和注释,示范一下如何处理。

def read_images(path):"""从源文件/路径读取图像参数:path: 图像所在的路径即文件夹名称返回:返回一个带有所有图像、标签和总数信息的对象images: 所有的图像数据labels: 所有标签num: 数目"""# 获取文件夹内所有图像文件的文件名和总数filenames = next(walk(path))[2]num_file = len(filenames)# 初始化图像和标签images = np.zeros((num_file, IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNEL), dtype=np.uint8)labels = np.zeros((num_file, ), dtype=np.uint8)# 遍历读取文件for index, filename in enumerate(filenames):# 读取单张图像,并且修改为自定义尺寸img = imread(join(path, filename))img = imresize(img, (IMAGE_HEIGHT, IMAGE_HEIGHT))images[index] = img# TO DO# 这里通过文件名获取标签信息,猫狗大战问题中只有两类,故只有0和1# 可以根据自己的需要进行修改# 注意:这里不是one-hot编码if filename[0:3] == 'cat':labels[index] = int(0)else:labels[index] = int(1)if index % 1000 == 0:print("Reading the %sth image" % index)# 创建一个类,该类携带图像、标签和总数信息class ImgData(object):passresult = ImgData()result.images = imagesresult.labels = labelsresult.num = num_filereturn result

通过上述函数,我们可以读取到文件夹内所有的图片。接下来,我们要把这些图片转为TFRecords文件。

def convert(data, destination):"""将图片存储为.tfrecords文件参数:data: 上述函数返回的ImageData对象destination: 目标文件名"""images = data.imageslabels = data.labelsnum_examples = data.num# 存储的文件名filename = destination# 使用TFRecordWriter来写入数据writer = tf.python_io.TFRecordWriter(filename)# 遍历图片for index in range(num_examples):# 转为二进制image = images[index].tostring()label = labels[index]# tf.train下有Feature和Features,需要注意其区别# 层级关系为Example->Features->Featureexample = tf.train.Example(features=tf.train.Features(feature={'image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image])),'label': tf.train.Feature(int64_list=tf.train.Int64List(value=[label]))}))# 写入writer.write(example.SerializeToString())writer.close()

这两个函数就可以把我们的数据集图片全都写入一个.tfrecords文件。如果文件过大,可以写入多个文件。

下面介绍如何从tfrecords文件中批量读取图片和标签。

def read_and_decode(filename_queue):"""读取.tfrecords文件参数:filename_queue: 文件名, 一个列表返回:img, label: **单张图片和对应标签**"""# 创建一个图节点,该节点负责数据输入filename_queue = tf.train.string_input_producer([filename_queue])reader = tf.TFRecordReader()_, serialized_example = reader.read(filename_queue)# 解析单个examplefeatures = tf.parse_single_example(serialized_example, features={'image': tf.FixedLenFeature([], tf.string),'label': tf.FixedLenFeature([], tf.int64)})image = tf.decode_raw(features['image'], tf.uint8)image = tf.reshape(image, [IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNEL])image = tf.cast(image, tf.float32)label = tf.cast(features['label'], tf.int64)return image, label

我们将数据读取的功能进行封装,代码如下:

def distorted_input(filename, batch_size):"""建立一个乱序的输入
    
    参数:
      filename: tfrecords文件的文件名. 注:该文件名仅为文件的名称,不包含路径和后缀
      batch_size: 每次读取的batch size
      
    返回:
      images: 一个4D的Tensor. size: [batch_size, IMAGE_SIZE, IMAGE_SIZE, 3]
      labels: 1D的标签. size: [batch_size]
    """# 完整文件名,文件存储在同一路径下的tfrecords文件夹下,名为filename.tfrecordsfilename = './tfrecords/' + filename + '.tfrecords'# 如果路径下没有该文件,说明没有进行转换工作,则将图片转为tfrecords文件if not os.path.exists(filename):print('Transfer images to TF_Records')raw_data = read_images(FLAGS.raw_data_path)convert(raw_data, filename)print('End transfering')image, label = read_and_decode(filename)# 乱序读入一个batchimages, labels = tf.train.shuffle_batch([image, label], batch_size=batch_size,num_threads=16, capacity=3000, min_after_dequeue=1000)return images, labels

以上,我们就完成了数据的读取部分了。下面用一段代码进行测试。

images, labels = catdog_input.distorted_input(FLAGS.tfrecords_file_name, batch_size=4)# from matplotlib import pyplot as pltfig = plt.figure()a = fig.add_subplot(221)b = fig.add_subplot(222)c = fig.add_subplot(223)d = fig.add_subplot(224)with tf.Session() as sess:sess.run(tf.global_variables_initializer())coord = tf.train.Coordinator()# 开启文件读取队列,开启后才能开始读取数据threads = tf.train.start_queue_runners(sess=sess, coord=coord)img, label = sess.run([images, labels])a.imshow(img[0])a.axis('off')b.imshow(img[1])b.axis('off')c.imshow(img[2])c.axis('off')d.imshow(img[3])d.axis('off')plt.show()coord.request_stop()coord.join(threads)

通过这个简单的测试程序就可以可视化四张图片出来。

3.2 模型

这里,我们使用VGG-16模型来做测试。TensorFlow在搭建网络上非常方便,这里就不给详细代码了(可以参考cs.toronto.edu/~frossar),读者可以在文末的GitHub链接上找到相关代码。

对于准确率、损失函数等,我们参考TensorFlow教程中Cifar10训练的源代码进行实现,将这些函数均封装起来。

def loss(logits, labels):labels = tf.cast(labels, tf.int64)# 注意:我们上面定义的标签不是one-hot编码,故这里调用的是sparse方法# 如果使用one-hot,调用softmax_cross_entropy_with_logits即可cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits, name='cross_entropy_per_example')loss = tf.reduce_mean(cross_entropy, name='cross_entropy')return lossdef accuracy(logits, labels):# 将labels转为one-hot编码进行计算labels = tf.one_hot(labels, NUM_CLASS)correct_pred = tf.equal(tf.argmax(logits, 1), tf.argmax(labels, 1))accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))return accuracydef train(loss):train_op = tf.train.AdamOptimizer(LEARNING_RATE).minimize(loss)return train_op

至此,我们的模型就搭建好了。接下来就是训练步骤。

3.3 训练

下面的train()函数也是参照cifar10的源码进行实现的。

def train():# 因为要使用StopAtStepHook,故global_step是必须的global_step = tf.train.get_or_create_global_step()# 输入images, labels = catdog_input.distorted_input(FLAGS.tfrecords_name, BATCH_SIZE)logits = catdog_model.inference(images)loss = catdog_model.loss(logits, labels)# accuracy = catdog_model.accuracy(logits, labels)train_op = catdog_model.train(loss)class _LoggerHook(tf.train.SessionRunHook):""" 该类用来打印训练信息"""def begin(self):self._step = -1self._start_time = time.time()def before_run(self, run_context):self._step += 1# 该函数在训练运行之前自动调用# 在这里返回所有你想在运行过程中查看到的信息# 以list的形式传递,如:[loss, accuracy]return tf.train.SessionRunArgs(loss)def after_run(self, run_context, run_values):# 打印信息的步骤间隔display_step = 10if self._step % display_step == 0:current_time = time.time()duration = current_time - self._start_timeself._start_time = current_time# results返回的就是上面before_run()的返回结果,上面是loss故这里是loss# 若输入的是list,返回也是一个listloss = run_values.results# 每秒使用的样本数examples_per_sec = display_step * BATCH_SIZE / duration# 每batch使用的时间sec_per_batch = float(duration / display_step)format_str = ('%s: step %d, loss = %.2f (%.1f examples/sec; %.3f ''sec/batch)')print(format_str % (datetime.now(), self._step, loss,examples_per_sec, sec_per_batch))with tf.train.MonitoredTrainingSession(hooks=[tf.train.StopAtStepHook(last_step=FLAGS.max_step),tf.train.NanTensorHook(loss),_LoggerHook()],  # 将上面定义的_LoggerHook传入config=tf.ConfigProto(log_device_placement=False)) as sess:coord = tf.train.Coordinator()# 开启文件读取队列threads = tf.train.start_queue_runners(sess=sess, coord=coord)while not sess.should_stop():sess.run(train_op)coord.request_stop()coord.join(threads)

上面就是在猫狗大战数据集上进行的一个完整的图片数据预处理、数据读取、搭建网络、训练并监测的过程。

3.4 评估

因为实验室设备暂时有点问题,没法训练,故现在没法给出结果,以后训练出结果后再来更新吧。

3.5 关于MonitoredTrainingSession

我们在上面的训练中用到了tf.train.MonitoredTrainingSession(...)。查阅了一下官方文档,该类继承自MonitoredSession类。我们先看看这个父类,官方文档中给了一段如下示例代码 :

saver_hook = CheckpointSaverHook(...)
summary_hook = SummarySaverHook(...)
with MonitoredSession(session_creator=ChiefSessionCreator(...),hooks=[saver_hook, summary_hook]) as sess:while not sess.should_stop():sess.run(train_op)

首先,当MonitoredSession初始化的时候,会按顺序执行下面操作:

  • 调用hook的begin()函数,我们一般在这里进行一些hook内的初始化。比如在上面猫狗大战中的_LoggerHook里面的_step属性,就是用来记录执行步骤的,但是该参数只在本类中起作用。
  • 通过调用scaffold.finalize()初始化计算图
  • 创建会话
  • 通过初始化Scaffold提供的操作(op)来初始化模型
  • 如果checkpoint存在的话,restore模型的参数
  • launches queue runners
  • 调用hook.after_create_session()

然后,当run()函数运行的时候,按顺序执行下列操作:

  • 调用hook.before_run()
  • 调用TensorFlow的 session.run()
  • 调用hook.after_run()
  • 返回用户需要的session.run()的结果
  • 如果发生了AbortedError或者UnavailableError,则在再次执行run()之前恢复或者重新初始化会话

最后,当调用close()退出时,按顺序执行下列操作:

  • 调用hook.end()
  • 关闭队列和会话
  • 阻止OutOfRange错误

需要注意的是:该类不是一个tf.Session() ,因为它不能被设置为默认会话,不能被传递给saver.save,也不能被传递给tf.train.start_queue_runners,这也解释了为什么在开启会话后我们必须手动调用tf.train.start_queue_runners()

MonitoredTrainingSession则比起父类多了许多其他的参数,可以在官方文档获取各参数的说明,这里我们不详细说。但是根据其父类的执行说明,我们就可以很容易理解上面train()函数中发生了什么。

首先,我们先将计算图的各个节点/操作定义好,构成了一个计算图。然后开启了一个MonitoredTrainingSession来初始化/注册我们的图和其他信息。其中,我们给其传递了3个hook:

  • tf.train.StopAtStepHook(last_step),该hook主要是在训练到特定步数后即请求停止,使用该hook必须要预先定义一个tf.train.get_or_create_global_step()。否则会抛出运行时错误,见源码:

def begin(self): self._global_step_tensor = training_util._get_or_create_global_step_read() if self._global_step_tensor is None: raise RuntimeError("Global step should be created to use StopAtStepHook.")

  • tf.train.NanTensorHook(loss),该hook用来监测loss,若loss的结果为NaN,抛出异常或者直接停止训练。
  • _LoggerHook(),该hook是我们自定义的hook,用来监测我们希望在训练过程中能查看的一些数据如loss或者accuracy。首先会随着MonitoredTrainingSession的初始化来调用begin()函数,我们在这里初始化步数,before_run()函数会随着sess.run()的调用而调用。故每训练一步调用一次,这里返回想要打印的信息,随后就调用after_run()函数,在这里,我们就将需要查看的信息打印出来即可。

随后,我们开启文件读取队列进行数据的输入。然后就一直调用sess.run()训练直到停下。

4.如何运行

首先得生成tfrecords文件,在当前文件夹下新建一个create_tfrecords.py,然后将下面的代码放进去(其实就是上面的代码)

import tensorflow as tf
import numpy as np
import osfrom scipy.misc import imread,imresize
from os.path import join
from os import walkIMAGE_WIDTH = 224
IMAGE_HEIGHT = 224
IMAGE_CHANNEL = 3
NUM_CLASS = 2def read_images(path):"""Read image from source file/directoryArgs:path: source derectoryReturn:An object representing all images and labels, fields:images: all image datalabels: all labelsnum: number of images"""# Get a list filenamesfilenames = next(walk(path))[2]num_file = len(filenames)# Initialize images and labels.images = np.zeros((num_file, IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNEL), dtype=np.uint8)labels = np.zeros((num_file, ), dtype=np.uint8)# Iterate/Read all filesfor index, filename in enumerate(filenames):# Read single image and resize it to your expected sizeimg = imread(join(path, filename))img = imresize(img, (IMAGE_HEIGHT, IMAGE_HEIGHT))images[index] = img# TO DO:if filename[0:3] == 'cat':labels[index] = int(0)else:labels[index] = int(1)if index % 1000 == 0:print("Reading the %sth image" % index)class ImgData(object):passresult = ImgData()result.images = imagesresult.labels = labelsresult.num = num_filereturn resultdef convert(data, destination):"""Convert images to tfrecordsArgs:data: an object of ImgData, consisting of images, labels and number of imagesdestination: destination filename of tfrecords"""images = data.imageslabels = data.labelsnum_examples = data.num# filenale of tfrecordsfilename = destinationwriter = tf.python_io.TFRecordWriter(filename)for index in range(num_examples):image = images[index].tostring()label = labels[index]# Attention: Example -> Features -> Featureexample = tf.train.Example(features=tf.train.Features(feature={'image': tf.train.Feature(bytes_list=tf.train.BytesList(value=[image])),'label': tf.train.Feature(int64_list=tf.train.Int64List(value=[label]))}))writer.write(example.SerializeToString())writer.close()if __name__ == '__main__':path = 'kaggle/train'tfrecords_path = 'tfrecords/cat_dog.tfrecords'data = read_images(path)convert(data,tfrecords_paths)

然后直接命令python create_tfrecords.py

然后直接命令python catdog_train.py --tfrecords_name cat_dog \ --max_step 5000

运行结果:


查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 用C语言求1~100中能被6整除的所有整数的和。

    用C语言求1~100中能被6整除的所有整数的和。 代码如下&#xff1a; #include<stdio.h> int main(){ int i,sum0; for(i1;i<100;i){ if(i%60)sumsumi; } printf("%d",sum); return 0; }运行可得结果816。...

    2024/3/19 16:28:50
  2. MATLAB强化学习工具箱(三)-创建Simulink环境并训练智能体

    创建Simulink环境并训练智能体水箱模型创建环境界面创建DDPG智能体训练智能体验证训练的智能体本地函数本示例说明如何在watertank Simulink模型中转换PI控制器。使用强化学习深度确定性策略梯度&#xff08;DDPG&#xff09;智能体。 水箱模型 此示例的原始模型是水箱模型。…...

    2024/3/24 12:23:31
  3. 逻辑思维训练500题(带答案)

    第一章 假设法 一个真实的假设往往可以让事实呈现眼前&#xff0c;让真理浮出水面。一个人如果做什么事都可以让其思维以这些假设前提为基础&#xff0c;那么他便能真真正正地活在NLP里而不会陷入困境&#xff0c;他的人生也就会有更大地进步和提升。初级题&#xff1a;1&#…...

    2024/3/17 2:48:11
  4. 大神的ACM训练计划(详细)

    看完人家的博客&#xff0c;发现任重道远。。。 一位高手对我的建议&#xff1a; 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的 &#xff0c;主要时间是花在思考算法上&#xff0c;不是花在写程序与debug上。 下面给个计划你练练&#x…...

    2024/3/13 20:23:33
  5. char型变量中能不能存储一个中文汉字?为什么?

    char型变量是用来存储Unicode编码的字符的&#xff0c;unicode编码字符集中包含了汉字&#xff0c;所以&#xff0c;char型变量中当然可以存储汉字啦&#xff0c;不过&#xff0c;如果某个特殊的汉字没有被包含在unicode 编码字符集中&#xff0c;那么,这个char型变量中就不能存…...

    2024/3/16 18:08:35
  6. 编程输出1~100中能被3整除但不能被5整除的数,并统计有多少个这样的数

    代码如下&#xff1a; /** 编程输出1~100中能被3整除但不能被5整除的数,并统计有多少个这样的数*/public class beisanzhengchu {public static void main(String[] args) {int count 0;System.out.println("1~100中能被3整除但不能被5整除的数有&#xff1a;");fo…...

    2024/3/13 11:07:39
  7. caffe学习笔记(一): caffe训练流程(超详细)

    一、准备数据 1.得到文件列表清单 2.转换成Lmdb格式 在caffe中经常使用的数据类型是lmdb或leveldb&#xff0c;因此需要将原始图片文件转化为能够运行的db文件。在caffe中存在convert_imageset.cpp&#xff0c;存放在根目录下的tools文件夹下。编译之后&#xff0c;生成对应的…...

    2024/3/13 20:23:31
  8. Silicon Lab Ember Zigbee学习杂谈------zcl extension

    本文将讲述Ember zigbee如何对cluster library进行扩展&#xff0c;添加自定义cluster、command。 &#xff08;参考文档&#xff1a;UG102-AppFrameworkDevGuide --16 Extending the ZigBee Cluster Library (ZCL)&#xff09; Silicon Lab开发了一整套zigbee开发工具能够帮…...

    2024/3/13 8:04:15
  9. Java实现 蓝桥杯 算法训练 审美课

    算法训练 审美课 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB 提交此题 问题描述   《审美的历程》课上有n位学生&#xff0c;帅老师展示了m幅画&#xff0c;其中有些是梵高的作品&#xff0c;另外的都出自五岁小朋友之手。老师请同学们分辨哪些画的作者是梵高&am…...

    2024/3/14 21:48:11
  10. 逻辑思维训练500题

    本作品由翠鸟小说论坛&#xff08;http://www.cuiniao.net)提供下载&#xff0c;正文前序&#xff1a;思维训练让你更高、更强&#xff01; 前 言第一章 假设法第二章 计算法第三章 排除法第四章 分析法第五章 观察法前序&#xff1a;思维训练让你更高、更强&#xff01;当今时…...

    2024/3/14 21:48:10
  11. java中能在方法中定义方法吗?

    方法中不能直接定义方法&#xff0c;但可以在方法中定义类&#xff0c;类里面再定义方法&#xff1a; public static void main(String[] args) { class A { void test() { System.out.println("test()"); } } new A().test();}...

    2024/3/22 18:37:33
  12. ImageNet Classification with Deep Convolutional Neural Networks

    ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton 摘要 我们训练了一个大型的深度卷积神经网络&#xff0c;来将在ImageNet LSVRC-2010大赛中的120万张高清图像分为1000个不同的类别。对测试数据&#x…...

    2024/3/25 21:12:06
  13. char型变量中能不能存储一个中文汉字

    char型变量是用来存储Unicode编码的字符的&#xff0c;unicode编码字符集中包含了汉字&#xff0c;所以&#xff0c;char型变量中可以存储汉字啦。不过&#xff0c;如果某个特殊的汉字没有被包含在unicode编码字符集中&#xff0c;那么&#xff0c;这个char型变量中就不能存储这…...

    2024/3/14 21:48:06
  14. 用caffe训练测试自己的图片

    所有的操作是基于caffe的根目录/caffe-master/来操作的&#xff1a; 数据准备 我所用的图片是车牌识别中&#xff0c;0&#xff5e;9数字图片&#xff0c;在data下面新建一个number目录&#xff0c;用来存放训练图片&#xff08;caffenumimg_train&#xff09;与测试图片&…...

    2024/3/14 21:48:05
  15. 从键盘输入一个整数,判断该数字能否被 2 和 3 同时整除,能否被 2 整除, 能否被 3 整除,不能被 2 和 3 整除

    从键盘输入一个整数&#xff0c;判断该数字能否被 2 和 3 同时整除&#xff0c;能否被 2 整除&#xff0c;能否被 3 整除&#xff0c;不能被 2 和 3 整除。输出相应信息。a input() bint(a) if b%20 and b%30:print(该数字能被 2 和 3 同时整除) elif b%20:print(该数字能被 2…...

    2024/3/14 21:48:04
  16. QML中能使用什么JS库

    QML中能使用什么JS库 JavaScript 是由 ECMAScipt 宿主环境构成的。 也就是说宿主环境不同&#xff0c;使用 JavaScript 编写 的库一般也是不兼容的。 例如宿主环境有常见的浏览器&#xff0c;有 nodejs&#xff0c;有 IOST 智能合约&#xff0c;当然也有 QML。 一般情况下…...

    2024/3/14 21:48:03
  17. mybatis执行查询语句查询不到结果,控制台输出sql语句复制到数据库中能查到数据

    今天用mybatis查询语句的时候&#xff0c;控制台输出的sql语句可以在mysql中可以正确执行&#xff0c;但是查询出来就是没有数据。 原查询语句如下&#xff08;为展示问题明确&#xff0c;将sql进行了简化&#xff09;&#xff1a; <select id"getListByQueryValue&q…...

    2024/3/14 21:48:03
  18. 求数组中能被3整除的元素并打印输出。

    我这个程序执行定义一个数组&#xff0c;通过键盘输入数组元素&#xff0c;在输入的数组元素中找到能被3整除的元素并打印输出 int ar[]new int [5];Scanner scnew Scanner(System.in);for(int i0;i<5;i) {ar[i]sc.nextInt();}for(int j0;j<5;j) {if(ar[j]%30) System.ou…...

    2024/3/14 21:48:01
  19. 问题:Java中,char型变量中能不能存储一个中文汉字,为什么?

    为什么&#xff1f; char型变量是用来存储Unicode编码的字符的&#xff0c;unicode 编码字符集中包含了汉字&#xff0c;所以&#xff0c;char型变量中当然可以存储汉字。不过&#xff0c;如果某个特殊的汉字没有被包含在 unicode 编码字符集中&#xff0c;那么&#xff0c;这个…...

    2024/3/28 21:12:27
  20. 正数的原码,反码,补码

    这之前&#xff0c;遇到什么原码&#xff0c;反码&#xff0c;补码&#xff0c;就头疼&#xff0c;其实遇到一个自己怕的问题&#xff0c;就一定要解决它&#xff0c;吃掉它&#xff0c;这样心里的心结就解决了&#xff0c;不然等到以后&#xff0c;每次遇到都是跳过&#xff0…...

    2024/3/14 21:48:00

最新文章

  1. windows下金仓Kingbasev7数据库许可license.dat更换的方法

    1、去官网下载最新授权文件 地址&#xff1a;人大金仓-成为世界卓越的数据库产品与服务提供商 2、找到自己kingbase 下载的路径 将下载好的license.dat 替换掉 kingbase\KESRealPro\V009R001C001B0025 3、services.msc 重启 kingbase服务...

    2024/3/28 22:53:10
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. [openGL] qt5版本+mingw编译Assimp库+调用

    目录 一 版本 二 编译问题 三 CMAKE准备 四 开始编译 4.1 准备Assimp源码 4.2 编译工具准备 4.3 生成Assimp库 4.4 使用Assimp 4.4.1 准备 4.4.2 加载模型 4.4.3 模型效果 一 版本 Assimp官网上已经停止更新截至在3.3.1版本,但是这个版本编译是最稳定的,较新的版本…...

    2024/3/28 22:40:21
  4. 编译执行篇

    文章目录 11.1 compile()11.2 eval()11.3 exec()11.4 repr() 11.1 compile() 在Python中&#xff0c;compile()是一个内置函数&#xff0c;用于将字符串编译成字节码或AST&#xff08;抽象语法树&#xff09;对象&#xff0c;以便稍后被exec()或eval()函数执行。这对于执行动态…...

    2024/3/27 14:42:43
  5. 【计算机视觉】三、图像处理——实验:图像去模糊和去噪、提取边缘特征

    文章目录 0. 实验环境1. 理论基础1.1 滤波器&#xff08;卷积核&#xff09;1.2 PyTorch:卷积操作 2. 图像处理2.1 图像读取2.2 查看通道2.3 图像处理 3. 图像去模糊4. 图像去噪4.1 添加随机噪点4.2 图像去噪 0. 实验环境 本实验使用了PyTorch深度学习框架&#xff0c;相关操作…...

    2024/3/28 21:21:42
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/3/27 10:21:24
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/3/24 20:11:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/3/18 12:12:47
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/3/24 20:11:23
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/3/26 20:58:42
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/3/28 17:01:12
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/3/24 5:55:47
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/3/27 10:28:22
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/3/26 23:04:51
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/3/26 11:20:25
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/3/24 20:11:18
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/3/28 9:10:53
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/3/24 20:11:16
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/3/24 20:11:15
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/3/27 7:12:50
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/3/24 20:11:13
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/3/26 11:21:23
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/3/28 18:26:34
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/3/28 12:42:28
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/3/28 20:09:10
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57