我最近开始使用Google
Colab,并且想训练我的第一个卷积神经网络。我进口从我的谷歌驱动器感谢图像,我得到了答案在这里。
然后,我将代码粘贴以将CNN创建到Colab中,并开始了该过程。这是完整的代码:
(第1部分是从这里复制的,因为它对我来说是有效的
第1步:
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
第2步:
from google.colab import auth
auth.authenticate_user()
第三步:
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
步骤4:
!mkdir -p drive
!google-drive-ocamlfuse drive
步骤5:
print('Files in Drive:')
!ls drive/
我使用Udemy课程的教程创建了这个CNN。它使用带有tensorflow的keras作为后端。为了简单起见,我上传了一个非常简单的版本,足以显示我的问题
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from keras.layers import Dropout
from keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator
参数
imageSize=32
batchSize=64
epochAmount=50
有线电视新闻网
classifier=Sequential()
classifier.add(Conv2D(32, (3, 3), input_shape = (imageSize, imageSize, 3), activation = 'relu')) #convolutional layer
classifier.add(MaxPooling2D(pool_size = (2, 2))) #pooling layer
classifier.add(Flatten())
人工神经网络
classifier.add(Dense(units=64, activation='relu')) #hidden layer
classifier.add(Dense(units=1, activation='sigmoid')) #output layer
classifier.compile(optimizer = "adam", loss = 'binary_crossentropy', metrics = ['accuracy']) #training method
图像预处理
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory('drive/School/sem-2-2018/BSP2/UdemyCourse/CNN/dataset/training_set',
target_size = (imageSize, imageSize),
batch_size = batchSize,
class_mode = 'binary')
test_set = test_datagen.flow_from_directory('drive/School/sem-2-2018/BSP2/UdemyCourse/CNN/dataset/test_set',
target_size = (imageSize, imageSize),
batch_size = batchSize,
class_mode = 'binary')
classifier.fit_generator(training_set,
steps_per_epoch = (8000//batchSize),
epochs = epochAmount,
validation_data = test_set,
validation_steps = (2000//batchSize))
首先,我使用的训练集是一个数据库,其中包含10000张各种分辨率的猫狗照片。(8000个培训设置,2000个测试设置)
我在Google Colab(启用了GPU支持)和PC(GTX 1060上的tensorflow-gpu)上运行了这个CNN
这是我电脑的中间结果:
Epoch 2/50
63/125 [==============>...............] - ETA: 2s - loss: 0.6382 - acc: 0.6520
这是来自Colab的:
Epoch 1/50
13/125 [==>...........................] - ETA: 1:00:51 - loss: 0.7265 - acc: 0.4916
为什么我的情况下Google Colab这么慢?
就我个人而言,我怀疑存在一个瓶颈,其中包括从云端硬盘中拉取然后读取图像,但是除了选择其他导入数据库的方法外,我不知道该如何解决。
正如@
Feng已经指出的那样,从驱动器读取文件非常慢。本教程建议使用某种类型的内存映射文件,例如hdf5或lmdb,以解决此问题。这样,I \
O操作会更快(有关hdf5格式的速度增益的完整说明,请参见this)。
已定义查询的Dao: 来自Hibernate调试日志的SQL: 当我在数据库上执行这个查询时,大约需要15ms,从代码上执行大约需要1.5秒。我在代码中注释掉了这一行,滞后消失了,所以问题肯定是这个jpql选择。 数据库连接配置: 更新1: debug.log:
null null null
问题内容: 我有两张表。表单有〜77000行。日志大约有270万行。 以下查询在不到一秒钟的时间内返回“ 30198”: 到目前为止,此查询已运行了约15分钟,但尚未完成: 为什么“不相等”查询 这么 慢? 问题答案: 因为将连接操作从每个表减少到一个匹配行(假定这些docid是唯一的)。 这样想吧-您跳了5个男孩和5个女孩的舞蹈: 您用第一个字母将它们配对。所以 一对配对 但是,如果您通过“首字
JavaScript 有两种方式判断两个值是否相等。 等于操作符 等于操作符由两个等号组成:== JavaScript 是弱类型语言,这就意味着,等于操作符会为了比较两个值而进行强制类型转换。 "" == "0" // false 0 == "" // true 0 == "0"
我使用的是tensorflow 1.10 Python 3.6 我的代码基于TensorFlow提供的预制虹膜分类模型。这意味着,我使用的是一个Tensorflow DNN预制的分类器,区别如下: 10个功能改为4个。 5个类改为3个。 我做了一个代码将这个分类器导出为tflite格式,但是python模型中的准确率高于75%,但是当导出时,准确率大约下降到45%,这意味着大约30%的准确率丢失了
问题内容: 我发布了这个问题,因为我想知道我是否做错了什么严重的事情才能获得此结果。 我有一个中等大小的csv文件,尝试使用numpy加载它。为了说明,我使用python制作了文件: 然后,我尝试了两种方法:numpy.genfromtxt,numpy.loadtxt 结果表明 t1 = 32.159652940464184,t2 = 52.00093725634724 。 但是,当我尝试使用ma