Я хотел бы создать массив со значениями в диапазоне от 0,0 до 1,0, как показано здесь: весовая матрица
В основном, левый и верхний края должны оставаться близкими к 1,0, но медленно затухание до 0,5 в углах. Нижний и правый края должны оставаться близкими к 0,0. Средняя область должна быть в основном 0,5, а значения должны уменьшаться по диагонали от 1,0 до 0,0.
Это то, что я пробовал, но это не дает мне именно то, что я хотел бы.
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
y = np.zeros(len(x))
for i in range(len(x)):
y[i] = 1 / (1 + math.exp(-x[i]))
return y
sigmoid_ = sigmoid(np.linspace(20, 2.5, 30))
temp1 = np.repeat(sigmoid_.reshape((1,len(sigmoid_))), repeats=10, axis=0)
sigmoid_ = sigmoid(np.linspace(6, 3, 10))
temp2 = np.repeat(sigmoid_.reshape((len(sigmoid_),1)), repeats=30, axis=1)
alpha1 = temp1 + temp2
sigmoid_ = sigmoid(np.linspace(-2.5, -20, 30))
temp1 = np.repeat(sigmoid_.reshape((1,len(sigmoid_))), repeats=10, axis=0)
sigmoid_ = sigmoid(np.linspace(-3, -6, 10))
temp2 = np.repeat(sigmoid_.reshape((len(sigmoid_),1)), repeats=30, axis=1)
alpha2 = temp1 + temp2
alpha = alpha1 + alpha2
alpha = alpha - np.min(alpha)
alpha = alpha / np.max(alpha)
plt.matshow(alpha)
Что дает мне это: результаты
Может ли кто-нибудь мне помочь?