Python 为什么谷歌Colab要花这么长时间来学习这些简单的神经网络?
我试图在google colab上运行以下代码:Python 为什么谷歌Colab要花这么长时间来学习这些简单的神经网络?,python,keras,scikit-learn,google-colaboratory,Python,Keras,Scikit Learn,Google Colaboratory,我试图在google colab上运行以下代码: import numpy as np import seaborn as sns import matplotlib.pyplot as plt from keras import models from keras import layers from keras.datasets import boston_housing from sklearn.model_selection import KFold from sklearn.model
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from keras import models
from keras import layers
from keras.datasets import boston_housing
from sklearn.model_selection import KFold
from sklearn.model_selection import ShuffleSplit
from sklearn.model_selection import GridSearchCV
from keras.wrappers.scikit_learn import KerasRegressor
from sklearn.metrics import mean_squared_error
sns.set()
(train_data,train_targets),(test_data,test_targets)=boston_housing.load_data()
mean=np.mean(train_data)
std=np.std(train_data)
train_data_norm=(train_data-mean)/std
test_data_norm=(test_data-mean)/std
def build_model():
model=models.Sequential()
model.add(layers.Dense(64,activation="relu",
input_shape=(train_data_norm.shape[1],)))
model.add(layers.Dense(64,activation="relu"))
model.add(layers.Dense(1))
model.compile(optimizer='rmsprop',loss="mse",metrics=["mae"])
return model
model=KerasRegressor(build_fn=build_model,epochs=30,verbose=0)
param_grid = {"epochs":range(1,11)}
kf1=KFold(n_splits=5, random_state=None, shuffle=False) #n_splits = number of folds
kf2=KFold(n_splits=5, random_state=1, shuffle=True)
ss = ShuffleSplit(n_splits=5,test_size=0.20,random_state=1)
grid_model_KFFalse=GridSearchCV(model,param_grid,cv=kf1,n_jobs=-1,scoring='neg_mean_squared_error')
grid_model_KFTrue=GridSearchCV(model,param_grid,cv=kf2,n_jobs=-1,scoring='neg_mean_squared_error')
grid_model_SS=GridSearchCV(model,param_grid,cv=ss,n_jobs=-1,scoring='neg_mean_squared_error')
listKFFalse=[]
listKFTrue=[]
listSS=[]
for i in range(1,21):
grid_model_KFFalse.fit(train_data, train_targets)
grid_model_KFTrue.fit(train_data, train_targets)
grid_model_SS.fit(train_data, train_targets)
mseKFFalse=mean_squared_error(grid_model_KFFalse.predict(test_data),test_targets)
mseKFTrue=mean_squared_error(grid_model_KFTrue.predict(test_data),test_targets)
mseSS=mean_squared_error(grid_model_SS.predict(test_data),test_targets)
listKFFalse=np.append(listKFFalse,[mseKFFalse])
listKFTrue=np.append(listKFTrue,[mseKFTrue])
listSS=np.append(listSS,[mseSS])
你可以查一下
我已经在我的笔记本电脑上运行了1次,在jupyter笔记本上运行,而不是21次,最慢的部分在“for”块中,但这是意料之中的
代码编译没有错误,因为我已经成功地运行了5个周期/模拟,没有问题
然而,这需要很长时间。。。我不知道为什么会这样。google colab在使用keras学习神经网络时不应该使用GPU(或TPU)吗?我已经将运行时类型更改为GPU或TPU,但仍然非常慢。来自
似乎太好了,不可能是真的。限制是什么?
Colab资源没有保证,也不是无限的,有时使用限制也是有限的
波动这对于Colab能够提供资源是必要的
免费的。有关详细信息,请参阅
从
似乎太好了,不可能是真的。限制是什么?
Colab资源没有保证,也不是无限的,有时使用限制也是有限的
波动这对于Colab能够提供资源是必要的
免费的。有关详细信息,请参阅
关于TPU的使用,如果您参考,您将看到一些连接到TPU的代码片段:
tpu = tf.distribute.cluster_resolver.TPUClusterResolver()
tf.config.experimental_connect_to_cluster(tpu)
tf.tpu.experimental.initialize_tpu_system(tpu)
tpu_strategy = tf.distribute.experimental.TPUStrategy(tpu)
在提供的snippet/colab中,没有使用TPU,这就是为什么您看不到性能上的差异。如果要使用TPU,您需要从基本的
keras
迁移到tf.keras
,并使用分发策略。关于TPU的使用,如果您参考,您将看到一些连接到TPU的代码片段:
tpu = tf.distribute.cluster_resolver.TPUClusterResolver()
tf.config.experimental_connect_to_cluster(tpu)
tf.tpu.experimental.initialize_tpu_system(tpu)
tpu_strategy = tf.distribute.experimental.TPUStrategy(tpu)
在提供的snippet/colab中,没有使用TPU,这就是为什么您看不到性能上的差异。如果要使用TPU,您需要从基本的keras
迁移到tf.keras
,并使用分发策略