我已经安装了Keras,并希望将后端切换到Theano.我查看了这篇文章,但仍然不知道在哪里放置创建的json文件.另外,下面是我import keras
在Python Shell中运行时遇到的错误:
使用TensorFlow后端.
回溯(最近一次调用最后一次):文件"",第1行,在导入keras文件"C:\ Python27\lib\site-packages\keras__init __.py",第2行,来自.从.tensorflow_backend import*文件"C:\ Python27\lib\site-packages\keras\backend\tensorflow_backend"导入后端文件"C:\ Python27\lib\site-packages\keras\backend__init __.py",第64行. py",第1行,在导入张量流中为tf ImportError:没有名为tensorflow的模块
python -c "import keras; print(keras.__version__)"
从Windows命令行运行时,我得到:
使用TensorFlow后端.回溯(最近一次调用最后一次):文件"",第1行,在文件"C:\ Python27\lib\site-packages\keras__init __.py",第2行,来自.从.tensorflow_backend import*文件"C:\ Python27\lib\site-packages\keras\backend\tensorflow_backend"导入后端文件"C:\ Python27\lib\site-packages\keras\backend__init __.py",第64行. py",第1行,在导入张量流中为tf ImportError:没有名为tensorflow的模块
有人可以帮忙吗?谢谢!
我正在开展一个项目,我需要将10行3列的绘图网格组合在一起.虽然我已经能够绘制并绘制子图,但是我无法生成一个没有空格的漂亮图,例如下面的gridspec文档..
我尝试了以下帖子,但仍然无法像示例图像中那样完全删除空白区域.有人可以给我一些指导吗?谢谢!
以下是我的代码.完整的脚本在GitHub上.注意:images_2和images_fool都是具有形状(1032,10)的扁平图像的numpy阵列,而delta是形状的图像阵列(28,28).
def plot_im(array=None, ind=0):
"""A function to plot the image given a images matrix, type of the matrix: \
either original or fool, and the order of images in the matrix"""
img_reshaped = array[ind, :].reshape((28, 28))
imgplot = plt.imshow(img_reshaped)
# Output as a grid of 10 rows and 3 cols with first column being original, second being
# delta and third column being adversaril
nrow = 10
ncol = 3 …
Run Code Online (Sandbox Code Playgroud) 我有一个三维numpy图像数组(CIFAR-10数据集).图像阵列形状如下所示:
a = np.random.rand(32, 32, 3)
Run Code Online (Sandbox Code Playgroud)
在我深入学习之前,我想对数据进行规范化以获得更好的结果.使用一维数组,我知道我们可以像这样做最小最大规范化:
v = np.random.rand(6)
(v - v.min())/(v.max() - v.min())
Out[68]:
array([ 0.89502294, 0. , 1. , 0.65069468, 0.63657915,
0.08932196])
Run Code Online (Sandbox Code Playgroud)
然而,当谈到3D阵列时,我完全迷失了.具体来说,我有以下问题:
我感谢您的帮助!
编辑:事实证明我需要使用具有形状的4D Numpy数组(202, 32, 32, 3)
,因此第一个维度将是图像的索引,最后3个维度是实际图像.如果有人可以为我提供规范化这样一个4D阵列的代码,那就太棒了.谢谢!
编辑2:感谢@ Eric的代码,我已经弄明白了:
x_min = x.min(axis=(1, 2), keepdims=True)
x_max = x.max(axis=(1, 2), keepdims=True)
x = (x - x_min)/(x_max-x_min)
Run Code Online (Sandbox Code Playgroud) 我正在研究 Kaggle 数据集:https ://www.kaggle.com/c/santander-customer-satisfaction 。我知道在 PCA 之前需要某种特征缩放。我从这篇文章和这篇文章中读到标准化是最好的,但是标准化给了我最高的性能(AUC-ROC)。
我尝试了 sklearn 的所有特征缩放方法,包括:RobustScaler()、Normalizer()、MinMaxScaler()、MaxAbsScaler() 和 StandardScaler()。然后使用缩放数据,我做了 PCA。但事实证明,获得的 PCA 的最佳数量在这些方法之间差异很大。
这是我使用的代码:
# Standardize the data
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# Find the optimal number of PCA
pca = PCA(n_components=X_train_scaled.shape[1])
pca.fit(X_train_scaled)
ratios = pca.explained_variance_ratio_
# Plot the explained variance ratios
x = np.arange(X_train_scaled.shape[1])
plt.plot(x, np.cumsum(ratios), '-o')
plt.xlabel("Number of PCA's")
plt.ylabel("Cumulated Sum of Explained Variance")
plt.title("Variance Explained by PCA's")
# Find the optimal number of PCA's
for i in range(np.cumsum(ratios).shape[0]): …
Run Code Online (Sandbox Code Playgroud) 在Jupyter Notebook中,通过"File-Download as-PDF via LaTeX(.pdf)",我将笔记本下载为pdf文件.但是,我的许多代码块都打印在PDF页面边距之外 - 即对于较长的代码行,它们会在pdf页面的右边界处被剪切掉.任何方法来解决这个问题,以便我可以有一个可读的PDF文档(除了手动添加每行的硬回报或在这篇文章中建议的方式?谢谢!
在ImageNet上的Breaking Linear Classifiers中,作者提出了以下方法来创建欺骗ConvNets的对抗图像:
简而言之,为了创建一个愚蠢的图像,我们从我们想要的任何图像(实际图像,甚至是噪声模式)开始,然后使用反向传播来计算任何类别得分上的图像像素的渐变,并轻推它.我们可以,但不必,重复几次这个过程.您可以将此设置中的反向传播解释为使用动态编程来计算对输入的最具破坏性的局部扰动.请注意,如果您可以访问ConvNet的参数(backprop很快),此过程非常有效并且花费的时间可以忽略不计,但即使您无法访问参数但只能访问类别分数,也可以执行此操作在末尾.在这种情况下,可以用数字方式计算数据梯度,或者使用其他局部随机搜索策略等.注意,由于后一种方法,即使是非可微分类器(例如随机森林)也不安全(但我还没见过有人凭经验证实这一点.
我知道我可以像这样计算图像的渐变:
np.gradient(img)
Run Code Online (Sandbox Code Playgroud)
但是如何使用TensorFlow或Numpy计算图像相对于另一个图像类的渐变?可能我需要做一些类似于本教程中的过程的东西?如:
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(y_conv, y_))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y_conv,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
sess.run(tf.initialize_all_variables())
for i in range(20000):
batch = mnist.train.next_batch(50)
if i%100 == 0:
train_accuracy = accuracy.eval(feed_dict={
x:batch[0], y_: batch[1], keep_prob: 1.0})
print("step %d, training accuracy %g"%(i, train_accuracy))
train_step.run(feed_dict={x: batch[0], y_: batch[1], keep_prob: 0.5})
print("test accuracy %g"%accuracy.eval(feed_dict={
x: mnist.test.images, y_: mnist.test.labels, keep_prob: 1.0}))
Run Code Online (Sandbox Code Playgroud)
但我不确定具体如何...具体来说,我有一个数字2的图像如下:
array([[ 0. , 0. , 0. , 0. …
Run Code Online (Sandbox Code Playgroud) 我使用 ggplot 和以下代码绘制了一个图:
ggplot(tb_us, aes(year_new, count)) +
geom_point() +
stat_smooth(method = 'lm')
Run Code Online (Sandbox Code Playgroud)
这一切都很好。但我也有兴趣找出这条线性拟合线的斜率。我怎样才能做到这一点?谢谢
我正在尝试根据 Udacity此处提供的给定文件在 Anaconda 中创建一个新环境。但是,我不断收到此错误:
SpecNotFound:无法处理没有名称
我认为这是因为在给定的文件中,没有环境名称。我注意到了这一点,因为在我当前环境的导出 yaml 文件中,我有以下格式与上述给定的 requirements.txt 文件不同。
所以问题是,如何使用给定的文件创建新环境?谢谢!
name: base
channels:
- anaconda
- conda-forge
- anaconda-fusion
- defaults
dependencies:
- graphviz=2.38.0=4
- vs2017_runtime=15.5.2=1
- backports.functools_lru_cache=1.4=py36_1
- blinker=1.4=py_0
- ca-certificates=2017.11.5=0
- certifi=2017.11.5=py36_0
- oauthlib=2.0.6=py_0
- openssl=1.0.2n=vc14_0
- pyjwt=1.5.3=py_0
- python-json-logger=0.1.7=py36_0
- requests-oauthlib=0.8.0=py36_1
- tweepy=3.5.0=py36_0
- vc=14=0
- yaml=0.1.7=vc14_0
- _license=1.1=py36_1
- alabaster=0.7.10=py36hcd07829_0
- anaconda-client=1.6.6=py36ha174c20_0
- anaconda=custom=py36h363777c_0
- anaconda-navigator=1.6.10=py36h51c3d4f_0
- anaconda-project=0.8.2=py36hfad2e28_0
- asn1crypto=0.24.0=py36_0
- astroid=1.5.3=py36h9d85297_0
- astropy=2.0.3=py36hfa6e2cd_0
- attrs=17.3.0=py36hc87868e_0
- babel=2.5.0=py36h35444c1_0
- backports=1.0=py36h81696a8_1
- …
Run Code Online (Sandbox Code Playgroud) 使用 Keras Tuner 时,似乎没有办法允许跳过有问题的超参数组合。例如,Conv1D 层中的过滤器数量可能与后续 MaxPooling1D 层中的池大小的所有值不兼容,从而导致模型构建错误。然而,在运行调谐器之前可能不知道这一点。一旦调谐器运行,这将导致一个错误,从而终止整个调谐过程。有没有办法跳过任何导致错误的超参数组合?
示例代码:
def model_builder(hp):
model = Sequential()
model.add(
Embedding(
input_dim=hp.Int(
'vocab_size',
min_value=4000,
max_value=10000,
step=1000,
default=4000
),
output_dim=hp.Choice(
'embedding_dim',
values=[32, 64, 128, 256],
default=32
),
input_length=hp.Int(
'max_length',
min_value=50,
max_value=200,
step=10,
default=50
)
)
)
model.add(
Conv1D(
filters=hp.Choice(
'num_filters_1',
values=[32, 64],
default=32
),
kernel_size=hp.Choice(
'kernel_size_1',
values=[3, 5, 7, 9],
default=7
),
activation='relu'
)
)
model.add(
MaxPooling1D(
pool_size=hp.Choice(
'pool_size',
values=[3, 5],
default=5
)
)
)
model.add(
Conv1D(
filters=hp.Choice(
'num_filters_2',
values=[32, 64],
default=32
),
kernel_size=hp.Choice(
'kernel_size_2',
values=[3, 5, …
Run Code Online (Sandbox Code Playgroud) 我正在对 Pandas 数据框进行一些操作。对于某一列,我需要将每个单元格转换为 numpy 数组,这并不难。最终目标是获得一个二维数组作为整个列的结果。但是,当我执行以下操作时,我得到一个一维数组,并且内部数组无法识别。
df = pd.DataFrame({'col': ['abc', 'def']})
mapping = {v: k for k, v in enumerate('abcdef')}
df['new'] = df['col'].apply(lambda x: list(x))
df['new'].apply(lambda x: np.array([mapping[i] for i in x])).values
Run Code Online (Sandbox Code Playgroud)
这给出:
array([array([0, 1, 2]), array([3, 4, 5])], dtype=object)
Run Code Online (Sandbox Code Playgroud)
形状为(2,),表示内部数组不被识别。
如果我这样做s.reshape(2,-1)
,我就会得到(2,1)
而不是(2,3)
形状。
感谢任何帮助!
澄清:
以上只是一个玩具示例。我正在做的是使用 IMDB 数据集对机器学习进行预处理。我必须将评论列中的每个值转换为词嵌入(即 numpy 数组)。现在的挑战是将所有这些数组作为二维数组取出,以便我可以在我的机器学习模型中使用它们。
python ×6
numpy ×4
arrays ×2
keras ×2
tensorflow ×2
anaconda ×1
command-line ×1
conda ×1
ggplot2 ×1
image ×1
keras-tuner ×1
list ×1
matplotlib ×1
pandas ×1
pdf ×1
r ×1
scikit-learn ×1
tf.keras ×1
theano ×1