我试图了解该Flatten功能在Keras中的作用.下面是我的代码,这是一个简单的双层网络.它接收形状(3,2)的二维数据,并输出形状(1,4)的1维数据:
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
Run Code Online (Sandbox Code Playgroud)
这打印出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),为什么我需要进一步压平它?
谢谢!
machine-learning neural-network deep-learning keras tensorflow
我正在尝试按如下方式训练以下 CNN,但我一直收到关于 .cuda() 的相同错误,我不知道如何修复它。到目前为止,这是我的一段代码。
import matplotlib.pyplot as plt
import numpy as np
import torch
from torch import nn
from torch import optim
import torch.nn.functional as F
import torchvision
from torchvision import datasets, transforms, models
from torch.utils.data.sampler import SubsetRandomSampler
data_dir = "/home/ubuntu/ML2/ExamII/train2/"
valid_size = .2
# Normalize the test and train sets with torchvision
train_transforms = transforms.Compose([transforms.Resize(224),
transforms.ToTensor(),
])
test_transforms = transforms.Compose([transforms.Resize(224),
transforms.ToTensor(),
])
# ImageFolder class to load the train and test images
train_data = datasets.ImageFolder(data_dir, transform=train_transforms)
test_data = datasets.ImageFolder(data_dir, …Run Code Online (Sandbox Code Playgroud) 我正在使用Keras为我的项目训练神经网络.Keras提供了早期停止的功能.我是否应该知道应该观察哪些参数以避免我的神经网络过度拟合使用早期停止?
我正在寻找一种方法来计算层数和每层神经元的数量.作为输入,我只有输入向量的大小,输出向量的大小和trainig集的大小.
通常,通过尝试不同的网络拓扑并选择具有最小误差的网络来确定最佳网络.不幸的是我做不到.
artificial-intelligence machine-learning neural-network deep-learning
我注意到在培训期间经常出现这种情况NAN.
通常情况下,内部产品/完全连接或卷积层中的重量似乎会被引入.
这是因为梯度计算正在爆发吗?或者是因为重量初始化(如果是这样,为什么重量初始化会产生这种效果)?或者它可能是由输入数据的性质引起的?
这里的首要问题很简单:在培训期间发生NAN的最常见原因是什么?其次,有什么方法可以解决这个问题(为什么它们有效)?
machine-learning neural-network gradient-descent deep-learning caffe
我试图在python中为tensorflow变量赋一个新值.
import tensorflow as tf
import numpy as np
x = tf.Variable(0)
init = tf.initialize_all_variables()
sess = tf.InteractiveSession()
sess.run(init)
print(x.eval())
x.assign(1)
print(x.eval())
Run Code Online (Sandbox Code Playgroud)
但我得到的输出是
0
0
Run Code Online (Sandbox Code Playgroud)
所以价值没有改变.我错过了什么?
python variable-assignment neural-network deep-learning tensorflow
我正在玩路透社示例数据集,它运行正常(我的模型已经过培训).我读到了如何保存模型,所以我可以稍后加载它再次使用.但是如何使用此保存的模型来预测新文本?我用models.predict()吗?
我是否必须以特殊方式准备此文本?
我试过了
import keras.preprocessing.text
text = np.array(['this is just some random, stupid text'])
print(text.shape)
tk = keras.preprocessing.text.Tokenizer(
nb_words=2000,
filters=keras.preprocessing.text.base_filter(),
lower=True,
split=" ")
tk.fit_on_texts(text)
pred = tk.texts_to_sequences(text)
print(pred)
model.predict(pred)
Run Code Online (Sandbox Code Playgroud)
但我总是得到
(1L,)
[[2, 4, 1, 6, 5, 7, 3]]
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-83-42d744d811fb> in <module>()
7 print(pred)
8
----> 9 model.predict(pred)
C:\Users\bkey\Anaconda2\lib\site-packages\keras\models.pyc in predict(self, x, batch_size, verbose)
457 if self.model is None:
458 self.build()
--> 459 return self.model.predict(x, batch_size=batch_size, verbose=verbose)
460
461 def predict_on_batch(self, x): …Run Code Online (Sandbox Code Playgroud) 我一直在玩,Deep Dream并Inceptionism使用Caffe框架来可视化层GoogLeNet,这是一个为Imagenet项目构建的架构,一个专为视觉对象识别而设计的大型可视化数据库.
Imagenet可以在这里找到:Imagenet 1000类.
为了探究架构并产生"梦想",我使用了三个笔记本:
https://github.com/kylemcdonald/deepdream/blob/master/dream.ipynb
https://github.com/auduno/deepdraw/blob/master/deepdraw.ipynb
这里的基本思想是从模型或"指南"图像中提取指定图层中每个通道的一些特征.
然后我们将我们希望修改的图像输入到模型中,并在指定的同一层中提取特征(对于每个八度音阶),增强最佳匹配特征,即两个特征向量的最大点积.
到目前为止,我已经设法使用以下方法修改输入图像和控制梦想:
- (a)将图层用作
'end'输入图像优化的目标.(见功能可视化)- (b)使用第二图像来指导输入图像上的de优化目标.
- (c)可视化
Googlenet由噪声产生的模型类.
但是,我想要实现的效果介于这些技术之间,我没有找到任何文档,论文或代码.
要使一个属于给定
'end'层的单个类或单元(a)引导优化目标(b)并使该类在输入图像上可视化(c):
一个例子,其中class = 'face'和input_image = 'clouds.jpg':
请注意:上面的图像是使用面部识别模型生成的,该模型未经过Imagenet数据集培训.仅用于演示目的.
方法(a)
from cStringIO import StringIO
import numpy as np
import scipy.ndimage as nd
import PIL.Image
from IPython.display import clear_output, Image, display
from google.protobuf …Run Code Online (Sandbox Code Playgroud) 我正在研究TensorFlow以及如何使用它,即使我不是神经网络和深度学习(只是基础知识)的专家.
以下教程中,我不理解三个优化器之间的实际差异.我看看API,我理解原则,但我的问题是:
1.何时优先使用一个而不是其他一个?
2.知道有重要的区别吗?
我有一个来自MNIST数据集的pkl文件,它由手写的数字图像组成.
我想看看每个数字图像,所以我需要解压缩pkl文件,除了我不知道如何.
有没有办法解压缩/解压缩pkl文件?
deep-learning ×10
python ×5
keras ×3
tensorflow ×3
caffe ×2
deep-dream ×1
imagenet ×1
mnist ×1
pickle ×1
python-3.x ×1
pytorch ×1
theano ×1