Вероятнее всего, проблема vsftpd, чем ftplib, поскольку вы упоминаете обновление до новейшей версии, исправила проблему.
Если вы не можете прикасаться к настройкам сервера, подкласс класса FTP_TLS
может помочь решить проблему ваша проблема, хотя, на мой взгляд, это довольно HACK , ссылаясь на этот вопрос SO & amp; ответы Проблема подключения к FTP TLS Python . Вы также можете взглянуть на эту ошибку python bug issue 19500 :
". Разумно для сервера настаивать на том, что подключение к данным использует кешированный сеанс TLS. может быть кешем предыдущего подключения к данным или очищенного соединения управления. Если это является причиной отказа в передаче данных, тогда ответ «522» должен указывать на это.
Примечание: это имеет большое влияние на дизайн клиента, но позволяет серверам минимизировать циклы, используемые во время переговоров TLS, отказываясь выполнять полное согласование с ранее прошедшим проверку клиентом ».
Похоже, что сервер vsftpd реализован именно так, «повторное использование сеанса SSL между соединением управления и данными».
http://scarybeastsecurity.blogspot.com/2009/02/vsftpd-210-released.html
Глядя на источник базовой библиотеки Python ftplib.py, нет никакого отношения к идее повторного использования сеанса SSL между соединением передачи данных и контрольным соединением (исправьте меня, если я ошибаюсь здесь. Я пробовал FTP_TLS.transfercmd (cmd [, rest]) ¶, не работал).
Эта проблема хорошо документирована на других FTP-клиентах, поддерживающих FTPS, I.E. WinSCP: https://winscp.net/tracker/668
См. Файл тестового журнала. Сервер vsftpd с требованием «require_ssl_reuse», установленным в true в vsftpd.conf, выполнит трюк и может быть воспроизведен.
blockquote>Надеюсь, что это поможет.
Итак, мне повезло, и я нашел ответ в посте, не имеющем отношения к делу. Ответ довольно общий:
Для тензора, определенного как член класса пользовательского уровня, необходимо вызвать его метод оценки с правильным сеансом. То есть
import keras.backend as K
# Train your model...
sess = K.get_session()
print(model.get_layer("name_of_your_layer").your_tensor.eval(session=sess))
Например, для печати ядра плотного слоя после обучения это
import numpy as np
from keras.layers import Input, Dense
from keras.models import Model
import keras.backend as K
x = np.random.rand(10,3)
layer_1 = Input(shape=(x.shape[1],))
layer_2 = Dense(units=x.shape[1])(layer_1)
model = Model(inputs=layer_1, outputs=layer_2)
model.compile(optimizer="Adam", loss="MSE")
model.fit(x, x, epochs=5)
sess = K.get_session()
print(model.get_layer("dense_1").kernel.eval(session=sess))