Saya memiliki daftar berikut (aktor per film):

partial_x_train_actors=array([list([b'victor mclaglen', b'jon hall', b'frances farmer', b'olympe bradna', b'gene lockhart', b'douglass dumbrille', b'francis ford', b'ben welden', b'abner biberman', b'pedro de cordoba', b'rudy robles', b'bobby stone', b'nellie duran', b'james flavin', b'nina campana']),
       list([b'jessica biel', b'ben barnes', b'kristin scott thomas', b'colin firth', b'kimberley nixon', b'katherine parkinson', b'kris marshall', b'christian brassington', b'charlotte riley', b'jim mcmanus', b'pip torrens', b'jeremy hooton', b'joanna bacon', b'maggie hickey', b'georgie glen']),
       list([b'gr\xc3\xa9gori derang\xc3\xa8re', b'anouk grinberg', b'aur\xc3\xa9lien recoing', b'niels arestrup', b'yann collette', b'laure duthilleul', b'david assaraf', b'pascal demolon', b'jean-baptiste iera', b'richard sammel', b'vincent crouzet', b'fred epaud', b'pascal elso', b'nicolas giraud', b'micha\xc3\xabl abiteboul']),
       ...,
       list([b'jason schwartzman', b'mickey rourke', b'brittany murphy', b'john leguizamo', b'patrick fugit', b'mena suvari', b'chloe hunter', b'elisa bocanegra', b'julia mendoza', b'china chow', b'nicholas gonzalez', b'debbie harry', b'josh peck', b'charlotte ayanna', b'eric roberts']),
       list([b'fred kirschenmann', b'daniel salatin', b'joel salatin', b'paul willis', b'chuck wirtz']),
       list([b'jan sebastian', b'tray loren', b'paul muzzcat', b'brad koepenick', b'jerry armstrong', b'ben sebastian', b'reyn hubbard', b'levita gros', b'betty flemming', b'randolph parro', b'susan serigny', b'keith gros', b'rocky dugas', b'sid larrwiere', b'jocelyn boudreaux'])],
      dtype=object)

Karena saya ingin menggunakannya sebagai input ke model Keras, saya harus mengonversi array daftar menjadi array array. Untuk melakukan ini, saya menjalankan kode berikut, diambil dari pertanyaan SO ini

partial_x_train_actors_array=[]

for i in range(len(partial_x_train_actors)):
    
    partial_x_train_actors_array.append(np.array(list(x for x in partial_x_train_actors[i])))

partial_x_train_actors_array = np.asarray(partial_x_train_actors_array)=
type(partial_x_train_actors_array[0])

Jadi sekarang saya mendapatkan ini:

array([array([b'victor mclaglen', b'jon hall', b'frances farmer',
       b'olympe bradna', b'gene lockhart', b'douglass dumbrille',
       b'francis ford', b'ben welden', b'abner biberman',
       b'pedro de cordoba', b'rudy robles', b'bobby stone',
       b'nellie duran', b'james flavin', b'nina campana'], dtype='|S18'),
       array([b'jessica biel', b'ben barnes', b'kristin scott thomas',
       b'colin firth', b'kimberley nixon', b'katherine parkinson',
       b'kris marshall', b'christian brassington', b'charlotte riley',
       b'jim mcmanus', b'pip torrens', b'jeremy hooton', b'joanna bacon',
       b'maggie hickey', b'georgie glen'], dtype='|S21'),
       array([b'gr\xc3\xa9gori derang\xc3\xa8re', b'anouk grinberg',
       b'aur\xc3\xa9lien recoing', b'niels arestrup', b'yann collette',
       b'laure duthilleul', b'david assaraf', b'pascal demolon',
       b'jean-baptiste iera', b'richard sammel', b'vincent crouzet',
       b'fred epaud', b'pascal elso', b'nicolas giraud',
       b'micha\xc3\xabl abiteboul'], dtype='|S19'),
       ...,
       array([b'jason schwartzman', b'mickey rourke', b'brittany murphy',
       b'john leguizamo', b'patrick fugit', b'mena suvari',
       b'chloe hunter', b'elisa bocanegra', b'julia mendoza',
       b'china chow', b'nicholas gonzalez', b'debbie harry', b'josh peck',
       b'charlotte ayanna', b'eric roberts'], dtype='|S17'),
       array([b'fred kirschenmann', b'daniel salatin', b'joel salatin',
       b'paul willis', b'chuck wirtz'], dtype='|S17'),
       array([b'jan sebastian', b'tray loren', b'paul muzzcat',
       b'brad koepenick', b'jerry armstrong', b'ben sebastian',
       b'reyn hubbard', b'levita gros', b'betty flemming',
       b'randolph parro', b'susan serigny', b'keith gros', b'rocky dugas',
       b'sid larrwiere', b'jocelyn boudreaux'], dtype='|S17')],
      dtype=object)

Tetapi ini juga tidak cukup untuk menjauh dari jenis input Tensor, karena saya mendapatkan kesalahan ini:

ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray).

Proses kecocokan model saya

# import the pre-trained model
model = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
hub_layer = hub.KerasLayer(model, output_shape=[20], input_shape=[], dtype=tf.string, trainable=True)

# create the neural network structure
model = tf.keras.Sequential(name="English_Google_News_130GB_witout_OOV_tokens")
model.add(hub_layer)
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(i, kernel_regularizer=regularizers.l2(neural_network_parameters['l2_regularization']),
                                        activation=neural_network_parameters['dense_activation']))
model.add(tf.keras.layers.Dropout(neural_network_parameters['dropout_rate']))
model.add(tf.keras.layers.Dense(y_val.shape[1], 

activation=neural_network_parameters['output_activation']))
        
#model.name("English Google News 130GB witout OOV tokens")
print(model.summary())
        
#instantiate Optimizer
optimizer = optimizer_adam_v2(len(partial_x_train_actors_array), validation_split_ratio, i)

model.compile(optimizer=optimizer,
              loss=neural_network_parameters['model_loss'],
              metrics=[neural_network_parameters['model_metric']])

plot_model(model, to_file=os.path.join(os.getcwd(), 'model_three\\network_structure_english_google_news_without_OOV_model_{0}.png'.format(version_data_control)))

history = model.fit([partial_x_train_features, partial_x_train_plot, partial_x_train_actors_array, partial_x_train_reviews],
                        partial_y_train,
                        steps_per_epoch=int(np.ceil((len(partial_x_train_actors_array)*0.8)//16)),
                        epochs=100,
                        batch_size=16,
                        validation_split=0.2
                        verbose=0,
                        callbacks=callback("english_google_news_without_oovtokens", model))

[EDIT] - 04.07.2020

Saya ingin menambahkan bahwa saya telah melakukan padding pada urutan untuk percobaan lain dan daftar aktor yang disajikan di atas diubah menjadi daftar di bawah ini

partial_x_train_actors=array([[ 2024,  3228,   451, ..., 18119,     0,     0],
       [ 3230,  7889, 12357, ...,     0,     0,     0],
       [20001, 20001, 20001, ...,     0,     0,     0],
       ...,
       [ 6887, 20001, 15352, ..., 20001, 20001, 20001],
       [10206, 20001,  3426, ..., 20001,     0,     0],
       [ 2969,  5903,   447, ...,     0,     0,     0]])

Namun, ketika saya menerapkan daftar ini di .fit() dari jaringan saraf saya mendapatkan kesalahan berikut:

ValueError: Error when checking input: expected keras_layer_4_input to have 1 dimensions, but got array with shape (39192, 17)

(39192, 17) adalah bentuk dari barisan aktor

[EDIT 2] - 05.07.2020

Uji Coba 1 (gagal)

Berdasarkan beberapa proposal pada jawaban yang diberikan, saya mencoba mengubah bentuk input hub.Keraslayer:

hub_layer = hub.KerasLayer(model, output_shape=[20], input_shape=[len(y_train)], dtype=tf.string, trainable=True)

Saya membuatnya sama dengan data training_input length #39192 saya per aktor, plot, fitur, ulasan.

Kesalahan yang dihasilkan: masukkan deskripsi gambar di sini#list of actors (training data) tensors actors_training_tensors=np.array([tf.convert_to_tensor(partial_x_train_actors[i]) for i in range(len(partial_x_train_actors))]) actors_testing_tensors=np.array([tf.convert_to_tensor(x_val_actors[i]) for i in range(len(x_val_actors))])

Kesalahan lagi:

ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type tensorflow.python.framework.ops.EagerTensor).

Saya mengubah daftar input aktor menjadi tensor. Perhatikan bahwa hanya daftar aktor yang bermasalah karena disimpan sebagai nama dalam daftar [[nama1, nama2, nama3]]. Saya tidak punya masalah dengan plot, fitur, atau input ulasan karena disimpan sebagai daftar corpus.

Uji Coba 3 (gagal)

Berdasarkan komentar saya menggunakan data API juga:

data_tf=tf.data.Dataset.from_tensor_slices([partial_x_train_features, partial_x_train_plot, partial_x_train_actors_array, partial_x_train_reviews])

Sekali lagi saya mendapat kesalahan:

ValueError: Can't convert Python sequence with mixed types to Tensor.

Jadi saya mencarinya, dan saya menemukan pertanyaan ini dan dokumentasi, Saya melakukan perubahan berikut, (menambahkan tf.constant):

data_tf=tf.data.Dataset.from_tensor_slices([tf.constant(partial_x_train_features), tf.constant(partial_x_train_plot), tf.constant(partial_x_train_actors_array), tf.constant(partial_x_train_reviews)])

Selain itu, sepertinya saya tidak dapat mengonversi array string NumPy menjadi Tensor float. Mungkin di sinilah padding urutan memainkan peran penting. Namun, jika Anda mengikuti tautan ini dari artikel tensorflow tempat saya mendapatkan ide, Anda akan melihat bahwa pengguna hanya memberikan string byte sebagai input dan bukan urutan yang diisi.

Harap dicatat bahwa solusi untuk semua ini, adalah meratakan daftar aktor dengan menggunakan perintah " ".join(). Namun, para aktor hanya akan menjadi teks nama dan bukan nama yang terpisah. Meskipun berhasil, saya pikir untuk hasil yang lebih baik, para aktor harus diberi nama terpisah karena Neural Network tidak dapat membedakan nama sendiri.

[MASUKKAN DATA UNTUK DEBUGGING - REPLIKASI MASALAH]

Jika seseorang ingin mereplikasi dan men-debug masalah, di bawah ini saya mewakili 4 lapisan input saya (contoh data) dan artikel dari Tensorflow yang saya ikuti.

Berikut adalah tautan GitHub Masalah dengan pertanyaan yang diposting. Sepertinya ketika saya menjalankan kode secara lokal semuanya terlihat baik-baik saja selain dari kesalahan EarlyStopping yang disajikan dalam masalah GitHub terlampir. Saya akan mengecek kembali data yang saya gunakan, karena data yang diberikan pada link GitHub adalah data yang layak untuk digunakan.

2
NikSp 4 Juli 2020, 16:14

1 menjawab

Jawaban Terbaik

Anda menerima kesalahan ini saat mencoba mengonversi numpy.ndarry ke Tensor. Singkatnya, array Anda memiliki panjang yang berbeda dan itu tidak diterima saat mengonversinya ke Tensor.

Yang harus Anda lakukan adalah membuat x Anda memiliki panjang yang sama dan y dengan panjang yang sama.

Ada beberapa cara untuk mencapai ini. Berdasarkan kode yang Anda berikan, Anda dapat menggunakan sesuatu seperti di bawah ini: Kode di bawah ini adalah kode semu dan hanya untuk menunjukkan bahwa Anda memerlukan array dengan panjang yang sama.

for i in range(len(partial_x_train_actors)):
    
    partial_x_train_actors_array.append(np.array(list(x for x in partial_x_train_actors[i:5]))) # for example getting only 5 elements from the list, you can change as per your need

Cara lainnya adalah dengan menggunakan tf.data API menggunakan Generator< /a> untuk mengonversi kumpulan data Anda menjadi tf.data.Dataset lalu gunakan tf.data.Dataset.padded_batch untuk mengisi kumpulan agar kumpulan data Anda memiliki panjang yang sama. Berikut adalah tautan API.

[Setelah Pertanyaan Edit] Masalah kedua Anda dengan array, bentuk disebabkan oleh fakta bahwa Anda telah mengkodekan bentuk input ke [].

hub_layer = hub.KerasLayer(model, output_shape=[20], input_shape=[], dtype=tf.string, trainable=True)

Karena alasan ini Anda menerima kesalahan bahwa lapisan input Anda mengharapkan 1 dimensi tetapi diterima (39192,17). Seperti di model.fit() Anda, Anda menggunakan x sebagai

[partial_x_train_features, partial_x_train_plot, partial_x_train_actors_array, partial_x_train_reviews]

Saya akan menyarankan Anda mengubah input_shape sesuai dengan dataset Anda dan bukan [].

Jika Anda masih menghadapi masalah apa pun, saya akan meminta untuk memposting tautan Github sehingga saya dapat melakukan debug untuk melihat masalah yang sebenarnya.

[07/05/2020] - Perbarui

Saya telah men-debug kode Anda, membuat beberapa perubahan pada data input Anda, dan membuatnya berfungsi. Saya telah menggunakan tf.data.Dataset.from_generator API untuk menggabungkan data Anda. Saya telah membuat perubahan pada fungsi kerugian Anda dan pengoptimal sehingga saya dapat men-debug. Anda dapat melakukan perubahan sesuai dengan kebutuhan Anda. Juga, pastikan bahwa input partial_x_train_reviews, partial_x_train_plot dan partial_x_train_features akan terlihat seperti ini. Tetapi jika Anda ingin tetap menggunakan cara lama, ubah metode def generator(): yang sesuai. Beri tahu saya bagaimana kelanjutannya. Saya akan merekomendasikan bahwa jika masalah Anda diselesaikan untuk melakukan hit upvote juga lain kali berikan kode yang dapat dengan mudah di-debug seseorang dan tidak membuat banyak perubahan untuk membuatnya berfungsi. Saya harap jawabannya melayani Anda dengan baik.

import tensorflow as tf
import tensorflow_hub as hub

# Train variables
partial_x_train_features = [
    [b'south pago pago victor mclaglen jon hall frances farmer olympe bradna gene lockhart douglass dumbrille francis ford ben welden abner biberman pedro cordoba rudy robles bobby stone nellie duran james flavin nina campana alfred e green treasure hunt adventure adventure'],
    [b'easy virtue jessica biel ben barnes kristin scott thomas colin firth kimberley nixon katherine parkinson kris marshall christian brassington charlotte riley jim mcmanus pip torrens jeremy hooton joanna bacon maggie hickey georgie glen stephan elliott young englishman marry glamorous american brings home meet parent arrive like blast future blow entrenched british stuffiness window comedy romance'],
    [b'fragments antonin gregori derangere anouk grinberg aurelien recoing niels arestrup yann collette laure duthilleul david assaraf pascal demolon jean baptiste iera richard sammel vincent crouzet fred epaud pascal elso nicolas giraud michael abiteboul gabriel le bomin psychiatrist probe mind traumatized soldier attempt unlock secret drove gentle deeply disturbed world war veteran edge insanity drama war'],
    [b'milka film taboos milka elokuva tabuista irma huntus leena suomu matti turunen eikka lehtonen esa niemela sirkka metsasaari tauno lehtihalmes ulla tapaninen toivo tuomainen hellin auvinen salmi rauni mollberg small finnish lapland community milka innocent year old girl live mother miss dead father prays god love haymaking employ drama'],
    [b'sleeping car david naughton judie aronson kevin mccarthy jeff conaway dani minnick ernestine mercer john carl buechler gary brockette steve lundquist billy stevenson michael scott bicknell david coburn nicole hansen tiffany million robert ruth douglas curtis jason david naughton move abandon train car resurrect vicious ghost landlady dead husband mister near fatal encounter comedy horror']]

partial_x_train_plot = [[b'treasure hunt adventure'],
                        [b'young englishman marry glamorous american brings home meet parent arrive like blast future blow entrenched british stuffiness window'],
                        [b'psychiatrist probe mind traumatized soldier attempt unlock secret drove gentle deeply disturbed world war veteran edge insanity'],
                        [b'small finnish lapland community milka innocent year old girl live mother miss dead father prays god love haymaking employ'],
                        [b'jason david naughton move abandon train car resurrect vicious ghost landlady dead husband mister near fatal encounter']]

partial_x_train_actors_array = [[b'victor mclaglen', b'jon hall', b'frances farmer',
                                 b'olympe bradna', b'gene lockhart', b'douglass dumbrille',
                                 b'francis ford', b'ben welden', b'abner biberman',
                                 b'pedro de cordoba', b'rudy robles', b'bobby stone',
                                 b'nellie duran', b'james flavin', b'nina campana'],
                                [b'jessica biel', b'ben barnes', b'kristin scott thomas',
                                 b'colin firth', b'kimberley nixon', b'katherine parkinson',
                                 b'kris marshall', b'christian brassington', b'charlotte riley',
                                 b'jim mcmanus', b'pip torrens', b'jeremy hooton', b'joanna bacon',
                                 b'maggie hickey', b'georgie glen'],
                                [b'gregori derangere', b'anouk grinberg', b'aurelien recoing',
                                 b'niels arestrup', b'yann collette', b'laure duthilleul',
                                 b'david assaraf', b'pascal demolon', b'jean-baptiste iera',
                                 b'richard sammel', b'vincent crouzet', b'fred epaud',
                                 b'pascal elso', b'nicolas giraud', b'michael abiteboul'],
                                [b'irma huntus', b'leena suomu', b'matti turunen',
                                 b'eikka lehtonen', b'esa niemela', b'sirkka metsasaari',
                                 b'tauno lehtihalmes', b'ulla tapaninen', b'toivo tuomainen',
                                 b'hellin auvinen-salmi'],
                                [b'david naughton', b'judie aronson', b'kevin mccarthy',
                                 b'jeff conaway', b'dani minnick', b'ernestine mercer',
                                 b'john carl buechler', b'gary brockette', b'steve lundquist',
                                 b'billy stevenson', b'michael scott-bicknell', b'david coburn',
                                 b'nicole hansen', b'tiffany million', b'robert ruth']]

partial_x_train_reviews = [
    [b'edward small take director alfred e green cast crew uncommonly attractive brilliant assemblage south sea majority curiously undersung piece location far stylize date goldwyn hurricane admittedly riddle cliche formula package visual technical excellence scarcely matter scene stop heart chiseled adonis jon hall porcelain idol frances farmer outline profile s steam background volcano romantic closeup level defies comparison edward small film typically string frame individual work art say outdid do workhorse composer edward ward song score year prior work universal stun phantom opera'],
    [b'jessica biel probably best know virtuous good girl preacher kid mary camden heaven get tackle classic noel coward role early play easy virtue american interloper english aristocratic family unsettle family matriarch kristin scott thomas noel coward write upper class twit pretension wit keep come kind adopt way adopt oscar wilde george bernard shaw kid grow poverty way talent entertain upper class take coward heart felt modern progressive generally term social trend whittakers easy virtue kind aristocrat anybody like hang party invite noel entertain amelia earhart aviation jessica biel character auto race young widow detroit area course area motor car auto race fresh win monte carlo win young ben barnes heir whittaker estates lot land debt barnes bring biel home family mortify classless american way sense recognize class distinction thing get rid title nobility aristocrats story scott thomas dominate family try desperately estate husband colin firth serve world war horror do probably horror trench war slaughter fact class distinction tend melt combat biel kind like wife rule whittaker roost scandal past threatens disrupt barnes biel marriage form crux story turn fact end really viewer figure eventually happen second film adaption easy virtue silent film direct young alfred hitchcock easy virtue actually premier america london star great american stage actress jane cowl guess coward figure american heroine best american theatergoer british one version easy virtue direct flawlessly stephen elliot fine use period music noel coward cole porter end credit really mock upper class coward tradition play going gets tough tough going believe elliott try say class especially one right stuff course obligatory fox hunt upper class indulge oscar wilde say unspeakable uneatable chance younger generation expose noel coward worth see'],
    [b'saw night eurocine event movie european country show day european city hear le bomin barely hear derangere la chambre des officiers fortunately surprise discover great talent unknown large audience derangere absolutely astonish play character antonin verset victim post wwi trauma live trouble scene endure month war cast excellent great work cinematography offer really nice shot great landscape stun face edit really subtile bit memory make sense story minute movie show real chill ww archive action flick like sensitive psychologic movie really think absolutely recommend les fragments d antonin let le bomin'],
    [b'rauni mollberg earth sinful song favorite foreign film establish director major talent film festival circuit get amazing followup milka base work novelist timo mukka till worthy major dvd exposure unlike kaurismaki bros follow double handedly create tongue cheek deadpan finnish film style fan world mollberg commit naturalistic approach film overflow nature life lust earthiness find scandi cinema mainly work famous talent swede vilgot sjoman curious yellow fame director film tabu title imply mollberg effort quite effective sidestep fully treat screen theme incest making adult character father figure real blood relate daddy applies usual merely step father gimmick use countless time american movie incest work matti turunen kristus perkele translate christ devil really common law step dad underage milka beautiful offbeat fashion young girl portray shot irma huntus bring screen sexiness bergman harriet andersson decade earlier create international success summer monika sawdust tinsel imagine actress milka role shame do pursue act career afterward completing strong line leena suomu earth mother type confines act narrow emotional range prove solid rock crucial role bookended spectacularly beautiful shot birch wood winter virtually black white visually color presence milka film quickly develop nature theme presence strange click beak bird talisman early scene milka handyman turunen frolicking naked lake emerge oh natural sex play year old milka man result tastefully shoot intimacy imply ejaculation set trouble come religious aspect remote farm community heavily stress especially enjoy motif spiritual guidance cantor malmstrom quality anti stereotypical play eikka lehtonen instead rigid cruel turn care milka illegitimate baby bear strong romance turunen stud continue service mom woman neighborhood present utterly natural viewer position watch ethnographic exercise moralistic tale powerful technique milka frequently speak directly camera viewer forceful monologue bear crisp sound record sound nature include rain constant motif make milka engross experience view film subtitle knowledge finnish lapp recall best silent era classic direction strong convey dramatic content theme way transcend language kudos mollberg talented cinematographer job work remain obscurity ripe rediscovery'],
    [b'wonder horror film write woody allen wannabe come like check imaginatively direct typical enjoyable haunt place premise solid makeup effect good job major flaw dialogue overload cheeky wisecrack witticisms sample want scary shopping ex wife hit mark deliver inappropriate moment hero battle evil ghost']]

partial_y_train = [[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                   [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0],
                   [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0],
                   [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                   [0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]]  # multilabel classification



# Using generator for creating the dataset.
def generator():
    for i in range(0, len(partial_y_train)):
        # creates x's and y's for the dataset.
        yield b''.join((partial_x_train_features[i] + partial_x_train_plot[i] + partial_x_train_actors_array[i] +
             partial_x_train_reviews[i])), partial_y_train[i]



dataset = tf.data.Dataset.from_generator(generator, (tf.string, tf.int64),
                                         (tf.TensorShape(None), tf.TensorShape([17])))

dataset = dataset.batch(1)

for i, j in dataset.take(5):
    print(i)
    print(j)

# import the pre-trained model
model = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
hub_layer = hub.KerasLayer(model, output_shape=[20], input_shape=[], dtype=tf.string, trainable=True)

# create the neural network structure
model = tf.keras.Sequential(name="English_Google_News_130GB_witout_OOV_tokens")
model.add(hub_layer)
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(20, activation='relu'))
model.add(tf.keras.layers.Dense(17, activation='softmax'))

# model.name("English Google News 130GB witout OOV tokens")
print(model.summary())

model.compile(optimizer='adam',
              loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

history = model.fit(
    dataset,
    epochs=10,
    batch_size=1)
3
Prateek Bhatt 5 Juli 2020, 18:52