Beispiel #1
0
del reduced_data
clustering_model.fit(x=reduced_data_array, y=y_clusters, epochs=300)
clustering_model.predict(reduced_data_array)

from keras.engine.sequential import Sequential
jdesc_model = Sequential()
first_layer = Dense(units=32, input_shape=(num_genes, ), activation="relu")
jdesc_model.add(first_layer)
second_layer = Dense(units=16, activation="tanh")
jdesc_model.add(second_layer)
third_layer = Dense(units=num_clusters, activation="sigmoid")
jdesc_model.add(third_layer)
jdesc_model.compile(optimizer="sgd", loss="categorical_hinge")
jdesc_model_weights = desc_model.get_weights() + clustering_model.get_weights()
jdesc_model.set_weights(jdesc_model_weights)
jdesc_model_predictions = jdesc_model.predict(adata.X)
predicted_clusters_array = jdesc_model_predictions.argmax(axis=1)
clusters_array = clusters_ndarray.T[0]

error_array = np.zeros(shape=(num_clusters, num_clusters))
correct_array = np.zeros(shape=(num_clusters, ), dtype=int)
for i in range(num_cells):
    if clusters_array[i] != predicted_clusters_array[i]:
        error_array[clusters_array[i], predicted_clusters_array[i]] += 1
    else:
        correct_array[clusters_array[i]] += 1

correct_percentage = correct_array / np.bincount(clusters_array)

#%%
import random
    validation_split=0.2,
    verbose=1
)  #validation split - часть наборя для обучения используется для проверки
#x_train - вход, y_train - выход, batch_size - размер минивыборки для метода градиентного спуска(то есть мы берем 200 изображений, рассчитываем функцию ошибки, потом расчитываем градиент и изменяем веса), epochs - сколько раз мы обучаем нейросеть на одном и том же наборе данных, verbose - позволяет печатать прогресс обучения нейросети
#запускаем процесс оценки качества на тестовой выборке
scores = model.evaluate(x_test, y_test, verbose=1)
print("Доля верных ответов на тестовых данных, в процентах: ",
      round(scores[1] * 100, 4))
#запускаем сеть на тестовых данных(10 случайных)
for i in range(1, 11):
    n_rec = rnd.randint(0, 10000)  #элемент массива x_test
    print("Выбран элемент массива x_test под номером: ", n_rec)
    plt.imshow(x_test[n_rec].reshape(28, 28), cmap=plt.cm.binary)
    #показываем наше изображение для теста
    label = np.argmax(
        y_test[n_rec], axis=0
    )  #здесь мы находим максимальный элемент массива y_test и выводим его индекс, соответствующий номеру класса
    plt.xlabel(classes[label])
    plt.show()
    testone = x_test[n_rec]
    testone = np.expand_dims(testone, axis=0)  #нормализуем изображение
    prediction = model.predict(testone)
    prediction = np.argmax(
        prediction[0]
    )  #здесь мы находим максимальный элемент массива prediction и выводим его индекс, соответствующий номеру класса
    print("Ответ нейросети: ", classes[prediction])
    label = np.argmax(y_test[n_rec], axis=0)
    print("Правильный ответ: ", classes[label])
#переобучение наступает, когда val_acc начинает падать, это значит, что нейросеть учится распознавать только элементы конкретной выборки, а не общие особенности
#все параметры выбраны оптимальными экспериментально
Beispiel #3
0
#! /usr/bin/python

from keras import backend as k
from keras.engine.sequential import Sequential
from keras.layers.embeddings import Embedding

import numpy as np

model = Sequential()
model.add(Embedding(100, 64, input_length=10))

input_array = np.random.randint(1000, size=(32,10))


model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)

assert output_array == (32, 10, 64)