Questions tagged «keras»

Keras是一个神经网络库,在Python和R中提供了高级API。对于与如何使用此API有关的问题,请使用此标签。还请包含您使用的语言/后端的标签([python],[r],[tensorflow],[theano],[cntk])。如果您正在使用tensorflow的内置keras,请使用[tf.keras]标签。

3
了解Keras LSTM
我试图调和对LSTM的理解,并在克里斯托弗·奥拉(Christopher Olah)在Keras中实现的这篇文章中指出了这一点。我正在关注Jason Brownlee为Keras教程撰写的博客。我主要感到困惑的是 将数据系列重塑为 [samples, time steps, features]和, 有状态的LSTM 让我们参考下面粘贴的代码专注于以上两个问题: # reshape into X=t and Y=t+1 look_back = 3 trainX, trainY = create_dataset(train, look_back) testX, testY = create_dataset(test, look_back) # reshape input to be [samples, time steps, features] trainX = numpy.reshape(trainX, (trainX.shape[0], look_back, 1)) testX = numpy.reshape(testX, (testX.shape[0], look_back, 1)) …

2
Keras输入说明:input_shape,units,batch_size,dim等
对于任何Keras层(Layer类),有人可以解释如何理解之间的区别input_shape,units,dim,等? 例如,文档说units指定图层的输出形状。 在神经网络的图像下面hidden layer1有4个单位。这是否直接转换为对象的units属性Layer?还是units在Keras中等于隐藏层中每个权重的形状乘以单位数? 简而言之,如何利用下面的图像来理解/可视化模型的属性,尤其是图层的属性?

7
我在哪里可以在Keras中调用BatchNormalization函数?
如果我想在Keras中使用BatchNormalization函数,那么是否仅需要在开始时调用一次? 我为此阅读了该文档:http : //keras.io/layers/normalization/ 我看不到该怎么称呼它。下面是我尝试使用它的代码: model = Sequential() keras.layers.normalization.BatchNormalization(epsilon=1e-06, mode=0, momentum=0.9, weights=None) model.add(Dense(64, input_dim=14, init='uniform')) model.add(Activation('tanh')) model.add(Dropout(0.5)) model.add(Dense(64, init='uniform')) model.add(Activation('tanh')) model.add(Dropout(0.5)) model.add(Dense(2, init='uniform')) model.add(Activation('softmax')) sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) model.compile(loss='binary_crossentropy', optimizer=sgd) model.fit(X_train, y_train, nb_epoch=20, batch_size=16, show_accuracy=True, validation_split=0.2, verbose = 2) 我问,因为如果我用第二行(包括批处理规范化)运行代码,而如果我不使用第二行运行代码,则会得到类似的输出。因此,要么我没有在正确的位置调用该函数,要么我猜它并没有太大的区别。

11
为什么binary_crossentropy和categorical_crossentropy对同一问题给出不同的性能?
我正在尝试训练CNN以按主题对文本进行分类。当我使用二进制交叉熵时,我的精度约为80%,而使用分类交叉熵时,我的精度约为50%。 我不明白为什么会这样。这是一个多类问题,这是否意味着我必须使用分类交叉熵,而具有二进制交叉熵的结果却毫无意义? model.add(embedding_layer) model.add(Dropout(0.25)) # convolution layers model.add(Conv1D(nb_filter=32, filter_length=4, border_mode='valid', activation='relu')) model.add(MaxPooling1D(pool_length=2)) # dense layers model.add(Flatten()) model.add(Dense(256)) model.add(Dropout(0.25)) model.add(Activation('relu')) # output layer model.add(Dense(len(class_id_index))) model.add(Activation('softmax')) 然后我将其categorical_crossentropy作为损失函数像这样编译它: model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 要么 model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 从直觉上讲,为什么我要使用分类交叉熵是合理的,我不明白为什么使用二进制得到好的结果,而使用分类不好的原因。

10
Keras,如何获得每一层的输出?
我已经使用CNN训练了二进制分类模型,这是我的代码 model = Sequential() model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='valid', input_shape=input_shape)) model.add(Activation('relu')) model.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1])) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=pool_size)) # (16, 16, 32) model.add(Convolution2D(nb_filters*2, kernel_size[0], kernel_size[1])) model.add(Activation('relu')) model.add(Convolution2D(nb_filters*2, kernel_size[0], kernel_size[1])) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=pool_size)) # (8, 8, 64) = (2048) model.add(Flatten()) model.add(Dense(1024)) model.add(Activation('relu')) model.add(Dropout(0.5)) model.add(Dense(2)) # define a binary classification problem model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy']) model.fit(x_train, …

10
如何使用Keras的Tensorboard回调?
我已经用Keras建立了一个神经网络。我将通过Tensorboard可视化其数据,因此我利用了: keras.callbacks.TensorBoard(log_dir='/Graph', histogram_freq=0, write_graph=True, write_images=True) 如keras.io中所述。运行回调时,我得到了<keras.callbacks.TensorBoard at 0x7f9abb3898>,但是文件夹“ Graph”中没有任何文件。我使用此回调的方式有问题吗?
143 keras  tensorboard 

2
为什么TensorFlow 2比TensorFlow 1慢得多?
许多用户都将其作为切换到Pytorch的原因,但是我还没有找到牺牲/最渴望的实用质量,速度和执行力的理由/解释。 以下是代码基准测试性能,即TF1与TF2的对比-TF1的运行速度提高了47%至276%。 我的问题是:在图形或硬件级别上,什么导致如此显着的下降? 寻找详细的答案-已经熟悉广泛的概念。相关的Git 规格:CUDA 10.0.130,cuDNN 7.4.2,Python 3.7.4,Windows 10,GTX 1070 基准测试结果: UPDATE:禁用每下面的代码不会急于执行没有帮助。但是,该行为是不一致的:有时以图形方式运行会有所帮助,而其他时候其运行速度要比 Eager 慢。 由于TF开发人员没有出现在任何地方,因此我将自己进行调查-可以跟踪相关Github问题的进展。 更新2:分享大量实验结果,并附有解释;应该在今天完成。 基准代码: # use tensorflow.keras... to benchmark tf.keras; used GPU for all above benchmarks from keras.layers import Input, Dense, LSTM, Bidirectional, Conv1D from keras.layers import Flatten, Dropout from keras.models import Model from keras.optimizers import Adam …

10
Tensorflow 2.0-AttributeError:模块'tensorflow'没有属性'Session'
sess = tf.Session()在Tensorflow 2.0环境中执行命令时,出现如下错误消息: Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'tensorflow' has no attribute 'Session' 系统信息: 操作系统平台和发行版:Windows 10 python版本:3.7.1 Tensorflow版本:2.0.0-alpha0(随pip一起安装) 重现步骤: 安装: 点安装-升级点 pip install tensorflow == 2.0.0-alpha0 点安装keras 点安装numpy == 1.16.2 执行: 执行命令:将tensorflow导入为tf 执行命令:sess = tf.Session()


18
如何修复imdb.load_data()函数的“ allow_pickle = False时无法加载对象数组”?
我正在尝试使用Google Colab中的IMDb数据集实现二进制分类示例。我以前已经实现了此模型。但是,几天后我再次尝试执行此操作时,它返回一个值错误:对于load_data()函数,当allow_pickle = False时无法加载对象数组。 我已经尝试解决此问题,请参考一个类似问题的现有答案:如何修复sketch_rnn算法中的“当allow_pickle = False时无法加载对象数组”, 但事实证明,仅添加allow_pickle参数是不够的。 我的代码: from keras.datasets import imdb (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000) 错误: ValueError Traceback (most recent call last) <ipython-input-1-2ab3902db485> in <module>() 1 from keras.datasets import imdb ----> 2 (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000) 2 frames /usr/local/lib/python3.6/dist-packages/keras/datasets/imdb.py in load_data(path, num_words, skip_top, maxlen, …
113 python  numpy  keras 

2
Keras中的多对一和多对多LSTM示例
我尝试了解LSTM以及如何使用Keras构建它们。我发现,主要有4种模式可以运行RNN(图中的4种正确模式) 图片来源:Andrej Karpathy 现在,我想知道在Keras中,每个代码的简约代码段看起来如何。所以像 model = Sequential() model.add(LSTM(128, input_shape=(timesteps, data_dim))) model.add(Dense(1)) 对于这4个任务中的每一个,也许需要一点解释。

5
“ Flatten”在Keras中的作用是什么?
我试图了解该Flatten功能在Keras中的作用。下面是我的代码,它是一个简单的两层网络。它接收形状为(3,2)的二维数据,并输出形状为(1,4)的一维数据: model = Sequential() model.add(Dense(16, input_shape=(3, 2))) model.add(Activation('relu')) model.add(Flatten()) model.add(Dense(4)) model.compile(loss='mean_squared_error', optimizer='SGD') x = np.array([[[1, 2], [3, 4], [5, 6]]]) y = model.predict(x) print y.shape 打印出y形状为(1、4)的图形。但是,如果我删除该Flatten行,则会打印出y形状为(1、3、4)的行。 我不明白 根据我对神经网络的理解,该model.add(Dense(16, input_shape=(3, 2)))函数正在创建一个具有16个节点的隐藏的全连接层。这些节点中的每个都连接到3x2输入元素中的每个。因此,该第一层输出处的16个节点已经“平坦”。因此,第一层的输出形状应为(1、16)。然后,第二层将此作为输入,并输出形状为(1、4)的数据。 因此,如果第一层的输出已经“平坦”并且形状为(1,16),为什么还要进一步使其平坦?


5
什么是Keras中的嵌入?
Keras文档尚不清楚这到底是什么。我知道我们可以使用它来将输入要素空间压缩为较小的空间。但是,从神经设计的角度来看,这是怎么做的呢?它是自动编码器吗,RBM?
97 keras 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.