老式Keras命令”Convolution2D”的现代语法?

我在研究不同的CNN架构来预测CIFAR10数据集时,发现了一个有趣的GitHub仓库:

https://gist.github.com/wielandbrendel/ccf1ff6f8f92139439be

我尝试运行这个模型,但它是六年前创建的,以下Keras命令已不再有效:

model.add(Convolution2D(32, 3, 3, 3, border_mode=’full’))

这个命令如何转换为现代Keras语法中的Conv2D

当我尝试在Convolution2D(32, 3, 3, 3, ...)中输入一系列整数时,Keras会报错?我猜32是通道数,然后我们指定一个3x3的内核大小,但我对最后一个3(第四个位置)的含义不太确定。

附注:将border_mode改为padding = 'valid''same'会返回以下错误:

    model.add(Convolution2D(32, 3, 3, 3, padding='valid'))TypeError: __init__() got multiple values for argument 'padding'

回答:

你所关注的gist已经过时,并且存在一些问题。你现在不需要遵循这个。这里是它的更新版本。试试这个。

导入和数据集

from tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import (Dense, Dropout, Activation,                                     Flatten, Conv2D, MaxPooling2D)from tensorflow.keras.optimizers import SGD, Adadelta, Adagradimport tensorflow as tf # parametersbatch_size = 32nb_classes = 10nb_epoch = 5# the data, shuffled and split between tran and test sets(X_train, y_train), (X_test, y_test) = tf.keras.datasets.cifar10.load_data()# convert class vectors to binary class matricesY_train = tf.keras.utils.to_categorical(y_train, nb_classes) Y_test = tf.keras.utils.to_categorical(y_test, nb_classes)# train modelX_train = X_train.astype("float32") / 255X_test = X_test.astype("float32") / 255X_train.shape, y_train.shape, X_test.shape, y_test.shape((50000, 32, 32, 3), (50000, 1), (10000, 32, 32, 3), (10000, 1))

建模

model = Sequential()model.add(Conv2D(filters=32, kernel_size=(3, 3),                  strides=(1, 1), activation='relu', padding="same"))model.add(Activation('relu'))model.add(Conv2D(filters=32, kernel_size=(3, 3),                 strides=(1, 1), activation='relu', padding="same"))model.add(Activation('relu'))model.add(MaxPooling2D((2, 2)))model.add(Dropout(0.25))model.add(Conv2D(filters=32, kernel_size=(3, 3),                  strides=(1, 1), activation='relu', padding="same"))model.add(Activation('relu'))model.add(Conv2D(filters=32, kernel_size=(3, 3),                  strides=(1, 1), activation='relu', padding="same"))model.add(Activation('relu'))model.add(MaxPooling2D((2, 2)))model.add(Dropout(0.25))model.add(Flatten())model.add(Dense(512))model.add(Activation('relu'))model.add(Dropout(0.5))model.add(Dense(nb_classes))model.add(Activation('softmax'))# let's train the model using SGD + momentum (how original).sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

编译和运行

model.fit(X_train, Y_train, batch_size=batch_size, epochs=nb_epoch)# test score & top 1 performancescore = model.evaluate(X_test, Y_test, batch_size=batch_size)y_hat = model.predict(X_test)yhat = np.argmax(y_hat, 1)top1 = np.mean(yhat == np.squeeze(y_test))print('Test score/Top1', score, top1)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注