在本地计算机上运行python代码与在远程amazon EC2实例上运行python代码

在本地计算机上运行python代码与在远程amazon EC2实例上运行python代码,python,amazon-ec2,keras,remote-access,putty,Python,Amazon Ec2,Keras,Remote Access,Putty,我对python编程有点陌生,请原谅我的无知。 请帮助我,因为我已经在这几个小时了,想不出答案。 所有的培训和测试数据都可以在这里看到 我有下面的代码,如果我运行它,它运行得很好 # Importing the Keras libraries and packages from keras.models import Sequential from keras.layers import Conv2D from keras.layers import MaxPooling2D from kera

我对python编程有点陌生,请原谅我的无知。 请帮助我,因为我已经在这几个小时了,想不出答案。 所有的培训和测试数据都可以在这里看到

我有下面的代码,如果我运行它,它运行得很好

# Importing the Keras libraries and packages
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
# Initialising the CNN
classifier = Sequential()
# Step 1 - Convolution
classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
# Step 2 - Pooling
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Adding a second convolutional layer
classifier.add(Conv2D(32, (3, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
# Step 3 - Flattening
classifier.add(Flatten())
# Step 4 - Full connection
classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))
# Compiling the CNN
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
# Part 2 - Fitting the CNN to the images
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory('dataset/training_set',
target_size = (64, 64),
batch_size = 32,
class_mode = 'binary')
test_set = test_datagen.flow_from_directory('dataset/test_set',
target_size = (64, 64),
batch_size = 32,
class_mode = 'binary')
classifier.fit_generator(training_set,
steps_per_epoch = 8000,
epochs = 25,
validation_data = test_set,
validation_steps = 2000)
# Part 3 - Making new predictions
import numpy as np
from keras.preprocessing import image
test_image = image.load_img('dataset/single_prediction/cat_or_dog_1.jpg', target_size = (64, 64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
result = classifier.predict(test_image)
training_set.class_indices
if result[0][0] == 1:
    prediction = 'dog'
else:
    prediction = 'cat'
然而,我尝试在我的EC2实例上运行它,使用putty远程访问UBUNTU。当我运行它时,会出现如下错误

I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so.7.5 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so.7.5 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so.7.5 locally
Traceback (most recent call last):
  File "testing.py", line 10, in <module>
    classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))
TypeError: __init__() takes at least 4 arguments (4 given)
但现在我得到一个单独的错误,它说:

Using TensorFlow backend.
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so.7.5 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so.7.5 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so.7.5 locally
Found 2516 images belonging to 1 classes.
Found 2023 images belonging to 2 classes.
Traceback (most recent call last):
  File "testing.py", line 47, in <module>
    callbacks=None,verbose=1)
TypeError: fit_generator() takes at least 4 arguments (5 given)
或 python-mpip安装——升级keras

它给出了以下内容

Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 778, in install
    requirement.uninstall(auto_confirm=True)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 754, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/usr/local/lib/python2.7/dist-packages/pip/utils/__init__.py", line 267, in renames
    shutil.move(old, new)
  File "/usr/lib/python2.7/shutil.py", line 303, in move
    os.unlink(src)
OSError: [Errno 13] Permission denied: '/usr/local/bin/f2py'

你使用的是完全不同的版本

一般来说,大多数库都会因不兼容的API更改而更改主要版本,因此您应该认为Keras 2.1与为Keras 1.2编写的代码不兼容,反之亦然。可能有文档解释了如何将Keras 1代码移植到Keras 2,您可以按照相反的方式将Keras 2代码移植到Keras 1,但对于任何其他此类库和Python本身,您都必须做同样的事情。然后你必须同时维护两个不同的版本,这一点都不好玩

仅仅做
pip安装——升级keras
并不能解决这个问题。它将尝试安装适用于Python2的Keras的最新版本,这可能与适用于Python3的最新版本不同。(许多库正在放弃对Python2的支持,只为旧版本提供小的bug修复。)

因此,首先需要在Amazon实例上安装Python 3

事实上,您可能已经将其命名为
python3
,而不是
python
。在这种情况下,您应该已经能够使用
pip3

如果没有,您需要使用软件包管理器安装Python 3,然后您应该能够使用
pip3


同时,如果您试图在大多数linux设置中将软件包安装到系统Python站点软件包中,则需要使用
sudo
。您可能更喜欢使用用户站点包目录,但使用
virtualenv
并直接安装到该环境中就更好了。解释如何使用
virtualenv
太难了,不能放在一个更大的SO答案的段落中,但要包含一个非常好的教程。

您使用的是相同版本的Python和所有相关库吗?这似乎是从某个库的1.3版移动到2.0版时所遇到的错误,该库以向后不兼容的方式更改了其API。当这种情况发生时,通常会有文档解释如何使代码适应新的API(如果从2.0到1.3,则可能需要反向操作)。当然,你也可以在两台电脑上使用相同的版本。我怀疑这是问题所在,但我不能完全确定。有没有办法更新远程服务器上的内容?第一步是找出每端安装的版本。从终端运行
pip list
,然后将结果筛选为(a)不同的和(b)看起来可能相关的结果,并将结果添加到您的问题中。谢谢,但仍有问题请参见编辑当然,您仍有问题。仅仅诊断问题的来源并不能神奇地解决问题。
 pip install --upgrade keras
Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 778, in install
    requirement.uninstall(auto_confirm=True)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 754, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/usr/local/lib/python2.7/dist-packages/pip/utils/__init__.py", line 267, in renames
    shutil.move(old, new)
  File "/usr/lib/python2.7/shutil.py", line 303, in move
    os.unlink(src)
OSError: [Errno 13] Permission denied: '/usr/local/bin/f2py'